summaryrefslogtreecommitdiffstats
path: root/conf/cf-lex.l
AgeCommit message (Collapse)Author
2011-11-07Implements protocol templates.Ondrej Zajicek
Based on the patch from Alexander V. Chernikov. Extended to support almost all protocols. Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
2011-10-10Fixes for include.Ondrej Zajicek
2011-09-11Configuration can include other files.Ondrej Filip
2011-05-06Fixes several problems in filter syntax.Ondrej Zajicek
- Fixes several conflicts in the grammar. - Fixes a bug in (a..b, c) pair patterns. - Makes pair patterns orthogonal. - Allows term expressions in pair patterns without additional ( ). - Allows several comma separated values in switch cases.
2011-03-23A hack to distinguish if..else from else: in case.Ondrej Zajicek
The old BIRD grammar needs two lookaheads to distinguish if..else from else: in case, which caused the parser to fail on some combinations of both expressions. This patch replaces two tokens 'else' ':' by one token 'else:' to fix that.
2011-03-13Implements Router Advertisement protocol.Ondrej Zajicek
2010-05-02Merge several fixes suggested by Joakim Tjernlund.Ondrej Zajicek
2010-02-20Implements pattern match for 'show protocols' command.Ondrej Zajicek
And generally consolidates protocol commands.
2010-02-10Define symbols as text between ''.Ondrej Filip
2009-03-14New syntax for bgp_pathOndrej Zajicek
2009-01-27New syntax for bgp_pathOndrej Zajicek
2000-06-08Fixes for the programmer's manual.Martin Mares
2000-06-07Fixes to the progdoc.Martin Mares
2000-06-07Spelling fixes to progdoc.Martin Mares
2000-06-04Nested scopes could never have worked. My fault I wrote such a buggy code,Martin Mares
Pavel's fault that he's never tested shadowing of declarations in the filters. cf_define_symbol() has been modified to check the scope of the symbol it's given and it if it's an already defined symbol, but in a different scope, a copy is created in the current scope and redefined to the new meaning, the consequence being that it cf_define_symbol() now returns the new symbol you need to use when assigning aux and aux2.
2000-06-04Moved parser docs to cf-lex.l, so that the parser compiles.Martin Mares
2000-06-03Documentation.Martin Mares
2000-06-03cf_symbol_class_name now recognizes SYM_IPA.Martin Mares
2000-06-01Added && and ||.Pavel Machek
2000-05-30Recognize `!'.Martin Mares
2000-05-25Use ? in path matching to avoid /* trap.Pavel Machek
2000-04-28Include CF_HDR section in keywords.h as well, so that protocol symbolsMartin Mares
can be used in definition of ENUM's.
2000-04-01Include "lib/string.h" instead of <string.h>. It should give us bzero()Martin Mares
and other non-portable functions on all systems.
2000-03-10Fix <=, >=, !=Pavel Machek
2000-01-19Split off general commands to cmds.c.Martin Mares
Added `show symbols' command which dumps whole symbol table together with symbol types etc.
2000-01-17Separated `official protocol names' used in status dumps from name templatesMartin Mares
used for automatic generation of instance names. protocol->name is the official name protocol->template is the name template (usually "name%d"), should be all lowercase. Updated all protocols to define the templates, checked that their configuration grammar includes proto_name which generates the name and interns it in the symbol table.
2000-01-17When a quoted string is encountered, don't forget to copy it to theMartin Mares
config pool before passing it to the parser.
1999-12-02Avoid `default rule can be matched' warning in CLI state.Martin Mares
1999-11-30Lexer supports fallback symbol tables and uses them to recognizeMartin Mares
symbols from global config when parsing CLI commands. cf_lex_init_tables() is now called automatically inside the lexer.
1999-11-15Defined CF_ENUM.Martin Mares
1999-11-04Symbols are not scoped.Martin Mares
1999-11-03You should not follow next two times.Pavel Machek
1999-10-31Parse CLI commands. We use the same parser as for configuration files (becauseMartin Mares
we want to allow filter and similar complex constructs to be used in commands and we should avoid code duplication), only with CLI_MARKER token prepended before the whole input. Defined macro CF_CLI(cmd, args, help) for defining CLI commands in .Y files. The first argument specifies the command itself, the remaining two arguments are copied to the help file (er, will be copied after the help file starts to exist). This macro automatically creates a skeleton rule for the command, you only need to append arguments as in: CF_CLI(STEAL MONEY, <$>, [[Steal <$> US dollars or equivalent in any other currency]]): NUM { cli_msg(0, "%d$ stolen", $3); } ; Also don't forget to reset lexer state between inputs.
1999-08-03Basic support for IPv6. The system-dependent part doesn't work yet,Martin Mares
but the core routines are there and seem to be working. o lib/ipv6.[ch] written o Lexical analyser recognizes IPv6 addresses and when in IPv6 mode, treats pure IPv4 addresses as router IDs. o Router ID must be configured manually on IPv6 systems. o Added SCOPE_ORGANIZATION for org-scoped IPv6 multicasts. o Fixed few places where ipa_(hton|ntoh) was called as a function returning converted address.
1999-05-17Implemented two new symbol handling functions:Martin Mares
o cf_define_symbol() -- it assigns a meaning to a symbol, bailing out if it already has one. o cf_find_symbol() -- finds symbol by name and creates it if not found. Also modified filter/config.Y to make use of the first function.
1999-04-12Sets of integers now actually work. Sets of IP will work as soon asPavel Machek
compare function is ready.
1999-04-07Filters upgraded - a bit. Moved code to filter.c because it is wherePavel Machek
it belongs. (f-util.c stays there for auxiliary and non-important things.)
1999-03-29After today's lengthy discussions about filter syntax, let's clean upMartin Mares
whitespace/semicolon rules for whole config file: o All non-zero amounts of whitespace are equivalent to single space (aka `all the whitespace has been born equal' ;-)). o Comments count as whitespace. o Whitespace has no syntactic signifance (it can only separate lexical elements). o Consequence: line ends are no longer treated as `;'s. o Every declaration must be terminated by an explicit `;' unless or by a group enclosed in `{' and `}'.
1999-03-26Slightly better generator of default protocol instance names.Martin Mares
1999-02-13'#' comments in config files are equivalent to end of line, thereforeMartin Mares
also to implicit ';'.
1999-02-05Implemented new configuration/reconfiguration interface and defined protocolMartin Mares
state machines. Full explanation will follow soon.
1999-01-15#if 1 that creeped into cvs killed.Pavel Machek
1999-01-15Filters added. They are unable to do anything interesting for nowPavel Machek
(with exception of printing integers to screen), but they exist.
1999-01-10New makefiles. Includes support for out-of-source-tree builds.Martin Mares
1998-12-07cf_error() now accepts any format strings instead of just an errorMartin Mares
message. Also added extra kludge to get rid of collisions of REJECT symbols.
1998-12-06Name cleanups as suggested by Pavel:Martin Mares
- cfg_strcpy() -> cfg_strdup() - mempool -> linpool, mp_* -> lp_* [to avoid confusion with memblock, mb_*] Anyway, it might be better to stop ranting about names and do some *real* work.
1998-11-29Created new functions for allocating configuration data:Martin Mares
o cfg_alloc(size) -- generic memory allocation o cfg_allocu(size) -- unaligned memory allocation o cfg_allocz(size) -- zeroed memory allocation o cfg_strcpy(str) -- allocate a copy of a string Also fixed a bug in lexing of string literals.
1998-11-27Trivial 15-line bison excercise: Implemented expressions includingMartin Mares
user-defined numeric symbols. Whenever possible, use `expr' instead of `NUM' to get full express ion power :-)
1998-11-27Added generator of default names.Martin Mares
1998-11-27Lexical analyser.Martin Mares