Commit graph

121 commits

Author SHA1 Message Date
Ondrej Zajicek (work) 66dbdbd993 BGP: Support for large communities
Add support for large communities (draft-ietf-idr-large-community),
96bit alternative to RFC 1997 communities.

Thanks to Matt Griswold for the original patch.
2016-10-03 12:48:56 +02:00
Pavel Tvrdik 5de0e848de filter/test.conf: fixes formating 2016-06-30 15:00:47 +02:00
Ondrej Zajicek (work) 122deb6d5b Filters: Fixes pm_same() w.r.t. ASN ranges and ASN expressions
This is necessary for proper detection of filter changes during
reconfigurations.
2016-06-09 00:30:41 +02:00
Ondrej Filip a0fe1944d1 Add AS# ranges to bgpmask. 2016-06-08 16:22:44 +02:00
Ondrej Zajicek (work) 04632fd77f Follow-up work on integration 2015-12-24 15:56:04 +01: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 6285793f18 Replaces function name in test.conf as it collided with new keyword. 2014-07-07 22:23:37 +02:00
Ondrej Zajicek 56027b5cbd Minor fix in log_commit() w.r.t. changes in BFD branch. 2013-11-22 21:58:43 +01:00
Ondrej Zajicek 0aeac9cb7f Merge commit 'origin/bfd' 2013-11-22 02:48:44 +01:00
Ondrej Zajicek f8f2419d4c Additional filter test case. 2013-11-20 13:30:11 +01:00
Ondrej Zajicek 0e175f9f0f Fixes some BFD bugs and makes logging thread-safe. 2013-10-05 20:12:28 +02:00
Ondrej Zajicek 7ccb36d330 Implements C.len operator for clist and eclist types.
Thanks to Sergey Popovich for the original patch.
2013-10-02 14:57:29 +02:00
Ondrej Zajicek 28a10f84cb Some fixes in filter code.
Thanks to Sergey Popovich for original patches.
2013-10-02 14:41:37 +02:00
Ondrej Zajicek bff9ce5130 Extends delete/filter operators to work no bgp_paths. 2013-08-15 01:06:47 +02:00
Ondrej Zajicek 1103b32e83 Allows to define constants of all filter types. 2013-07-25 22:33:57 +02:00
Ondrej Zajicek cc31b75a8f Implements 'bgppath ~ int set' filter op. 2013-07-09 23:27:10 +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 0888a737b0 Extends set operations in filters.
Allows add/filter/delete clist on clist (set algebra on clists).

Allows number ~ bgppath match.
2012-03-15 21:07:58 +01:00
Ondrej Filip 48ec367aab Configuration can include other files. 2011-09-11 21:21:47 +02:00
Ondrej Zajicek 42a0c05408 BGP Extended communities. 2011-08-14 13:55:02 +02:00
Ondrej Zajicek e08d2ff08e Adds filter clist operation. 2011-06-26 17:09:24 +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 Filip 4fc36f394e This adds (*,x) functionality. 2011-03-26 14:18:56 +01:00
Ondrej Zajicek 0aa88530ad Convert && and || to shortcut boolean operators. 2011-03-23 13:40:46 +01: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 0d1b3c4c0e Changes print-like filter commands to use a log instead of a stderr.
And extends the log subsystem to better handle that.
2010-09-20 13:01:01 +02:00
Ondrej Filip 946dc15c92 Documentation update and improvement of tests related to expressions in sets. 2010-08-03 17:35:34 +02:00
Ondrej Filip 4733b49ed6 Syntax of sets improved. 2010-08-03 15:16:25 +02:00
Ondrej Zajicek ba5c0057ed Extends pair set syntax, matching and deleting against clist.
Expressions like (123,*) can be used in pair set literals, clists can be
matched against pair sets (community ~ pairset) and pair sets can be
used to specify items to delete from clists (community.delete(pairset)).
2010-05-22 22:47:24 +02:00
Ondrej Zajicek d759c1a6f8 NEWS and version update. 2010-04-09 17:42:39 +02:00
Ondrej Zajicek 126683feed Filter language updates; new route attributes and datatype.
- Adds bgp_originator_id and bgp_cluster_list route attributes.
 - Adds dotted quad filter datatype (for router IDs, used by
   bgp_originator_id and ospf_router_id route attributes).
 - Fixes pair ~ pair set matching.
 - Documentation updates.
2010-03-29 19:29:03 +02:00
Ondrej Zajicek aa46124804 Clear local variables in filters and functions.
Fixes crash when used uninitialized variables.
This problem was surprisingly tricky to fix.
2010-03-19 09:41:18 +01:00
Ondrej Zajicek dfd48621d1 Replaces the algorithm for building balanced trees.
Changes the time complexity of the algorithm from O(n^2) to O(n*log(n)).
This speeds up loading of huge DEC-IX config from 128 s to 15 s. It also
makes the code significantly simpler.
2010-02-17 22:11:42 +01:00
Ondrej Filip 0efd646278 Define symbols as text between ''. 2010-02-10 12:30:14 +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 4cdd078453 Implements protocol-specific router id and updates documentation. 2009-10-12 23:31:42 +02:00
Ondrej Zajicek 5004d02cb9 Merge branch 'master' into dev 2009-06-26 01:06:12 +02:00
Ondrej Zajicek 92a72a4cbd Adds support for dynamic pair and bgp mask expressions. 2009-06-01 19:32:41 +02:00
Ondrej Filip a6c9f0648d Missing boolean comparison added. 2009-05-28 13:37:04 +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
Pavel Machek 4bb18dd2da Fix i_same for 'c' instruction. 2000-06-08 16:57:41 +00:00
Pavel Machek 64ba9f7bcc Do not try to divide by zero. 2000-06-02 08:01:12 +00:00
Pavel Machek 5f4aee76a2 Added && and ||. 2000-06-01 08:43:29 +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
Pavel Machek c5a06f65ee Allow other operations than +. 2000-05-15 12:27:45 +00:00
Pavel Machek cbfd671f11 Allow accessing defined symbols. 2000-05-15 12:19:26 +00:00
Pavel Machek 6be662d917 Use new eval mechanism for testing filters. 2000-05-15 12:07:09 +00:00
Pavel Machek f71bded6e9 Bugfix in i_same (comparing of paths still does not work). 2000-04-26 09:30:12 +00:00
Pavel Machek 7a86a8b08d Added code for testing filters. 2000-04-26 08:03:50 +00:00
Pavel Machek 94d9dfa47a Startup renamed to __startup: it is internal function and mj already
uses word startup in other context.
2000-04-26 07:31:45 +00:00
Pavel Machek 2bd2de0188 pair ~ community list matching works. 2000-04-17 11:49:21 +00:00
Pavel Machek 4444ed2b26 It is good idea to separate entries in list _somehow_. Adding/deleting
to community lists from filters now works.
2000-04-17 11:42:08 +00:00
Pavel Machek 9c400ec9dd Int sets moved to core. It is now possible to have variable of type clist. 2000-04-17 11:34:38 +00:00
Pavel Machek 684c6f5a0e Path_getlen moved to nest and length was made callable from filters. 2000-04-17 11:06:39 +00:00
Pavel Machek 4b641bab52 Path matching now actually works, including / * 1 2 3 * /. 2000-04-17 10:50:03 +00:00
Pavel Machek e399b6f6ad Path and path matching seem to work, now. 2000-04-17 10:42:28 +00:00
Pavel Machek 10a5360886 Filters now know type path. It is possible to declare variable of type
path, but it is not possible to write constant of type path.

It should be possible to print paths and match them.
2000-04-12 13:31:39 +00:00
Pavel Machek 77de68825c BGP_PATH masks now actually work as data type. 2000-04-12 12:10:37 +00:00
Pavel Machek 995e5894cd 1 less shift/reduce conflict
print now takes arguments separated by ,

[ 1.2.3.0/24 .. 3.4.5.0/8 ] is now forbidden

[ 1.2.3.0/8 ] now actually works
2000-03-09 14:47:43 +00:00
Pavel Machek d4d7562806 Avoid being exponential, do not allow ! = 2000-03-02 22:23:18 +00:00
Pavel Machek 2d496d2028 Get rid of 'ab'-s, added return to functions. 2000-02-25 11:15:26 +00:00
Pavel Machek 9a4037d408 filter_same() implemented. Don't bet on it, yet. 2000-01-31 17:44:22 +00:00
Pavel Machek 2e18b87dcf Disallow rta.net syntax. 1999-12-08 12:51:26 +00:00
Pavel Machek 455ca441d9 Check that prefixes are really prefixes + fix config file to
comply. (:-( 1.2.3.4/8 looks nicer than 1.0.0.0/8).
1999-11-24 12:16:31 +00:00
Pavel Machek 48f9e01954 Filters: write access to dynamic attributes should actually work. It
would be nice to find method of testing such beasts.
1999-11-24 12:04:32 +00:00
Pavel Machek c7b43f33ae Split inst->code into inst->code and inst->aux. Both are only 16 bit,
so aux is suitable for storing type but not much more.
1999-11-18 14:01:36 +00:00
Pavel Machek 346a12c210 You can now print enum. 1999-11-18 13:21:52 +00:00
Pavel Machek 4515bdba4f Fixed order of arguments for function call.
Enumeration types should work once CF_ENUM() is ready.

Created test.conf for testing of filters. (I'm currently thinking
about ./tests in root directory which will just fire all available
tests...)
1999-11-11 13:55:39 +00:00