Commit graph

286 commits

Author SHA1 Message Date
Ondrej Zajicek (work) 8860e991f6 Merge branch 'master' into int-new 2016-11-08 19:27:58 +01:00
Ondrej Zajicek (work) c8cafc8ebb Minor code cleanups 2016-11-08 17:46:29 +01:00
Ondrej Zajicek (work) cc5b93f72d Merge tag 'v1.6.2' into int-new 2016-11-08 17:04:29 +01:00
Jan Moskyto Matejka 3e236955c9 Build: switch on -Wextra, get rid of most of the warnings
There are several unresolved -Wmissing-field-initializers on older
versions of GCC than 5.1, all of them false positive.
2016-11-01 14:52:54 +01:00
Pavel Tvrdik 768d5e1058 Add !~ operator to filter grammar 2016-09-21 13:35:52 +02:00
Ondřej Surý 61e6725335 Include <stdint.h> in cf-lex.l to avoid UINTx_MAX redefinition 2016-08-16 09:23:55 +02:00
Pavel Tvrdík 8f01879c56 cppcheck: fix va_end() functions 2016-06-27 15:07:50 +02:00
Jan Moskyto Matejka 925aa14912 After-master-merge simple fixes.
BSD lib/setkey.h and lib/sysio.h #include fixes.
OpenBSD's flex needs -o param without space.
V6ONLY for SK_IP fix.
2016-05-24 12:12:14 +02:00
Ondrej Zajicek (work) af678af0d5 Merge remote-tracking branch 'origin/master' into int-new 2016-05-12 18:03:23 +02:00
Ondrej Zajicek (work) 286e2011d2 Miscellaneous minor fixes 2016-05-12 16:04:47 +02:00
Pavel Tvrdik 8e433d6a52 Prog Doc: Complete several missing parameters 2016-05-12 15:49:44 +02:00
Jan Moskyto Matejka 7152e5efbb Build system reworked to one global Makefile with includes and no nesting
Also removed the lib-dir merging with sysdep. Updated #include's
accordingly.

Fixed make doc on recent Debian together with moving generated doc into
objdir.

Moved Makefile.in into root dir

Retired all.o and birdlib.a
Linking the final binaries directly from all the .o files.
2016-05-10 14:07:34 +02:00
Pavel Tvrdík 1a7daab126 cf_error(char *msg, ...) -> cf_error(const char *msg, ...) 2016-03-10 16:07:44 +01:00
Ondrej Zajicek (work) f4a60a9bc4 Channels - explicit links between protocols and tables
The patch adds support for channels, structures connecting protocols and
tables and handling most interactions between them. The documentation is
missing yet.
2016-02-01 10:28:50 +01:00
Pavel Tvrdík 7eb9e79648 Add condition for max_pxlen by ROA grammar 2016-01-21 10:37:08 +01:00
Pavel Tvrdík a4caa1c0a3 Use net_addr pointer for net_addr_roaX
net_addr_roa6 is bigger than net_addr

Thanks to Ondrej Zajicek for notice
2016-01-21 10:37:08 +01:00
Pavel Tvrdík 650b418942 Delete old ROA code 2016-01-20 16:46:58 +01:00
Pavel Tvrdík 513ad0a85e Add ROA net_addr to grammar
Example:
  protocol static
  {
    route 10.110.0.0/16 max 16 as 1000 blackhole;
    route 10.120.0.0/16 max 24 as 1000 blackhole;
    route 10.130.0.0/16 max 24 as 2000 blackhole;
    route 10.130.128.0/18 max 24 as 3000 blackhole;
    ...
  }
2016-01-20 16:46:30 +01:00
Ondrej Zajicek (work) e691d16a63 Explicit ip4_addr / ip6_addr printf support 2015-12-29 17:12:47 +01:00
Ondrej Zajicek (work) 04632fd77f Follow-up work on integration 2015-12-24 15:56:04 +01:00
Jan Moskyto Matejka 9656dce72e ROA code switchoff 2015-12-20 13:04:07 +01:00
Jan Moskyto Matejka 5e173e9f63 Stop perusing f_prefix for non-prefix-set uses
Multiple changes by Ondrej Santiago Zajicek
2015-12-19 23:49:47 +01:00
Jan Moskyto Matejka d7661fbe9d Removed BITS_PER_IP_ADDRESS, MAX_PREFIX_LENGTH, BIRD_AF
Explicit setting of AF_INET(6|) in IP socket creation. BFD set to listen
on v6, without setting the V6ONLY flag to catch both v4 and v6 traffic.

Squashing and minor changes by Ondrej Santiago Zajicek
2015-12-19 15:57:09 +01:00
Ondrej Zajicek (work) 04ae8ddaa1 Merge branch 'master' into int-new 2015-11-25 14:24:35 +01:00
Ondrej Zajicek (work) d44e686e9b Follow-up commit on integrated BIRD
Use net_addr for interface address prefixes, support net_addr in
configuration parser.
2015-11-12 02:03:59 +01:00
Ondrej Zajicek (work) 9b9a7143c4 Conf: Fixes bug in symbol lookup during reconfiguration
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-09 00:42:02 +01:00
Ondrej Zajicek (work) fe9f1a6ded Initial commit on integrated BIRD
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-11-05 12:48:52 +01:00
Pavel Tvrdík ae80a2de95 unsigned [int] -> uint 2015-06-08 02:24:08 +02:00
Ondrej Zajicek 8bcb5fb1e8 Implement latency tracking, internal event log and watchdog 2015-03-02 09:41:14 +01:00
Ondrej Zajicek a1beb8f3ee Relax BGP neighbor parameter
Permit specifying neighbor address, AS number and port independently.
Add 'interface' parameter for specifying interface for link-local
sessions independently.

Thanks to Alexander V. Chernikov for the original patch.
2015-02-22 13:50:58 +01:00
Ondrej Zajicek bc7f4e0e34 Bump max symbol length to 64.
And move the constant to conf.h header.

Thanks to Alexander Chernikov for the patch.
2015-02-21 12:42:31 +01:00
Ondrej Zajicek 88a183c6c9 Integrated IP functions. 2014-10-24 11:11:43 +02:00
Ondrej Zajicek dcde7ae597 Allows to configure different remote port for BGP sessions.
Thanks to João Taveira Araújo for the original patch.
2014-10-02 12:52:50 +02:00
Ondrej Zajicek b2f008378a Allows more constants in set literals.
Thanks to Michael Fincham for the bugreport.
2014-10-02 12:52:50 +02:00
Ondrej Zajicek 9eceab33f9 String constants could be used for string option values.
Thanks to Frederik Kriewitz for the patch.
2014-05-29 23:05:03 +02:00
Ondrej Zajicek 0c3d9dacaf Fixes file descriptor leak when parser ends with error.
Thanks to MrBr for the bugreport.
2014-03-25 14:58:00 +01:00
Ondrej Zajicek 0c791f873a BGP graceful restart support.
Also significant core protocol state changes needed for that,
global graceful restart recovery state and kernel proto support
for recovery.
2014-03-20 14:07:12 +01:00
Ondrej Zajicek 90eb5e7a8b Use ISO 8601 timeformats by default. 2013-11-25 13:44:07 +01:00
Ondrej Zajicek 0aeac9cb7f Merge commit 'origin/bfd' 2013-11-22 02:48:44 +01:00
Ondrej Zajicek 0e175f9f0f Fixes some BFD bugs and makes logging thread-safe. 2013-10-05 20:12:28 +02:00
Ondrej Zajicek 6a8d3f1c1f BFD work in progress.
Now it compiles and mostly works.
2013-09-16 23:57:40 +02:00
Ondrej Filip 1f64a487a0 Symbol names enclosed by apostrophes can contain colons. 2013-08-15 13:29:33 +02:00
Ondrej Zajicek 1103b32e83 Allows to define constants of all filter types. 2013-07-25 22:33:57 +02:00
Ondrej Filip 8c4da7e01d Symbol names enclosed by apostrophes can contain DOTs. 2013-02-10 19:17:38 +01:00
Ondrej Zajicek 79b4e12e60 Implements interface masks for choosing router id.
Router ID could be automatically determined based of subset of
ifaces/addresses specified by 'router id from' option. The patch also
does some minor changes related to router ID reconfiguration.

Thanks to Alexander V. Chernikov for most of the work.
2012-12-27 12:56:23 +01:00
Ondrej Zajicek a92cf57dd6 Implements undo command and optional timeout for configuration
Several new configure command variants:

configure undo - undo last reconfiguration
configure timeout - configure with scheduled undo if not confirmed in timeout
configure confirm - confirm last configuration
configure check - just parse and validate config file
2012-12-26 12:40:48 +01:00
Ondrej Zajicek 4be266a983 Implements wildcard matching in config file include.
Also fixes some minor bugs in include.

Thanks Kelly Cochran for suggestion and draft patch.
2012-07-18 19:29:33 +02:00
Ondrej Zajicek af582c4811 Route Origin Authorization basics.
- ROA tables, which are used as a basic part for RPKI.
 - Commands for examining and modifying ROA tables.
 - Filter operators based on ROA tables consistent with RFC 6483.
2012-03-18 17:32:30 +01:00
Ondrej Zajicek 0f808c066f Adds filtering to 'show symbols' command.
Thanks Alexander V. Chernikov for the original patch.
2012-03-16 12:47:12 +01:00
Ondrej Zajicek 20ab192bec Adds filtering to 'show ospf lsadb' command.
Thanks Alexander V. Chernikov for the original patch.
2012-03-16 12:12:26 +01:00
Ondrej Zajicek 69a8259c5e Allows sticky link-local neighbors.
Allows using NEF_STICKY neighbors with link-local addresses. This is
used for static route nexthops, they can be specified like fe80::1%eth0
.
2012-01-01 12:14:42 +01:00
Ondrej Zajicek c32c3f88f0 Fixes parsing larger numbers on 64bit platforms. 2011-12-22 13:44:43 +01:00
Ondrej Zajicek 60fd666b79 Fixes missing header. 2011-11-10 09:22:38 +01:00
Ondrej Zajicek a7f23f581f Implements protocol templates.
Based on the patch from Alexander V. Chernikov.
Extended to support almost all protocols.
Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
2011-11-07 00:31:23 +01:00
Ondrej Zajicek 9b7fdfc84a Fixes for include. 2011-10-10 01:41:08 +02:00
Ondrej Filip 48ec367aab Configuration can include other files. 2011-09-11 21:21:47 +02:00
Ondrej Zajicek b8cc390e7e Fixes several problems in filter syntax.
- 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-05-06 22:00:54 +02:00
Ondrej Zajicek 26d92bb892 A hack to distinguish if..else from else: in case.
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-23 12:49:53 +01:00
Ondrej Zajicek 93e868c730 Implements Router Advertisement protocol. 2011-03-13 11:33:50 +01:00
Ondrej Zajicek 112d71a73f Fixes syntactic priority of '.' .
Dot in expressions like net.len definitely should have the highhest
priority.
2010-10-08 14:25:53 +02:00
Ondrej Zajicek 506fa1a73e Merge several fixes suggested by Joakim Tjernlund. 2010-05-02 22:41:40 +02:00
Ondrej Zajicek 44d4ab7a96 Configurable syslog name.
Also fixes a bug in syslog initialization.
2010-04-07 15:34:45 +02:00
Ondrej Zajicek 97e46d28ff Adds check for no protocol and some minor CLI fixes.
- Adds check to deny config file with no specified protocol to prevent
  loading of empty config file.
- Moves CLI init before config parse to receive immediate error message
  when cannot open control socket.
- Fixes socket name path check and other error handling in CLI init.
2010-03-17 12:19:22 +01:00
Ondrej Zajicek e81b440f68 Fix configure to enable warnings and fix most of them. 2010-02-21 14:34:53 +01:00
Ondrej Zajicek e304fd4bcf Implements pattern match for 'show protocols' command.
And generally consolidates protocol commands.
2010-02-20 00:08:07 +01:00
Ondrej Filip 0efd646278 Define symbols as text between ''. 2010-02-10 12:30:14 +01:00
Ondrej Zajicek 76b53a4e20 Adds some log messages related to configure.
Also fixes a bug in the previous patch.
2010-02-06 22:57:51 +01:00
Ondrej Zajicek c37e78510f Makes date/time formats configurable. 2010-02-03 00:19:24 +01:00
Ondrej Filip 1960d20350 Priority for '||' and '&&' fixed. 2010-01-27 23:45:36 +01:00
Ondrej Filip 7515dafc00 Allow multiple || and && statements. 2010-01-27 22:26:45 +01:00
Ondrej Zajicek cf31112f0d Implements MRTdump feature. 2010-01-03 12:17:52 +01:00
Ondrej Zajicek e75d3c74a8 Flex does not need the output of Bison. 2009-08-10 14:36:30 +02:00
Ondrej Zajicek ea9097eaad Fixes parallel runs of Bison.
Previous version of Makefile executed Bison two times (in parallel),
because of two specified targets. I am not sure wheter this is the best
fix.

Previon
2009-08-10 14:13:28 +02:00
Ondrej Zajicek 5b1f877e6e Fixes typo in Makefile 2009-08-10 12:04:25 +02:00
Ondrej Filip 0ac39033c7 Missing dependency added. 2009-08-09 19:43:15 +02:00
Ondrej Zajicek d72cdff411 Replace 'bind' option with 'listen' option.
To be consistent with other daemons.
2009-06-23 11:08:30 +02:00
Ondrej Zajicek bf1aec970e Adds support for soft reconfiguration. 2009-06-19 23:49:34 +02:00
Ondrej Zajicek 789772ed45 Implements option that changes BGP listening socket parametres. 2009-06-18 19:20:07 +02:00
Ondrej Zajicek 874b868544 Implements primary address selection base on 'primary' option. 2009-05-29 22:49:30 +02:00
Ondrej Zajicek b1a597e0c3 Reimplementation of prefix sets.
Prefix sets were broken beyond any repair and have to be reimplemented.
They are reimplemented using a trie with bitmasks in nodes.
There is also change in the interpretation of minus prefix pattern,
but the old interpretation was already inconsistent with
the documentation and broken.

There is also some bugfixes in filter code related to set variables.
2009-03-31 12:55:57 +02:00
Ondrej Zajicek cf18603491 New syntax for bgp_path 2009-03-14 12:43:10 +01:00
Ondrej Zajicek f949163039 New syntax for bgp_path 2009-01-27 17:35:00 +01:00
Ondrej Zajicek 083c43e22e fixes some 64-bit related bugs.
Filter code used 'aux' integer field of 'symbol' struct to store ptr
to next symbol and both 'aux2' and 'def' fields for value.
Changed to just 'def' for value and 'aux2' for ptr to next symbol.
Also another minor bugfix.
2008-12-25 11:55:27 +01:00
Ondrej Zajicek 1567edea8d Bugfix for routing table breaking bug.
Here is a patch fixing a bug that causes breakage of a local routing
table during shutdown of Bird. The problem was caused by shutdown
of 'device' protocol before shutdown of 'kernel' protocol.  When
'device' protocol went down, the route (with local network prefix)
From different protocol (BGP or OSPF) became preferred and installed
to the kernel routing table. Such routes were broken (like
192.168.1.0/24 via 192.168.1.2). I think it is also the cause
of problem reported by Martin Kraus.

The patch disables updating of kernel routing table during shutdown of
Bird. I am not sure whether this is the best way to fix it, I would
prefer to forbid 'kernel' protocol to overwrite routes with
'proto kernel'.

The patch also fixes a problem that during shutdown sometimes routes
created by Bird remained in the kernel routing table.
2008-10-26 23:09:46 +01:00
Ondrej Filip a456788bce New version of flex needs argument separated. 2007-06-20 12:32:39 +00:00
Ondrej Filip 0d3effcf8c Time added in password management. 2005-02-12 22:27:55 +00:00
Martin Mares 7c103b1ee1 Marked unused parameters in core code as such. 2004-06-05 09:10:56 +00:00
Martin Mares 725270cb1d Fixes for the programmer's manual. 2000-06-08 12:37:21 +00:00
Martin Mares 58f7d004fd Fixes to the progdoc. 2000-06-07 13:25:53 +00:00
Martin Mares 2e9b24211a Spelling fixes to progdoc. 2000-06-07 12:29:08 +00:00
Martin Mares 04dc62a011 Nested scopes could never have worked. My fault I wrote such a buggy code,
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-04 19:30:13 +00:00
Martin Mares 58f9453776 Moved parser docs to cf-lex.l, so that the parser compiles. 2000-06-04 15:22:20 +00:00
Martin Mares 06607335ef Documentation. 2000-06-03 18:23:00 +00:00
Martin Mares c0b2f6463f cf_symbol_class_name now recognizes SYM_IPA. 2000-06-03 16:56:00 +00:00
Pavel Machek 5f4aee76a2 Added && and ||. 2000-06-01 08:43:29 +00:00
Martin Mares fcb5f4a725 Updated all the Doc files to new format. 2000-05-31 11:30:18 +00:00
Martin Mares 69a20d2eff Recognize `!'. 2000-05-30 21:46:21 +00:00
Martin Mares 4761efdb43 Tracing of CLI connections/commands can be now controlled
by `debug commands <level>' in the configuration. Level 0 means
no tracing, 1 means connections only, 2 includes all commands.
2000-05-29 22:10:18 +00:00
Pavel Machek 9a09a64bb4 Use ? in path matching to avoid /* trap. 2000-05-25 14:58:38 +00:00
Pavel Machek 60de3356ab Resolved shift/reduce conflict 2000-05-16 14:24:33 +00:00
Martin Mares cc590a11a7 Changed syntax of expressions. Each `expr' can be now either a numeric literal
or a symbol or parenthesised filter expression.
2000-05-15 12:15:18 +00:00
Martin Mares e3f2d5fce3 Cleanup of configuration.
o  Use `expr' instead of `NUM' and `ipa' instead of `IPA',
   so that defined symbols work everywhere.
o  `define' now accepts both numbers and IP addresses.
o  Renamed `ipa' in filters to `fipa'.

Pavel, please update filters to accept define'd symbols as well.
2000-05-15 11:48:23 +00:00
Martin Mares 3b1c523d79 Got rid of startup functions and filters_postconfig().
By the way, how do you expect pointers to fit in an int?
2000-05-15 10:53:56 +00:00
Martin Mares d3abfbc68d Added prefix_or_ipa. 2000-05-13 11:41:26 +00:00
Martin Mares 758458be05 Unified parsing of prefixes.
Had to rename `prefix' in filters to `fprefix'.
2000-05-13 11:17:49 +00:00
Martin Mares ab1129c1bd Added skeleton Doc files for the whole developer's documentation. 2000-05-05 17:17:42 +00:00
Martin Mares 6db8c5a63b pxlen works even in IPv6 mode. 2000-05-04 20:02:19 +00:00
Martin Mares a412f01ea8 Include CF_HDR section in keywords.h as well, so that protocol symbols
can be used in definition of ENUM's.
2000-04-28 15:12:03 +00:00
Martin Mares 2edb31b097 Split CF_HDR section to CF_HDR (only includes) and CF_DEFINES (defines,
C declarations etc.).
2000-04-28 15:11:10 +00:00
Martin Mares 8f6accb5bb Event handlers no longer return re-queue flag. Instead of using it, just
call ev_schedule() on the same handler which should work perfectly now.
2000-04-27 22:28:49 +00:00
Pavel Machek dcab789047 Renamed f_path to f_path_mask -- which is what it really is. Use
linklist instead of array of signed integers for path mask.
2000-04-12 13:07:53 +00:00
Pavel Machek c3edb89ec1 Path masks are needed for filters. 2000-04-12 12:49:53 +00:00
Martin Mares 221135d6bf Include "lib/string.h" instead of <string.h>. It should give us bzero()
and other non-portable functions on all systems.
2000-03-31 23:30:21 +00:00
Martin Mares abf2be7d0c Add internal commands of the client to the command list. 2000-03-12 23:04:04 +00:00
Martin Mares 4327090276 Made `show status' show uptime and time of last reconfiguration. 2000-03-12 22:44:54 +00:00
Martin Mares 6b9fa32080 Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,
several debug() calls converted to DBG().
2000-03-12 21:01:38 +00:00
Pavel Machek c8d5ffafb7 Fix <=, >=, != 2000-03-10 20:21:12 +00:00
Martin Mares f30b86f9d5 Added configuration of default protocol debugging flags. 2000-03-07 21:50:03 +00:00
Martin Mares 16c07e3d51 Removed bogus comment. 2000-03-04 21:27:57 +00:00
Martin Mares a58dad6238 Please *think* when defining operator priorities.
(-: num_of_parser_conflicts -= 42 :-)
2000-03-04 21:19:10 +00:00
Martin Mares aee539f241 Made `datetime' more user friendly. Now it should be a quoted string
of type "dd-mm-yyyy".
2000-03-01 11:42:13 +00:00
Martin Mares 2ca3d9a8fc Defined INVALID_TOKEN which is a token guaranteed to be never generated. 2000-03-01 11:30:16 +00:00
Martin Mares 0223d4fff1 Client: Online help works (Cisco style: just press `?' at the end of a line). 2000-02-17 22:00:13 +00:00
Martin Mares f50b9e48b9 Generate a list of all commands and their help texts for the client to use. 2000-01-19 14:37:56 +00:00
Martin Mares 4b87e256eb Split off general commands to cmds.c.
Added `show symbols' command which dumps whole symbol table together
with symbol types etc.
2000-01-19 12:30:19 +00:00
Martin Mares d272fe22dd Separated `official protocol names' used in status dumps from name templates
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-17 11:52:50 +00:00
Martin Mares ca0edc5395 When a quoted string is encountered, don't forget to copy it to the
config pool before passing it to the parser.
2000-01-16 23:36:53 +00:00
Martin Mares bf8558bc9c Converted shutdown to a kind of reconfiguration, it's no more handled
as a exception in protocol state machines. Introduced a `shutdown'
CLI command. Killed few reconfiguration bugs.
2000-01-16 17:40:26 +00:00
Martin Mares 50fe90edf3 First attempt on dynamic reconfiguration. There are still lots of bugs
and problems to solve, but the hardest part works.
2000-01-16 16:44:50 +00:00
Martin Mares 4ab5331c63 Added type `g' for void (general) pointer. 1999-12-06 13:50:50 +00:00
Martin Mares 7c0cc76ed7 Moved initialization of protocol list to proto.c.
Added sysdep configuration hooks.
1999-12-06 13:44:45 +00:00
Martin Mares f2c6c80a24 I tried to turn on the YYERROR_VERBOSE switch, but bison is buggy as hell,
so it doesn't even compile. Turned it again off and added a comment on it.
1999-12-02 14:03:25 +00:00
Martin Mares efe51e3863 Avoid `default rule can be matched' warning in CLI state. 1999-12-02 12:04:39 +00:00
Martin Mares 730f2e2c8c Added dumping of routing tables (`show route'). This includes filtering. 1999-12-01 15:10:21 +00:00
Martin Mares c9aae7f47f Lexer supports fallback symbol tables and uses them to recognize
symbols from global config when parsing CLI commands.

cf_lex_init_tables() is now called automatically inside the lexer.
1999-11-30 14:03:36 +00:00
Martin Mares 3579376927 cli_msg() moved to cli.h, so that it can be used outside the parser. 1999-11-25 15:34:51 +00:00
Martin Mares ffb59d243a Command line interface now works. 1999-11-17 12:00:21 +00:00
Martin Mares 944f008af7 Defined CF_ENUM. 1999-11-15 11:35:41 +00:00
Martin Mares cbc3183007 SYM_STAT is gone. 1999-11-15 11:34:51 +00:00
Pavel Machek f453665704 Enumerational types, defined keyword added. 1999-11-10 12:44:07 +00:00
Martin Mares df8b85e33f Silly bug. 1999-11-04 13:53:47 +00:00
Martin Mares c8f61a01ea Symbols are not scoped. 1999-11-04 13:51:52 +00:00
Pavel Machek e5005be2b4 You should not follow next two times. 1999-11-03 22:21:26 +00:00
Martin Mares bc2fb68098 Parse CLI commands. We use the same parser as for configuration files (because
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-10-31 17:47:47 +00:00
Pavel Machek 41be4444f2 switch() { } done right. 1999-10-28 21:03:36 +00:00
Martin Mares dce267832a Basic support for IPv6. The system-dependent part doesn't work yet,
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-08-03 19:36:06 +00:00
Pavel Machek 6542ece91a Function calling in filters works - somehow. Calling syntax is
currently very ugly, beware. Variables are not really local - that
needs to be fixed.
1999-07-01 09:11:21 +00:00
Pavel Machek 9d79fec8dc Added notion of datetime 1999-05-26 14:24:32 +00:00
Martin Mares 0e02abfd57 From now we support multiple tables. The master_table variable is
definitely gone. Both rte_update() and rte_discard() have an additional
argument telling which table should they modify.

Also, rte_update() no longer walks the whole protocol list -- each table
has a list of all protocols connected to this table and having the
rt_notify hook set. Each protocol can also freely decide (by calling
proto_add_announce_hook) to connect to any other table, but it will
be probably used only by the table-to-table protocol.

The default debugging dumps now include all routing tables and also
all their connections.
1999-05-17 20:14:52 +00:00
Martin Mares 4107df1d1b Implemented two new symbol handling functions:
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-05-17 20:06:19 +00:00