summaryrefslogtreecommitdiff
path: root/conf/cf-lex.l
AgeCommit message (Collapse)Author
2022-11-07Merge commit '37b64441' into thread-nextMaria Matejka
2022-11-01Moved config-related allocations to config_pool and showing its size in ↵Maria Matejka
memory usage
2022-10-18Filter: Fix handling of variables in anonymous filtersOndrej Zajicek
Define scope for anonymous filters, and also explicitly distinguish block scopes and function/filter scopes instead of using anonymous / named distinction. Anonymous filters forgot to push scope, so variables for them were in fact defined in the top scope and therefore they shared a frame. This got broken after rework of variables, which assumed that there is a named scope for every function/filter.
2022-07-13Merge commit '2e5bfeb73ac25e236a24b6c1a88d0f2221ca303f' into thread-nextMaria Matejka
2022-06-27Filter: Implement soft scopesOndrej Zajicek (work)
Soft scopes are anonymous scopes that most likely do not contain any symbol, so allocating regular scope is postponed when it is really needed.
2022-05-04Conf: Allowing keyword redefinitionMaria Matejka
Some tokens are both keywords and symbols. For now, we allow only specific keywords to be redefined; in future, more of the keywords may be added to this category. The redefinable keywords must be specified in any .Y file as follows: toksym: THE_KEYWORD ; See proto/bgp/config.Y for an example. Also dropped a lot of unused terminals.
2022-05-04Explicit definition structures of route attributesMaria Matejka
Changes in internal API: * Every route attribute must be defined as struct ea_class somewhere. * Registration of route attributes known at startup must be done by ea_register_init() from protocol build functions. * Every attribute has now its symbol registered in a global symbol table defined as SYM_ATTRIBUTE * All attribute ID's are dynamically allocated. * Attribute value custom formatting hook is defined in the ea_class. * Attribute names are the same for display and filters, always prefixed by protocol name. Also added some unit testing code for filters with route attributes.
2022-05-04Conf: Symbols are properly scopedMaria Matejka
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-04Splitting route data structures out to libMaria Matejka
2022-05-04Filter operations: bitwise AND and ORMaria Matejka
2022-01-05Conf: Fix parsing full-length IPv6 addressesOndrej Zajicek (work)
Lexer expression for bytestring was too loose, accepting also full-length IPv6 addresses. It should be restricted such that colon is used between every byte or never. Fix the regex and also add some test cases for it. Thanks to Alexander Zubkov for the bugreport
2021-06-06Nest: Allow specifying security keys as hex bytes as well as stringsToke Høiland-Jørgensen
Add support for specifying a password in hexadecimal format, The result is the same whether a password is specified as a quoted string or a hex-encoded byte string, this just makes it more convenient to input high-entropy byte strings as MAC keys.
2020-11-24Minor cleanups with cfg_allocz()Ondrej Zajicek (work)
Also fixes some more failed asserts due to add_tail().
2020-05-01Lexer: strtoul shall never set endptr to NULL; it should be an errorMaria Matejka
2019-07-03Merge branch 'master' into mq-filter-stackMaria Matejka
2019-07-02Filter: Pre-evaluation of constant expressionsMaria Matejka
2019-06-25Conf/Filters: Moved argument count to conf scopeMaria Matejka
2019-06-13String: bstrtoul macro expanded to bstrtoul10 and 16Maria Matejka
2019-05-17Lexer now returns known sym / unknown sym / keywordMaria Matejka
2019-04-30BGP: Dynamic BGPOndrej Zajicek (work)
Support for dynamically spawning BGP protocols for incoming connections. Use 'neighbor range' to specify range of valid neighbor addresses, then incoming connections from these addresses spawn new BGP instances.
2019-02-26Filters: comparison of functions and filters cachingMaria 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-20Conf: Symbol implementation converted from void pointers to unionMaria Matejka
... and consted some declarations.
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 + Config: Fix bugs, tests and split symbols by typeMaria Matejka
2018-09-11Conf: Show the line:char position where the syntax error happensJan Maria Matejka
2017-05-30Merge branch 'master' into int-newOndrej Zajicek (work)
2017-05-30Workaround for older bisonsOndrej Zajicek (work)
2017-05-25Merge branch 'master' into int-newOndrej Zajicek (work)
2017-05-25Conf: Replace keyword and symbol hash table with generic hash table.Ondrej Zajicek (work)
The old hash table had fixed size, which makes it slow for config files with large number of symbols and symbol lookups. The new one is growing according to needs.
2017-05-18Fix VPN-RD parsing on 32-bit systemsOndrej Zajicek (work)
When shift count >= width of type the behavior is undefined.
2017-04-18Check validity of dest w.r.t. net_typeOndrej Zajicek (work)
Allow to define static roa/flow routes without dest.
2017-03-28Simpler format of VPN RDJan Moskyto Matejka
2017-02-20Several minor fixesOndrej Zajicek (work)
2016-12-22VPN4 and VPN6 literalsJan Moskyto Matejka
From now on, protocol static accepts VPN4 and VPN6 addressess. With some concerns about VPN6 Route Distinguishers, I finally chose to have the same format as for VPN4 (where it is defined by RFC 4364).
2016-11-16Lexer: Add a quotation mark back while parsing quotesPavel Tvrdik
Thanks to Ondrej Zajicek for code.
2016-11-08Merge branch 'master' into int-newOndrej Zajicek (work)
2016-11-08Minor code cleanupsOndrej Zajicek (work)
2016-11-08Merge tag 'v1.6.2' into int-newOndrej Zajicek (work)
2016-09-21Add !~ operator to filter grammarPavel Tvrdik
2016-08-16Include <stdint.h> in cf-lex.l to avoid UINTx_MAX redefinitionOndřej Surý
2016-05-12Merge remote-tracking branch 'origin/master' into int-newOndrej Zajicek (work)
2016-05-12Prog Doc: Complete several missing parametersPavel Tvrdik
2015-12-20ROA code switchoffJan Moskyto Matejka
2015-11-25Merge branch 'master' into int-newOndrej Zajicek (work)
2015-11-09Conf: Fixes bug in symbol lookup during reconfigurationOndrej Zajicek (work)
Symbol lookup by cf_find_symbol() not only did the lookup but also added new void symbols allocated from cfg_mem linpool, which gets broken when lookups are done outside of config parsing, which may lead to crashes during reconfiguration. The patch separates lookup-only cf_find_symbol() and config-modifying cf_get_symbol(), while the later is called only during parsing. Also new_config and cfg_mem global variables are NULLed outside of parsing.
2015-11-05Initial commit on integrated BIRDOndrej Zajicek (work)
New data types net_addr and variants (in lib/net.h) describing network addresses (prefix/pxlen). Modifications of FIB structures to handle these data types and changing everything to use these data types instead of prefix/pxlen pairs where possible. The commit is WiP, some protocols are not yet updated (BGP, Kernel), and the code contains some temporary scaffolding. Comments are welcome.
2015-02-21Bump max symbol length to 64.Ondrej Zajicek
And move the constant to conf.h header. Thanks to Alexander Chernikov for the patch.
2014-10-24Integrated IP functions.Ondrej Zajicek