Maria Matejka
c1645b9d5b
Merge commit '165156beeb2926472bbceca3c103aacc3f81a8cc' into haugesund
2022-05-30 16:53:18 +02:00
Maria Matejka
b7e2edd441
Merge commit '1d309c4ce6e95b68c64a8f007f6dd2f1830a5707' into haugesund
2022-05-30 16:48:17 +02:00
Maria Matejka
e16e1e4138
Merge commit 'f2f3163f6c3fba7f9ef03640d7b2f6323873d2cc' into haugesund
2022-05-30 16:41:15 +02:00
Maria Matejka
0097f24e2e
Merge commit 'de86040b2cf4ec9bfbb64f0e208a19d4d7e51adc' into haugesund
2022-05-30 16:21:48 +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
ba35b0f818
Merge commit '0e1e632f70b74cf111f08175ab3634db2f962579' into haugesund
2022-05-30 15:43:45 +02:00
Maria Matejka
54344f15f8
Merge commit '0d0f6554a5c233bf2bf830ae319191c4b1808d49' into haugesund
2022-05-30 15:43:13 +02:00
Maria Matejka
3752654852
Merge commit '80272d4b64a38ee6f04a1c4e8566cac3a2293176' into haugesund
2022-05-30 15:39:32 +02:00
Maria Matejka
032201378f
Merge commit 'cd9550b24487ac7327b0234fd825f4214fdf7b16' into haugesund
2022-05-30 15:38:24 +02:00
Maria Matejka
45af19dd99
Merge commit '652be92a21f5575e5f74f6abe98eb4200b86776c' into haugesund
2022-05-30 15:36:54 +02:00
Maria Matejka
ef3a8138c9
Merge commit '98fd158e28d89f10ee7a41b4f6a14fbd0021ef35' into haugesund
2022-05-30 15:35:29 +02:00
Maria Matejka
81aeccbb00
Merge commit 'd39ef961d1dde230c55fcc931b53f44cb34a1e63' into haugesund
2022-05-30 15:32:11 +02:00
Maria Matejka
d7b077f5d6
Merge commit '4a23ede2b056a41456790cc20a0c3d92a7137693' into haugesund
2022-05-30 15:31:19 +02:00
Maria Matejka
d024f471ea
Merge commit 'ebd807c0b8eb0b7a3dc3371cd4c87ae886c00885' into haugesund
2022-05-30 15:27:46 +02:00
Maria Matejka
652be92a21
Merge remote-tracking branch 'origin/master' into haugesund-to-2.0
2022-05-30 15:20:21 +02:00
Maria Matejka
921344c3ba
Merge commit '3a6eda995ecfcebff3130d86ee3baeab12a41335' into haugesund
2022-05-30 15:15:19 +02:00
Ondrej Zajicek
ba2a076001
BGP: Improve tx performance during feed/flush
...
The prefix hash table in BGP used the same hash function as the rtable.
When a batch of routes are exported during feed/flush to the BGP, they
all have similar hash values, so they are all crowded in a few slots in
the BGP prefix table (which is much smaller - around the size of the
batch - and uses higher bits from hash values), making it much slower due
to excessive collisions. Use a different hash function to avoid this.
Also, increase the batch size to fill 4k BGP packets and increase minimum
BGP bucket and prefix hash sizes to avoid back and forth resizing during
flushes.
This leads to order of magnitude faster flushes (on my test data).
2022-05-15 15:05:37 +02:00
Maria Matejka
165156beeb
Conf: Symbols are properly scoped
...
Now there is a persistent root symbol scope and all scopes have their
symbol hashes to store local symbols and not leak any symbol out.
2022-05-04 15:38:42 +02:00
Maria Matejka
1d309c4ce6
Enforcing certain data structure explicit paddings.
...
Implicit paddings have undefined values in C. We want the eattr blocks
to be comparable by memcmp and eattrs settable directly by structrure
literals. This check ensures that all paddings in eattr and bval are
explicit and therefore zeroed in all literals.
2022-05-04 15:37:41 +02:00
Maria Matejka
f2f3163f6c
Filters always allocate from tmp_linpool
2022-05-04 15:37:41 +02:00
Maria Matejka
de86040b2c
Attribute list normalization cleanup
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
0e1e632f70
FIB is a data structure generic enough to be in lib
2022-05-04 15:37:41 +02:00
Maria Matejka
0d0f6554a5
Unified attribute and filter types
...
This commit removes the EAF_TYPE_* namespace completely and also for
route attributes, filter-based types T_* are used. This simplifies
fetching and setting route attributes from filters.
Also, there is now union bval which serves as an universal value holder
instead of private unions held separately by eattr and filter code.
2022-05-04 15:37:41 +02:00
Maria Matejka
cd9550b244
Implicit ROA check converted to explicit filter instruction sequence
2022-05-04 15:37:41 +02:00
Maria Matejka
22f95d9889
Special attribute types for enums
2022-05-04 15:37:41 +02:00
Maria Matejka
e261b32511
Dropping EAF_VAR_LENGTH as the attribute data is either embedded or adata
2022-05-04 15:37:41 +02:00
Maria Matejka
bc17fee1bf
Filter: Bitfield eattrs reading / writing moved to filter code
...
Before this change, fetch-update-write and bitmasking was hardcoded in
attribute access code cased by the attribute type. Several filter
instructions are used to do it instead.
As this is certainly going to be a little bit slower than before, the
switch block in attribute access code should be completely removed in
near future, helping with both performance and code cleanliness.
The user interface should have stayed intact.
2022-05-04 15:37:41 +02:00
Maria Matejka
98fd158e28
RIP: fixed the EA_RIP_FROM attribute
...
The interface pointer was improperly converted to u32 and back. Fixing
this by explicitly allocating an adata structure for it. It's not so
memory efficient, we'll optimize this later.
2022-04-13 17:05:12 +02:00
Maria Matejka
4a23ede2b0
Protocols have their own explicit init routines
2022-04-06 18:14:08 +02:00
Maria Matejka
ebd807c0b8
Slab allocator can free the blocks without knowing the parent structure
2022-04-06 18:14:08 +02:00
Maria Matejka
7e86ff2076
All linpools use pages to allocate regular blocks
2022-04-06 18:14:08 +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
af8568a870
Minor fix: f_val literals should always have named struct fields
2022-04-06 18:14:08 +02:00
Maria Matejka
c53f547a0b
Printf variant with a result allocated inside a pool / linpool
2022-03-15 11:21:46 +01:00
Maria Matejka
41572e0c1b
Merge commit 'f81702b7' into haugesund
2022-03-09 15:03:48 +01:00
Maria Matejka
9dc1d7782e
Merge commit '0767a0c2' into haugesund
...
Conflicts:
nest/rt-table.c
2022-03-09 14:40:09 +01:00
Maria Matejka
6151e51ffa
Merge commit '8f3942a9' into haugesund
...
Conflicts:
nest/rt-table.c
2022-03-09 14:09:34 +01:00
Maria Matejka
4eeae48214
Merge commit '56c8f2f0' into haugesund
...
Conflicts:
nest/route.h
nest/rt-table.c
2022-03-09 13:49:31 +01:00
Maria Matejka
01c9f3d78e
Merge commit '575da88f' into haugesund
...
Conflicts:
nest/rt-table.c
2022-03-09 13:37:12 +01:00
Maria Matejka
92b832380d
Merge commit '1b9189d5' into haugesund
2022-03-09 13:13:05 +01:00
Maria Matejka
1b9189d5fd
Route validity check converted to generic macro dispatch
2022-03-09 12:30:05 +01:00
Maria Matejka
19e727a248
Merge commit '60880b539b8886f76961125d89a265c6e1112b7a' into haugesund
2022-03-09 11:29:56 +01:00
Maria Matejka
8a4bc4fdbf
BGP Flowspec validation: Removed in-route optimization for multithreading compatibility
2022-03-09 11:27:34 +01:00
Maria Matejka
24773af9e0
Merge commit 'e42eedb9' into haugesund
2022-03-09 11:02:55 +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
ff47cd80dd
Merge commit 'd5a32563' into haugesund
2022-03-09 10:50:38 +01:00