summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-05-21Filter: Store variables and function arguments on stackJan Maria Matejka
2019-05-20Filter: Making the filter state thread local.Jan Maria Matejka
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-17Lexer now returns known sym / unknown sym / keywordMaria Matejka
2019-03-23Filter: fixed error-checking bug in !~ operatorMaria Matejka
2019-03-22Fixed one warning and one undefined value.Maria Matejka
2019-03-20Fixed an undefined symbol bug in CLI introduced by filter refactoringMaria Matejka
2019-03-18Merge branch 'master' into HEADMaria Matejka
2019-03-18Build: Automatic dependency tracking for generated filesMaria Matejka
2019-03-15Perf: fixed stupid allocation bugMaria Matejka
2019-03-15Gitlab CI: Drop CentOS 6 test build as unsupported.Maria Matejka
If someone wants to maintain BIRD for CentOS 6, feel free to send patches.
2019-03-14Nest: Update handling of temporary attributesOndrej Zajicek (work)
The temporary atttributes are no longer removed by ea_do_prune(), but they are undefined by store_tmp_attrs() protocol hooks. This fixes several bugs where temporary attributes were removed when they should not or not removed when they should be. The flag EAF_TEMP is no longer needed and was removed. Update all protocol make_tmp_attrs() / store_tmp_attrs() hooks to use helper functions and to handle unset attributes properly. Also fix some related bugs like improper handling of empty eattr list.
2019-03-06OSPF: Improved handling of tmpattrsOndrej Zajicek (work)
Keep track of whether OSPF tmpattrs are actually defined for given route (using flags in rte->pflags). That makes them behave more like real eattrs so a protocol can define just a subset of them or they can be undefined by filters. Do not set ospf_metric2 for other than type 2 external OSPF routes and do not set ospf_tag for non-external OSPF routes. That also fixes a bug where internal/inter-area route propagated from one OSPF instance to another is initiated with infinity ospf_metric2. Thanks to Yaroslav Dronskii for the bugreport.
2019-03-06Faster filters: documentation on what is happening thereMaria Matejka
2019-02-27Fixed link time optimizer check for FreeBSDMaria Matejka
2019-02-26NEWS and version updatev2.0.4Ondrej Zajicek (work)
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-22Conf: Switch for faster (and slightly bigger) lexerMaria Matejka
2019-02-22Nest: Do not compare rte.flags during rte_update()Ondrej Zajicek (work)
Route flags are mosty internal state of rtable, they are not significant to whether a route has changed. With the old code, all routes received as a part of enhanced route refresh are always re-announced to other peers due to change in REF_STALE.
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