Maria Matejka
45af19dd99
Merge commit '652be92a21f5575e5f74f6abe98eb4200b86776c' into haugesund
2022-05-30 15:36:54 +02:00
Maria Matejka
d7b077f5d6
Merge commit '4a23ede2b056a41456790cc20a0c3d92a7137693' into haugesund
2022-05-30 15:31:19 +02:00
Alexander Zubkov
5299fb9db0
Fixed spurious undef of route attributes
2022-05-04 15:37:23 +02:00
Maria Matejka
0f68515263
Unsetting route attributes without messing with type system
2022-04-06 18:14:08 +02:00
Maria Matejka
63cf5d5d8c
Eattr flags (originated and fresh) get their own struct fields
2022-04-06 18:14:08 +02:00
Maria Matejka
92b832380d
Merge commit '1b9189d5' into haugesund
2022-03-09 13:13:05 +01:00
Maria Matejka
83d9920f90
Merge commit '5cff1d5f' into haugesund
...
Conflicts:
proto/bgp/attrs.c
proto/pipe/pipe.c
2022-03-09 10:56:06 +01:00
Maria Matejka
d071aca7aa
Merge commit '2c13759136951ef0e70a3e3c2b2d3c9a387f7ed9' into haugesund
2022-03-02 10:01:44 +01:00
Alexander Zubkov
0e1fd7ea6a
Filter: Add operators to find minimum and maximum element of sets
...
Add operators .min and .max to find minumum or maximum element in sets
of types: clist, eclist, lclist. Example usage:
bgp_community.min
bgp_ext_community.max
filter(bgp_large_community, [(as1, as2, *)]).min
Signed-off-by: Alexander Zubkov <green@qrator.net>
2021-12-28 04:07:09 +01:00
Alexander Zubkov
a2a268da4f
Filter: Add operators to pick community components
...
Add operators that can be used to pick components from
pair (standard community) or lc (large community) types.
For example:
(10, 20).asn --> 10
(10, 20).data --> 20
(10, 20, 30).asn --> 10
(10, 20, 30).data1 --> 20
(10, 20, 30).data2 --> 30
Signed-off-by: Alexander Zubkov <green@qrator.net>
2021-12-28 04:07:00 +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
5cff1d5f02
Route: moved rte_src pointer from rta to rte
...
It is an auxiliary key in the routing table, not a route attribute.
2021-10-13 19:09:04 +02:00
Maria Matejka
eb937358c0
Preference moved to RTA and set explicitly in protocols
2021-10-13 19:09:04 +02:00
Maria Matejka
2c13759136
Reducing filter stack size to allow for lesser thread stack size
2021-09-10 18:11:28 +02:00
Trisha Biswas
e5468d1685
Filter: Add MPLS label route attribute
...
Add support to set or read outgoing MPLS labels using filters. Currently
this supports the addition of one label per route for the first next hop.
Minor changes by committer.
2021-05-17 17:50:04 +02:00
Ondrej Zajicek (work)
94abefc00b
Filter: Update 'gw' to handle IPv6 link-local addresses
...
When a link-local address is set, use the existing iface for scope.
Thanks to Marcel Krüger for the bugreport.
2021-03-15 18:37:18 +01:00
Ondrej Zajicek (work)
d06a875b04
Filter: Recursive filter iteration code
...
Add macros for recursive filter iteration that allows to examine
all instructions reachable from a filter.
2021-02-07 19:21:42 +01:00
Ondrej Zajicek (work)
9e2635505a
Filter: Fix return on top-level
...
Broken detection of top-level case caused crash when return was called
from top-of-stack position. It should behave as reject/accept.
Thanks to Damian Zaremba for the bugreport.
2020-12-28 15:23:28 +01:00
Ondrej Zajicek (work)
8cc5bb09e3
Filter: Add 'weight' route attribute
...
Add 'weight' route attribute that allows to get and set ECMP weight of
nexthops. Similar to 'gw' attribute, it is limited to the first nexthop,
but it is useful for handling BGP multipath, where an ECMP route is
merged from multiple regular routes.
2020-12-02 05:02:26 +01:00
Ondrej Zajicek (work)
ec430a7fee
Nest: Implement BGP path mask loop operator
...
Implement regex-like '+' operator in BGP path masks to match previous
path mask item multiple times. This is useful as ASNs may appear
multiple times in paths due to path prepending for traffic engineering
purposes.
2020-05-18 16:25:08 +02:00
Ondrej Zajicek (work)
82bfee76f0
Filter: Remove quitbird command
...
No need for this debug filter command and it can be abused from CLI.
2020-05-02 02:47:18 +02:00
Maria Matejka
124d860f64
Filter: fixed omitted overflow check in EC constructor
2020-04-28 16:21:06 +02:00
Ondrej Zajicek (work)
ef8c45749c
Filter: Fix typecheck for AND/OR.
...
Do not apply dynamic type check for second argument of AND/OR, as it is
not evaluated immediately like regular argument would be.
Thanks to Mikael for the bugreport.
2020-01-07 01:24:30 +01:00
Ondrej Zajicek (work)
dfb3eb7716
Filter: Fix function comparison
...
Check the SYM_FLAG_SAME in new symbols. The old code checked that
in old symbols (f2).
2019-12-10 18:53:16 +01: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)
10c4cd9677
Filter: Add type info for more instructions
2019-11-05 15:30:20 +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
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)
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
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
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
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
Ondrej Zajicek (work)
bfa15a642f
Filter: Minor cleanups
2019-07-10 16:47:17 +02:00
Maria Matejka
0206c070ac
Filter: Split printing and dying
2019-07-03 08:27:56 +02:00
Maria Matejka
550a6488c9
Filter: documentation of the M4 preprocessor
2019-07-02 17:39:56 +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
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
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
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
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
1757a6fce5
Filter: Stacks moved to thread-local storage if available.
2019-05-29 21:03:52 +02: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
Maria Matejka
fe503c7c06
Filter: fixed error-checking bug in !~ operator
2019-03-23 13:32:14 +01:00