Commit graph

394 commits

Author SHA1 Message Date
Pavel Machek
b093c328f5 Updates to both programmers and users doc 2000-06-05 12:52:57 +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
Martin Mares
f7667ba1c4 When cloning a rte and replacing its rta, remember to free the old one
so that we don't leak memory. Thanks go to the resource tracking system
for quickly discovering the source of leakages.
2000-06-04 18:46:30 +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
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
0b1cad8162 Complain when filter does not end in accept nor reject. 2000-05-31 21:50:13 +00:00
Pavel Machek
24e1e2005b Another testbed for filters. 2000-05-30 11:09:09 +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
e66e6c2119 If community list is not defined, act as it is empty. 2000-05-19 16:57:40 +00:00
Pavel Machek
9f0d45d634 Finished cleanng up mess: multiplication reinstalled. 2000-05-17 12:14:05 +00:00
Martin Mares
b1c9d87161 Fixed the horrible mess Pavel has created with his last commit. 2000-05-16 22:37:53 +00:00
Pavel Machek
a96a979d5b Line numbers for runtime errors (what's wrong with cvs? I could not
commit this from home)
2000-05-16 18:50:51 +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
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
ab1129c1bd Added skeleton Doc files for the whole developer's documentation. 2000-05-05 17:17:42 +00:00
Martin Mares
9a220cabbc #ifdef out lots of debugging information.
The long resource/routing table dump printed upon startup is gone now
and if you wish to see it, just send bird SIGUSR1 or use the `debug'
commands.
2000-05-04 20:52:28 +00:00
Pavel Machek
2337ade754 Moved documentation to top of file, where it belongs. 2000-04-30 18:47:48 +00:00
Pavel Machek
8c62d6e3b6 Minor documentation update. 2000-04-29 17:48:38 +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
ff95080f92 Cleanup of dead code + example documentation for two functions. 2000-04-28 09:48:28 +00:00
Pavel Machek
b0c9c21c29 Small cleanup. 2000-04-26 09:38:07 +00:00
Pavel Machek
2e5a8735f4 filter_same should now work with path masks. 2000-04-26 09:36:47 +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
471bd6c30b Marked place where new enums belong. 2000-04-26 07:47:47 +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
0150e5211a Cleaned up mess with types in e,a and e,S. Dynamic attributes should
now work.
2000-04-17 14:12:02 +00:00
Martin Mares
74a7da482b Adding of dynamic attributes is hopefully correct now. 2000-04-17 13:41:50 +00:00
Pavel Machek
3bbc4ad6ad Special hack for atomic_aggr. 2000-04-17 12:40:38 +00:00
Pavel Machek
708711c373 Community lists can be now accessed as dynamical attributes. Mj:
please create such dynamic atribute for bgp.
2000-04-17 12:38:24 +00:00
Pavel Machek
913ce95b08 EAF_ORIGINATED done right. 2000-04-17 11:52:32 +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
991c36b509 Use EAF_ORIGINATED as mj wanted. mj: check this! 2000-04-17 11:37:05 +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
159fa4cea9 Finish moving of path matching. Use int_set_print from core for
printing community lists.
2000-04-17 11:20:00 +00:00
Pavel Machek
2a40efa5e6 as_path_match moved to a-path.c 2000-04-17 11:11:33 +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
ecd25633bd Use printing routine from nest/ instead of our own. 2000-04-17 10:54:01 +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
0a40e97328 as_path_prepend is usable outside bgp. 2000-04-12 14:12:37 +00:00
Pavel Machek
a2d157463a One less shift/reduce conflict. 2000-04-12 14:05:37 +00:00
Pavel Machek
ac7a2145cc f_new_dynamic_attr gets third argument, type as filters know it. 2000-04-12 14:02:04 +00:00
Martin Mares
2803c9ddbe Minor updates by Pavel. 2000-04-12 13:55:53 +00:00
Martin Mares
66d573d490 Attribute type hack. 2000-04-12 13:55:30 +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
78c6217c1e Path printing is now much nicer: not having to put it backward
simplifies it. (Sorry for previous commit, cvs is naughty).
2000-04-12 10:34:45 +00:00
Pavel Machek
9196e9f8f9 Commit fixes. 2000-04-10 16:36:40 +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
798df5b1ab When processing ACCEPT/REJECT carrying no message, don't print
trailing newline.

I hope the fix is correct, but please check.
2000-04-01 09:15:55 +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
3cf4a2e2b0 Removed lots of superfluous includes.
Use debug() instead of printf().
2000-03-31 23:35:59 +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
3076b5aedc Renamed FF_OUTGOING to FF_FORCE_TMPATTR which much better fits the semantics.
Call rte_cow() instead of rte_do_cow(), so that COW works properly.

Stripped "\n" off several (de)bug messages.
2000-03-30 08:50:30 +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
Martin Mares
81ce667b7b Don't crash when filter_same() gets called on FILTER_ACCEPT or FILTER_REJECT. 2000-03-12 22:40:07 +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
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
62ab789de5 Added type parameter to f_new_dynamic_attr. 2000-03-01 14:42:59 +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
9a4037d408 filter_same() implemented. Don't bet on it, yet. 2000-01-31 17:44:22 +00:00
Pavel Machek
70844a6a46 Updated docs about filters, and added fixme. 2000-01-26 21:28:53 +00:00
Martin Mares
30a6108ccc Added filter_same() for comparision of two filters.
Pavel, please implement this as soon as possible.
2000-01-16 17:49:32 +00:00
Pavel Machek
60d7d10e6f Added fixme. 1999-12-18 20:39:53 +00:00
Martin Mares
d46ffc97ff Kicked off F_MODIFY (not generated nor used) 1999-12-16 12:18:19 +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
Martin Mares
2ad6dcdb2c Make ACCEPT/REJECT actually return the result... 1999-12-01 15:07:06 +00:00
Pavel Machek
7e1f99719e accept should behave as return, not running any commands after it. 1999-12-01 12:54:23 +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
2981814066 Few FIXME's removed from auth, few FIXME's added to filter. 1999-08-20 09:59:39 +00:00
Martin Mares
9a706f32af Added missing structure declarations. 1999-08-03 19:31:11 +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
43fc099b98 Sets of IP addresses should work, now. (From now on it is also
possible to write if 1.2.3.4 < 1.2.3.5, but I'm not sure if it is good
for anything.)
1999-04-13 11:40:04 +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
bad631e048 Oops, typo. 1999-04-12 12:07:15 +00:00
Pavel Machek
8ba2cc064b In case no startup function is defined, don't try to launch it. 1999-04-12 12:01:59 +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
Martin Mares
63a381dbf5 Several filter changes. (Pavel, please check if they are OK.)
o  Changed parameters of f_run. Changed rtein+rteout pair to rte pointer
      passed by reference, added ea_list of temporary attrs again passed
      by reference and finally added a pointer to memory pool for storing
      temporary data (new ea_lists's, temporary rta's etc.).
   o  Re-ordered result codes, so that all accepts come before all rejects.
   o  Introduced FILTER_ACCEPT and FILTER_REJECT dummy values (will be
      used in protocol configurations).
   o  Added filter_name() which returns name of a filter or ACCEPT/REJECT
      for the dummies.
1999-04-05 20:10:31 +00:00
Martin Mares
78d5ec1504 Please don't commit debugging code which makes BIRD exit before anything
actually starts to happen. Grrr.
1999-03-29 20:28:25 +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
3c7ad64c57 Compilation fix for mj. 1999-03-17 13:04:33 +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
Pavel Machek
ca3d562b24 filters_init() renamed to filters_postconfig(). 1999-01-15 18:13:55 +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