summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-03-06Faster filters: documentation on what is happening thereMaria Matejka
2019-02-27Fixed link time optimizer check for FreeBSDMaria Matejka
2019-02-26Filters: comparison of functions and filters cachingMaria Matejka
2019-02-26Build: No link time optimization when debug is enabledMaria Matejka
2019-02-25Custom number parser to speed up config parsingMaria Matejka
The glibc's generic parser is slow due to its versatility. Specialized parsers for base-10 and base-16 are much faster and we don't use other bases.
2019-02-25Conf: Lexer parses quoted strings in a more descriptive wayMaria Matejka
2019-02-22Conf: Switch for faster (and slightly bigger) lexerMaria Matejka
2019-02-20Enabled link time optimization.Maria Matejka
2019-02-20Filter: Interpreter merged into the common m4 generator.Maria Matejka
The config-time partial evaluation of constant expressions in filters is nearby.
2019-02-20Filter: Fixed bugs in FI_CALL and FI_SWITCHMaria Matejka
2019-02-20Test: Added -d flag to die directly after first error.Maria Matejka
2019-02-20GDB: Added more pretty printers for filtersMaria Matejka
2019-02-20Filter: More cleanup -- customized structures also in struct f_line_itemMaria Matejka
2019-02-20Conf: Symbol implementation converted from void pointers to unionMaria Matejka
... and consted some declarations.
2019-02-20Filter: merged filter compare functions into common M4 fileMaria Matejka
2019-02-20Filter: Merged postfixify routineMaria Matejka
2019-02-20Filter: Merged filter line item dumpers into common generated sourceMaria Matejka
2019-02-20Filter: auto-generating enum-to-stringMaria Matejka
2019-02-20Filter generator: workaround for M4 claiming all the put-around code be on ↵Maria Matejka
one line
2019-02-20Filter data manipulation functions separated to their fileMaria Matejka
2019-02-20Filter: split the constructors to a separate fileMaria Matejka
2019-02-20Conf: Fixed makefilesMaria Matejka
2019-02-20Filter: merged filter instruction constructors, counting line size on ↵Maria Matejka
instruction construct
2019-02-20Test: Fixed annoying warnings (and possible obscure bugs).Maria Matejka
2019-02-20Filters: split the large filter.h file to smaller files.Maria Matejka
This should be revised, there are still ugly things in the filter API.
2019-02-20Filter: M4 convertors polished a bit.Maria Matejka
2019-02-20Filter + Config: Fix bugs, tests and split symbols by typeMaria Matejka
2019-02-20GDB pretty printers: f_inst and f_val.Maria Matejka
2019-02-20Filter: refactoring of instruction constructorsMaria Matejka
2019-02-20Filter refactoring: dropped the recursion from the interpreterMaria Matejka
This is a major change of how the filters are interpreted. If everything works how it should, it should not affect you unless you are hacking the filters themselves. Anyway, this change should make a huge improvement in the filter performance as previous benchmarks showed that our major problem lies in the recursion itself. There are also some changes in nest and protocols, related mostly to spreading const declarations throughout the whole BIRD and also to refactored dynamic attribute definitions. The need of these came up during the whole work and it is too difficult to split out these not-so-related changes.
2019-02-20Filter refactoring: The instructions are converted to the switch body by M4Maria Matejka
2019-02-20Filter refactoring: Drop the roa check specific f_instMaria Matejka
2019-02-20Filter refactoring: The constant f_val is simply included inside the instructionMaria Matejka
With 32 bits, size of the args is 12 bytes, the f_val is 20 bytes. With 64 bits, size of the args is 24 bytes, the f_val the same. This is not so nice on 32 bits, anyway the f_inst itself is 24 vs. 32 bytes and the overall size of filters must be 32k of instructions to get to one megabyte of RAM eaten by f_inst. Therefore it seems to be improbable for common user to get into problems with this change.
2019-02-20Filter refactoring: Changed arguments from separate unions to an arrayMaria Matejka
2019-02-20Filter refactoring: Converted condition to three-args instructionMaria Matejka
2019-02-20Filter refactoring: Some instructions eat up excessively much space.Maria Matejka
2019-02-20Filter refactoring: Expanded the short instructions with common code.Maria Matejka
This will make the further changes more straightforward.
2019-02-20Filter refactoring: indentation fixMaria Matejka
2019-02-20Filter refactoring: The values are now saved on a custom stack.Jan Maria Matejka
This shall help with performance.
2019-02-20Filter refactoring: Passing the resulting struct f_val as a pointer.Jan Maria Matejka
This also drops the multiplexing of errors with the f_val itself together with the T_RETURN f_val type flag.
2019-02-20Filter refactoring: Moved filter instruction definition to a separate fileJan Maria Matejka
2019-02-20Filter refactoring: Moved the bitfield bit position formula to route.hJan Maria Matejka
2019-02-20Filter refactoring: Moved the interpret macros inside the blockJan Maria Matejka
2019-02-20Configure: Don't check for implicit fallthrough unless when debugging.Jan Maria Matejka
2019-02-20Filter: Converted static global variables to a filter_state struct.Jan Maria Matejka
The static filter state was messy and blocked the planned parallel execution of filters. Anyway, this will be also slower as the state structure must be passed almost everywhere with us.
2019-02-19HTML are no longer generated in srcdirOndrej Zajicek (work)
2019-02-19Doc: Detect SP/OpenSP automaticallyOndrej Zajicek (work)
2019-02-19Nest: Prevent withdraws from propagation back to source protocol (for ↵Ondrej Zajicek (work)
accepted mode) Update for one of previous patches, handles the the issue for first-accepted mode of route propagation.
2019-02-17OSPF: Reset LSAs during area type changeOndrej Zajicek (work)
When area is reconfigured to a different type, we need to flush LSAs as they may not be valid (e.g. NSSA-LSA for non-NSSA area). Also, when we have have just one OSPF area and that changes type, we could restart OSPF as there is no state to keep anyway. That solves issue with different handling of external routes exported to OSPF based of main area type.
2019-02-13OSPF: Basic support for DN-bit handling (RFC 4576)Ondrej Zajicek (work)
External LSAs originated by OSPF routers with VPN-PE behavior enabled are marked by DN flag and they are ignored by other OSPF routers with VPN-PE enabled.