Ondrej Zajicek (work)
87512e9751
Filter: Improve typecheck error messages
2019-11-05 15:30:16 +01:00
Ondrej Zajicek (work)
c00c20a799
Filter: Better constant promotion
...
We use constant promotion from IPv4 to Router-ID values, as they have
same literals. Instead of ad-hoc code in filter instructions, add
constant promotion code to parse-time typecheck code.
2019-11-05 15:28:47 +01:00
Ondrej Zajicek (work)
26194bd684
Filter: Improved parse-time typechecks
2019-11-05 15:28:47 +01:00
Ondrej Zajicek
6fbcd8914a
Filter: Parse-time typechecks
...
Most expressions can be type-validated in parse time. It is not
strong enough to eliminate runtime checks, but at least one gets
errors immediately during reconfigure.
2019-11-05 15:28:47 +01:00
Ondrej Zajicek (work)
0edf0c8cd9
Support for address family constants
...
We already had them defined on BGP level, but they are more general.
2019-11-03 22:25:44 +01:00
Ondrej Zajicek (work)
ea0917bcba
Filter: Fix eval command
2019-09-24 00:18:48 +02:00
Maria Matejka
3f477ccb03
Filters: Function body comparison result now used.
...
Function bodies were compared in post-parse time, yet the result was not
used and the functions were incorrectly considered the same as before.
Now the result is used to reload affected protocols.
2019-09-23 14:03:26 +02:00
Ondrej Zajicek (work)
452e90ba72
Filter: Fix crash with 'where' filters and function calls
...
The old 'where' code computed size value incorrectly, which leads
to invalid instruction lines and filter errors or crashes.
2019-09-10 13:45:18 +02:00
Maria Matejka
dfe63ed84d
Filter: Fixing empty block and never-executed-statement bug
2019-08-13 16:45:27 +02:00
Ondrej Zajicek (work)
9f3e098320
Filter: Allow to use set constants / expressions in path masks
...
Allow to not only use set literals in path masks, but also existing
set constants or set expressions.
2019-08-06 18:54:19 +02:00
Ondrej Zajicek (work)
ef113c6f72
Filter: Allow to use sets in path masks
2019-08-06 16:58:13 +02:00
Maria Matejka
2de1e2062e
Conf: Fixed symbol redefinition
2019-07-30 14:28:40 +02:00
Maria Matejka
efd7c87b5b
Filter: further split of print & die to FI_PRINT, FI_FLUSH and FI_DIE
2019-07-15 15:46:36 +02:00
Maria Matejka
3782454e8d
Filter: Simpler filter context allocation
2019-07-15 15:46:36 +02:00
Maria Matejka
f634adc7dc
Filter: FID_MEMBER debug string is a C constant string
2019-07-15 15:17:04 +02:00
Maria Matejka
c0999a149c
Filter: Converted FI_PRINT and FI_PATHMASK_CONSTRUCT to VARARG
2019-07-15 15:12:18 +02:00
Maria Matejka
c29d73a06a
Filter: fixed excessive stack allocation in functions with args but no local vars
2019-07-15 15:06:52 +02:00
Maria Matejka
0da06b7103
Filter: lots of documentation
2019-07-15 13:19:01 +02:00
Maria Matejka
1b9db6d4a7
Filter: Don't write out when re-evaluating filter for internal purposes.
2019-07-15 12:03:47 +02:00
Maria Matejka
547be53b8c
Filter: Don't fail badly when trying to access non-existent route in config time
2019-07-15 12:03:13 +02:00
Ondrej Zajicek (work)
bfa15a642f
Filter: Minor cleanups
2019-07-10 16:47:17 +02:00
Maria Matejka
8816b6cdd9
Merge branch 'mq-filter-stack' of gitlab.labs.nic.cz:labs/bird into mq-filter-stack
2019-07-03 08:44:42 +02:00
Maria Matejka
84ac62d396
Filter: CLI command to dump all the linearized filters
2019-07-03 08:27:56 +02:00
Maria Matejka
0206c070ac
Filter: Split printing and dying
2019-07-03 08:27:56 +02:00
Maria Matejka
78976974e7
Dynamic attributes definition split whether it is bitmask or not.
2019-07-03 00:00:11 +02:00
Maria Matejka
263fa2c4a6
Filter: Dropped some more irrelevant whitespace from generated files
2019-07-02 22:57:00 +02:00
Maria Matejka
84c58aabd0
Filter: Nicer whitespaces in generated inst-gen.h
2019-07-02 17:59:21 +02:00
Maria Matejka
550a6488c9
Filter: documentation of the M4 preprocessor
2019-07-02 17:39:56 +02:00
Maria Matejka
c376555cec
Filter: GCC, don't complain about indentation in generated code.
2019-07-02 13:13:29 +02:00
Maria Matejka
b40c0f028f
Filter: Pre-evaluation of constant expressions
2019-07-02 10:45:53 +02:00
Maria Matejka
30667d5041
Filter: Resolving of defined constants in config time
2019-07-01 14:12:05 +02:00
Maria Matejka
26bfe59f45
Filter: Moved singleton member definitions to f-inst.c
2019-07-01 13:13:06 +02:00
Maria Matejka
4212c0e7e5
Filter: Moved f_inst allocation to separate function
2019-07-01 12:49:02 +02:00
Maria Matejka
f74d19765e
Filter: Getting rid of RESULT_OK. Adding RESULT_VOID.
...
This is a preparation for filter pre-evaluation.
2019-07-01 12:07:06 +02:00
Maria Matejka
236828d06f
Filter: The interpreter code now shares its diversion with constructor
...
This is a preparation for filter pre-evaluation.
2019-07-01 11:57:35 +02:00
Maria Matejka
63f49457dc
Filter: renaming pointers for consistency
...
The struct f_inst * is now always "what"
and the union member pointer is always "whati".
2019-06-28 11:26:36 +02:00
Maria Matejka
64bb1346c7
Filter: A little cleanup of M4 interpreter generator
2019-06-27 23:57:59 +02:00
Maria Matejka
a8ab54d18d
Merge remote-tracking branch 'refs/remotes/origin/mq-filter-stack' into mq-filter-stack
2019-06-25 22:40:05 +02:00
Maria Matejka
63e7620462
Conf/Filters: Moved argument count to conf scope
2019-06-25 16:18:06 +02:00
Maria Matejka
2e0777317f
Filter instructions don't confuse now v1 and res.
2019-06-21 11:33:28 +02:00
Maria Matejka
a84b8b6ebb
Revert "Filter: Dropped the setter instructions in favor of direct result storage."
...
This reverts commit bd91338246
.
2019-06-19 14:09:57 +02:00
Maria Matejka
87c82334a7
Filter: removal of semantically insane consts in filter_commit
2019-06-13 14:24:48 +02:00
Maria Matejka
bd91338246
Filter: Dropped the setter instructions in favor of direct result storage.
...
This should help filter performance a bit.
2019-06-03 10:41:35 +02:00
Maria Matejka
aa6c5f4d92
Filter: Just a little comments in filter structure
2019-05-30 14:42:54 +02:00
Maria Matejka
1757a6fce5
Filter: Stacks moved to thread-local storage if available.
2019-05-29 21:03:52 +02:00
Jan Maria Matejka
6479e403ef
Filters: If somebody doesn't like _Thread_local, don't fail for now, just be a little slower.
...
When the parallel execution comes into place, we'll likely enforce this
C11 feature. It's much simpler and also faster than pthread_[sg]etspecific().
2019-05-23 11:27:24 +00:00
Jan Maria Matejka
23e3b1e665
Filter: Some people can't pronounce "postfixify" correctly. Let's try "linearize" instead.
...
This is just a naming change.
2019-05-22 15:20:02 +00:00
Jan Maria Matejka
96d757c13f
Filter: Store variables and function arguments on stack
2019-05-21 16:33:37 +00:00
Jan Maria Matejka
20c6ea70cc
Filter: Making the filter state thread local.
...
While having the filter code still reentrant if we really need,
the compiler can now do constant propagation and address the
thread local storage directly to save some computation time.
2019-05-20 17:53:10 +00:00
Maria Matejka
9eef9c648c
Lexer now returns known sym / unknown sym / keyword
2019-05-17 22:26:21 +02:00