Maria Matejka
407e736404
Merge commit '0dbcc927' into thread-next
2023-10-13 13:36:47 +02:00
Maria Matejka
32009cb6eb
Logging: Abolished stdio in favor of write() to make the logging faster.
2023-09-24 20:40:06 +02:00
Alexander Zubkov
0dbcc92726
Filter: Use more generic approach for intra-config expressions
...
Replace f_eval_int() function with a type-generic variant: cf_eval().
Implement similar fuction: cf_eval_int() via inline call to cf_eval().
2023-08-24 04:45:55 +02:00
Maria Matejka
f51837ace6
Caching eattrs in filters is not needed anymore.
...
After flattening the route attribute structure, the ea_list ** is derivable
from rte * by arithmetics. Caching the derived value doesn't help performance
and therefore is removed as unnecessary.
2022-09-21 17:48:31 +02:00
Maria Matejka
c73343de67
Revert "Reducing filter stack size to allow for lesser thread stack size"
...
This reverts commit 2c13759136
.
2022-09-16 10:11:51 +02:00
Maria Matejka
68a2c9d4c9
Merge commit '2e5bfeb73ac25e236a24b6c1a88d0f2221ca303f' into thread-next
2022-07-13 14:14:37 +02:00
Maria Matejka
2e5bfeb73a
Merge remote-tracking branch 'origin/master' into backport
2022-07-11 11:08:10 +02:00
Ondrej Zajicek (work)
a2527ee53d
Filter: Improve handling of stack frames in filter bytecode
...
When f_line is done, we have to pop the stack frame. The old code just
removed nominal number of args/vars. Change it to use stored ventry value
modified by number of returned values. This allows to allocate variables
on a stack frame during execution of f_lines instead of just at start.
But we need to know the number of returned values for a f_line. It is 1
for term, 0 for cmd. Store that to f_line during linearization.
2022-06-27 21:13:32 +02:00
Maria Matejka
4364ee9b6f
Merge commit '938742decc6e1d6d3a0375dd012b75172e747bbc' into haugesund
2022-06-08 15:31:28 +02:00
Maria Matejka
e16e1e4138
Merge commit 'f2f3163f6c3fba7f9ef03640d7b2f6323873d2cc' into haugesund
2022-05-30 16:41:15 +02:00
Maria Matejka
86ac1045d7
Merge commit '3fb70b26faca6788aa0bdf1d558414f9f777c6cd' into haugesund
2022-05-30 16:21:02 +02:00
Maria Matejka
b3649ec77e
Merge commit 'ef6a903e6f44b467f9606018446095521ad01ef1' into haugesund
2022-05-30 16:20:35 +02:00
Maria Matejka
938742decc
Squashing the route attribute structure into one level.
...
For now, all route attributes are stored as eattrs in ea_list. This
should make route manipulation easier and it also allows for a layered
approach of route attributes where updates from filters will be stored
as an overlay over the previous version.
2022-05-30 14:39:09 +02:00
Maria Matejka
f2f3163f6c
Filters always allocate from tmp_linpool
2022-05-04 15:37:41 +02:00
Maria Matejka
3fb70b26fa
Complex route attributes are data structures, shall be in lib also
2022-05-04 15:37:41 +02:00
Maria Matejka
ef6a903e6f
Splitting route data structures out to lib
2022-05-04 15:37:41 +02:00
Maria Matejka
f81702b7e4
Table import and export are now explicit hooks.
...
Channels have now included rt_import_req and rt_export_req to hook into
the table instead of just one list node. This will (in future) allow for:
* channel import and export bound to different tables
* more efficient pipe code (dropping most of the channel code)
* conversion of 'show route' to a special kind of export
* temporary static routes from CLI
The import / export states are also updated to the new algorithms.
2021-11-22 18:33:53 +01:00
Maria Matejka
69d1ffde4c
Split route data structure to storage (ro) / manipulation (rw) structures.
...
Routes are now allocated only when they are just to be inserted to the
table. Updating a route needs a locally allocated route structure.
Ownership of the attributes is also now not transfered from protocols to
tables and vice versa but just borrowed which should be easier to handle
in a multithreaded environment.
2021-11-09 19:20:41 +01:00
Maria Matejka
2c13759136
Reducing filter stack size to allow for lesser thread stack size
2021-09-10 18:11:28 +02:00
Ondrej Zajicek (work)
ff2ca10cba
Filter: Add support for src/dst accessors for Flowspec and SADR
2019-12-09 04:23:01 +01:00
Ondrej Zajicek (work)
87512e9751
Filter: Improve typecheck error messages
2019-11-05 15:30:16 +01:00
Ondrej Zajicek (work)
ea0917bcba
Filter: Fix eval command
2019-09-24 00:18:48 +02:00
Maria Matejka
3782454e8d
Filter: Simpler filter context allocation
2019-07-15 15:46:36 +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
0da06b7103
Filter: lots of documentation
2019-07-15 13:19:01 +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
84ac62d396
Filter: CLI command to dump all the linearized filters
2019-07-03 08:27:56 +02:00
Maria Matejka
b40c0f028f
Filter: Pre-evaluation of constant expressions
2019-07-02 10:45:53 +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
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
f249d0b84c
Filters: comparison of functions and filters caching
2019-02-26 16:44:24 +01:00
Maria Matejka
d1039926f5
Filter: Interpreter merged into the common m4 generator.
...
The config-time partial evaluation of constant expressions in filters is nearby.
2019-02-20 22:30:55 +01:00
Maria Matejka
ea4f55e3dc
Filter: More cleanup -- customized structures also in struct f_line_item
2019-02-20 22:30:55 +01:00
Maria Matejka
0b39b1cbb7
Conf: Symbol implementation converted from void pointers to union
...
... and consted some declarations.
2019-02-20 22:30:55 +01:00
Maria Matejka
132529ce89
Filter: merged filter compare functions into common M4 file
2019-02-20 22:30:55 +01:00
Maria Matejka
dd4d409551
Filter: Merged postfixify routine
2019-02-20 22:30:54 +01:00
Maria Matejka
de12cd18fb
Filter: Merged filter line item dumpers into common generated source
2019-02-20 22:30:54 +01:00
Maria Matejka
b256f24145
Filter: auto-generating enum-to-string
2019-02-20 22:30:54 +01:00
Maria Matejka
5289304519
Filter data manipulation functions separated to their file
2019-02-20 22:30:54 +01:00
Maria Matejka
4f082dfa89
Filter: merged filter instruction constructors, counting line size on instruction construct
2019-02-20 22:30:54 +01:00
Maria Matejka
8bdb05edb2
Filters: split the large filter.h file to smaller files.
...
This should be revised, there are still ugly things in the filter API.
2019-02-20 22:30:54 +01:00
Maria Matejka
c1e97169cd
Filter: M4 convertors polished a bit.
2019-02-20 22:30:54 +01:00
Maria Matejka
9b46748d5b
Filter: refactoring of instruction constructors
2019-02-20 22:30:54 +01:00