Ondrej Zajicek
5f47c4c11e
Changes right-recursion to left-recursion in a filter grammar.
...
Because we don't want to have a limit on a function/filter length.
2010-02-02 00:03:46 +01:00
Ondrej Zajicek
7ea5b00f42
First and last accessors to as_paths.
2009-10-08 15:23:24 +01: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 Zajicek
f429d43482
Removes some remnant of '|' bgp path separator.
2009-06-01 16:20:48 +02:00
Ondrej Filip
9be1086d29
New type variable 'V' defined in filters. This type is checked
...
only for name, never for value in function filter_same()
2009-05-29 23:08:28 +02:00
Ondrej Zajicek
c8a6b9a3d1
Rewrite of buggy AS path matching.
...
Old AS path maching supposes thath AS number appears
only once in AS path, but that is not true. It also
contains some bugs related to AS path sets.
New code does not use any assumptions about semantic
structure of AS path. It is asymptotically slower than
the old code, but on real paths it is not significant.
It also allows '?' for matching one arbitrary AS number.
2009-04-17 01:48:36 +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
e29fa06ece
New read-only route attribute 'proto' added. It returns a string
...
representing a name of the protocol that originated the route.
Strings can be compared using = or matched using ~. Routes can
be filtered, for example:
show route where proto ~ "bgp1*"
2008-11-14 14:50:37 +01:00
Ondrej Zajicek
11cb620266
Implementation of 4B ASN support for BGP
2008-10-26 22:36:08 +01:00
Martin Mares
03e3d184b2
Fix bison input for current build tools, otherwise bison or the compiler
...
will abort the build.
(by Andreas)
2004-05-31 17:44:39 +00:00
Martin Mares
de10a974f2
Added missing semicolons.
2002-11-13 08:46:12 +00:00
Pavel Machek
a5a947d4d8
Fixing error messages.
2000-06-08 10:26:19 +00:00
Martin Mares
bf3eb98eb8
Use nested scopes properly. Updated according to cf_define_symbol() changes.
...
The rest of code doesn't need changing since it doesn't use nesting.
2000-06-04 19:30:55 +00:00
Pavel Machek
5f4aee76a2
Added && and ||.
2000-06-01 08:43:29 +00:00
Pavel Machek
1877dab217
Allow
...
case net {
62.0.0.0/8+:
10.0.0.0/8+:
else: reject;
}
2000-06-01 08:34:30 +00:00
Pavel Machek
1895e81e05
Allow matching on enums:
...
if !(scope ~ [ SCOPE_HOST, SCOPE_SITE ]) then {
print "Failed in test";
quitbird;
}
2000-06-01 08:32:49 +00:00
Pavel Machek
0dc4431cde
Access to all attributes we should be able to access seems to work.
2000-05-30 11:07:22 +00:00
Pavel Machek
26c09e1d25
Added read-only access to all required fields in rta.
2000-05-30 10:42:39 +00:00
Pavel Machek
2bdb5e0083
Cleaning static attributes
2000-05-30 10:23:04 +00:00
Pavel Machek
fe613ecded
Access to few more attributes is needed.
2000-05-30 10:13:32 +00:00
Pavel Machek
ad9074e9ba
Cleaned up warnings.
2000-05-25 15:20:40 +00:00
Pavel Machek
9a09a64bb4
Use ? in path matching to avoid /* trap.
2000-05-25 14:58:38 +00:00
Pavel Machek
72282e2a1b
Fixed comment not to be misleading.
2000-05-25 12:33:15 +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
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
1c20608e02
Added f_eval_int() and EVAL configuration command.
2000-05-15 10:49:38 +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
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
Pavel Machek
b0c9c21c29
Small cleanup.
2000-04-26 09:38:07 +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
7d6eebae3b
Create syntax sugar for add/delete/prepend, so xyzzy.prepend(123) is
...
possible. That means that milestone 3 was reached.
2000-04-20 10:25:51 +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
afc54517db
Prepend and creation of empty path should work, but it has strange
...
syntax for now.
2000-04-17 10:16:47 +00:00
Pavel Machek
a2d157463a
One less shift/reduce conflict.
2000-04-12 14:05:37 +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
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
77de68825c
BGP_PATH masks now actually work as data type.
2000-04-12 12:10:37 +00:00
Pavel Machek
7f77e25002
Functions for matching paths added, tested lightly.
...
Functions for working with community lists added, they compile.
This should not be definitive place for this stuff.
2000-04-10 15:07:43 +00:00
Martin Mares
b157361533
SOURCE should really refer to rta->source, not rta->gw.
...
Please check that all rta attributes are available, I guess that at
least rta->dest is missing.
2000-04-01 09:15:10 +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
Pavel Machek
0a06a9b8b3
f_run gets one more parameter to distinguish between in and out modes.
2000-03-29 09:02:00 +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
e4a73dbfcb
CONST() is now gone
2000-03-09 13:21:40 +00:00
Martin Mares
9f4929e749
Renamed EAF_INLINE to EAF_TEMP to make the name reflect the real meaning.
2000-03-04 22:30:44 +00:00
Martin Mares
a58dad6238
Please *think* when defining operator priorities.
...
(-: num_of_parser_conflicts -= 42 :-)
2000-03-04 21:19:10 +00:00
Pavel Machek
d4d7562806
Avoid being exponential, do not allow ! =
2000-03-02 22:23:18 +00:00
Pavel Machek
31e79264a2
tmp_attrs fixed.
...
I do not know if it is right since mj ingores talk once started :-(.
2000-03-01 14:31:31 +00:00
Martin Mares
db1326aa5e
Dynamic attributes are now declared in per-protocol grammar files instead
...
of filter/config.Y. Bird now compiles even if you disable RIP.
Removed RTA and IMPOSSIBLE tokens (unused).
Removed superfluous comment in filter.h.
I've tried to do my best, but Pavel, please check these changes.
2000-03-01 11:32:23 +00:00
Pavel Machek
2d496d2028
Get rid of 'ab'-s, added return to functions.
2000-02-25 11:15:26 +00:00
Pavel Machek
70844a6a46
Updated docs about filters, and added fixme.
2000-01-26 21:28:53 +00:00
Pavel Machek
60d7d10e6f
Added fixme.
1999-12-18 20:39:53 +00:00
Pavel Machek
2e18b87dcf
Disallow rta.net syntax.
1999-12-08 12:51:26 +00:00
Pavel Machek
6c14255dd6
Make rta. syntax optional.
1999-12-08 10:15:51 +00:00
Martin Mares
430da60fa2
Implemented `show route where <condition>' command.
...
Pavel, please check my addition to filter/config.Y.
1999-12-02 14:04:44 +00:00
Pavel Machek
6781e5213b
FIXME's cleaned up: I have actually fixed things without killing
...
comments.
There are no urgent FIXME's in filters. Perhaps we should start with
documentation?
1999-12-01 11:39:58 +00:00
Pavel Machek
4aa885a53c
Filters: fix rta access to use ->aux field.
1999-11-25 13:42:49 +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
8f013d9ca4
Sorry, previous commit did not even compile.
1999-11-24 12:09:58 +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
f31156ca21
Filters: first parts of extended attributes being read-write. It can
...
not actually work since I do not do rta/rte cow, yet.
1999-11-18 14:29:10 +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
Martin Mares
fd54b60266
ENUM's are now recognized as constants.
1999-11-15 11:36:09 +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
Pavel Machek
4ed8718a19
Shift/reduce conflict goes away _and_ if/then/else works.
1999-11-11 13:27:59 +00:00
Pavel Machek
1183b6b229
Enums do not work, this is testcase.
1999-11-10 13:59:13 +00:00
Pavel Machek
cb8034f42c
First try on enumerational types.
...
Mj's noassoc removed: this brings back shift/reduce conflict but
it makes parser actually work. Mj please check it. IF/THEN/ELSE still
will not work.
1999-11-10 13:44:29 +00:00
Pavel Machek
2f702671b4
No more shift/reduce conflicts.
1999-11-10 13:07:18 +00:00
Martin Mares
4995564570
Shift/reduce conflicts in IF/THEN/ELSE rules solved.
1999-11-10 13:05:57 +00:00
Pavel Machek
f453665704
Enumerational types, defined keyword added.
1999-11-10 12:44:07 +00:00
Pavel Machek
3c989eb4a7
Fixed comments about shift/reduce conflicts.
1999-11-04 14:05:40 +00:00
Pavel Machek
ae3e1af2a8
Add possibility of local variables.
1999-11-04 14:03:45 +00:00
Pavel Machek
91447965fe
Possibility to access first extended attributes.
1999-11-04 13:33:30 +00:00
Pavel Machek
6dc7a0cb39
Filters now do not allow function (int arg; int arg2; ).
1999-11-03 22:23:01 +00:00
Pavel Machek
41be4444f2
switch() { } done right.
1999-10-28 21:03:36 +00:00
Pavel Machek
d3dd620b96
Filters: permit variables of prefix types, cleanup around
...
variables. TODO list added, hopefully complete. Use new features of
filters in bird.conf
1999-10-12 06:27:42 +00:00
Pavel Machek
720d911d77
Added constants of type prefix and pair, added their printing
1999-10-07 14:10:08 +00:00
Pavel Machek
c9f8c1a855
FIXME's added. Hopefully fixme list is now complete for filters.
1999-10-07 13:38:26 +00:00
Pavel Machek
7db7b7db60
Case arg { 1: printf "one"; } works. You can not use two commands
...
after one label, yet.
1999-09-29 14:24:58 +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
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
Pavel Machek
36bbfc704c
Updated filters: they now actually see IP/pxlen of net being filtered,
...
gateway, and who told us, so they can do usefull jobs from now on.
1999-04-19 18:41:56 +00:00
Pavel Machek
38506f71b0
Sets of integers now actually work. Sets of IP will work as soon as
...
compare function is ready.
1999-04-12 19:58:18 +00:00
Pavel Machek
2db3b2887e
Decrease number of warnings.
1999-04-10 09:45:08 +00:00
Pavel Machek
23b1539bf9
Filters upgraded - a bit. Moved code to filter.c because it is where
...
it belongs. (f-util.c stays there for auxiliary and non-important things.)
1999-04-07 12:11:08 +00:00
Pavel Machek
ba92164871
Update of filters towards new interface.
1999-03-29 20:21:28 +00:00
Martin Mares
e0f2e42f4f
A couple of filter tweaks:
...
o Introduced struct filter which serves as an external reference
to filter. Using struct symbol for this is unwise since it doesn't
allow extra information attached to the filter and it also forces
all filters to be named.
o Implemented config rule 'filter' which matches either named filter
or an embedded unnamed filter (`{ <filter> }').
o Fixed totally bogus comment at the top of filter.h.
o Added a missing prototype for f_run() to filter.h.
1999-03-17 14:29:39 +00:00
Pavel Machek
d36d838df5
accept & reject should now work
1999-03-17 10:19:07 +00:00
Pavel Machek
2575593e0f
Resolved conflicts, you no longer need to wrap constants in const()
1999-03-09 14:45:27 +00:00
Pavel Machek
b700582445
Filters are now a tiny bit stronger (if is actually working ;-)
1999-03-08 20:30:06 +00:00
Pavel Machek
84c7e1943f
Add interface for running filters (please comment!), avoid bison warnings
1999-03-02 19:49:28 +00:00
Pavel Machek
292099d55f
Few fixes in parsing of filters
1999-02-03 12:28:16 +00:00
Martin Mares
c9b6670608
Original expr' is back, filter expressions renamed to
term'.
...
In the future, we'll allow any filter term in place of `expr' and we'll
just evaluate it immediately, but not now as we have no evaluation
routines.
1999-01-15 18:04:28 +00:00
Pavel Machek
b9d70dc84e
Filters, second try. This time they have their own directory.
1999-01-15 16:49:17 +00:00