summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
1999-04-07Portability fixes.Martin Mares
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-04-06ip_pton: Avoid modification of the string we're converting.Martin Mares
1999-04-05Routing table core changes to support full route filtering:Martin Mares
o Introduced rte_cow() which should be used for copying on write the rte's in filters. Each rte now carries a flag saying whether it's a real route (possessing table linkage and other insignia) or a local copy. This function can be expected to be fast since its fast-path is inlined. o Introduced rte_update_pool which is a linear memory pool used for all temporary data during rte_update. You should not reference it directly -- instead use a pool pointer passed to all related functions. o Split rte_update to three functions: rte_update The front end: handles all checking, inbound filtering and calls rte_recalculate() for the final version of the route. rte_recalculate Update the table according to already filtered route. rte_announce Announce routing table changes to all protocols, passing them through export filters and so on. The interface has _not_ changed -- still call rte_update() and it will do the rest for you automagically. o Use new filtering semantics to be explained in a separate mail.
1999-04-05Added some new protocol hooks (look at the comments for better explanation):Martin Mares
make_tmp_attrs Convert inline attributes to ea_list store_tmp_attrs Convert ea_list to inline attributes import_control Pre-import decisions
1999-04-05Changed syntax of attaching filters to protocols to hopefully the finalMartin Mares
version: EXPORT <filter-spec> for outbound routes (i.e., those announced by BIRD to the rest of the world). IMPORT <filter-spec> for inbound routes (i.e., those imported by BIRD from the rest of the world). where <filter-spec> is one of: ALL pass all routes NONE drop all routes FILTER <name> use named filter FILTER { <filter> } use explicitly defined filter For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes the kernel protocol, so that you need to add EXPORT ALL to get the previous configuration of kernel syncer (as usually, see doc/bird.conf.example for a bird.conf example :)).
1999-04-05Several filter changes. (Pavel, please check if they are OK.)Martin Mares
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-05Use a more reasonable pool chunk size: 4080 bytes seem to be a goodMartin Mares
approximation of a integral fraction of page size even if both malloc overhead and chunk header space is counted.
1999-04-03More changes to the kernel syncer.Martin Mares
o Now compatible with filtering. o Learning of kernel routes supported only on CONFIG_SELF_CONSCIOUS systems (on the others it's impossible to get it semantically correct). o Learning now stores all of its routes in a separate fib and selects the ones the kernel really uses for forwarding packets. o Better treatment of CONFIG_AUTO_ROUTES ports. o Lots of internal changes.
1999-04-03Added new protocol hook for dumping of protocol-dependent routeMartin Mares
attributes. Please implement in all protocols.
1999-04-03Defined CONFIG_SELF_CONSCIOUS whenever the kernel scanner is ableMartin Mares
to distinguish between our own routes and alien ones.
1999-04-02Fixed `too many interfaces' cases.Martin Mares
1999-04-02Believe it or not, printf()'s does not work too much without this one.Pavel Machek
1999-04-01Argh, the fix was wrong.Martin Mares
1999-04-01Portability fixes.Martin Mares
1999-04-01First few FreeBSD portability fixes.Martin Mares
1999-03-29Updated the TODO list.Martin Mares
1999-03-29Remember that we can run device syncer without kernel syncerMartin Mares
and vice versa now.
1999-03-29Please don't commit debugging code which makes BIRD exit before anythingMartin Mares
actually starts to happen. Grrr.
1999-03-29Prefer `gm4' over `m4' (due to BSD et al.).Martin Mares
1999-03-29Update of filters towards new interface.Pavel Machek
1999-03-29Clarify resource dumps and include them in the main debugging dump.Martin Mares
1999-03-29Don't try to delete interface routes on CONFIG_AUTO_ROUTES systems.Martin Mares
1999-03-29Added FIXME: If a strange interface appears, ignore it instead of onlyMartin Mares
writing an error message...
1999-03-29Added lp_flush() which flushes contents of a linear pool, leaving all theMartin Mares
memory available for subsequent allocations from the same pool. Both flushing and re-using the memory costs just few instructions.
1999-03-29Moved all system-dependent #include's containing endianity conversionMartin Mares
functions to sysdep header endian.h.
1999-03-29#define NULL if not defined by system includes.Martin Mares
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-27Cleaned up system configuration files -- removed few obsolete parameters,Martin Mares
documented the remaining ones (sysdep/cf/README). Available configurations: o linux-20: Old Linux interface via /proc/net/route (selected by default on pre-2.1 kernels). o linux-21: Old Linux interface, but device routes handled by the kernel (selected by default for 2.1 and newer kernels). o linux-22: Linux with Netlink (I play with it a lot yet, so it isn't a default). o linux-ipv6: Prototype config for IPv6 on Linux. Not functional yet.
1999-03-26Added everything protocols need to know about multiple routing tables,Martin Mares
i.e. struct proto now contains field 'table' pointing to routing table the protocol is attached to. Use this instead of &master_table. Modified all protocols except the kernel syncer to use this field.
1999-03-26Moved to a much more systematic way of configuring kernel protocols.Martin Mares
o Nothing is configured automatically. You _need_ to specify the kernel syncer in config file in order to get it started. o Syncing has been split to route syncer (protocol "Kernel") and interface syncer (protocol "Device"), device routes are generated by protocol "Direct" (now can exist in multiple instances, so that it will be possible to feed different device routes to different routing tables once multiple tables get supported). See doc/bird.conf.example for a living example of these shiny features.
1999-03-26Allow different instances of the same protocol with identical preferences.Martin Mares
1999-03-26Slightly better generator of default protocol instance names.Martin Mares
1999-03-26Don't compile OSPF by default.Martin Mares
1999-03-26Don't try to manipulate neighbor lists for copied interface structures.Martin Mares
This avoids few nasty references to free memory.
1999-03-24Removed our declaration of RTPROT_BIRD since Alexey has assignedMartin Mares
us a real protocol number in 2.2.4 kernel.
1999-03-17rte_update: Check sanity of incoming entries. Throw out (and log) all routesMartin Mares
to bogus prefixes and non-local routes to host scope addresses.
1999-03-17Allow input and output filters (only accept/reject style as we didn't defineMartin Mares
modifying filters yet) to be attached to protocol instances.
1999-03-17A couple of filter tweaks:Martin Mares
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-17Removed the `rta_same' hook since it's no longer needed (all protocolsMartin Mares
needing some local information should use extended attrs and cached rta's).
1999-03-17Implemented extended route attributes and all related functions.Martin Mares
1999-03-17Initialize pointers to functions so that code is actually alive.Pavel Machek
1999-03-17Compilation fix for mj.Pavel Machek
1999-03-17Don't segfault on unknown interface.Pavel Machek
1999-03-17accept & reject should now workPavel Machek
1999-03-09Yes, joining the crew. Sorry for being late. Added dummy functions for OSPF.Ondrej Filip
1999-03-09Resolved conflicts, you no longer need to wrap constants in const()Pavel Machek
1999-03-09Added '=' to operator listPavel Machek
1999-03-08Filters are now a tiny bit stronger (if is actually working ;-)Pavel Machek
1999-03-04Fixed processing of !krt_capable() routes. Converted device route decisionsMartin Mares
to the krt_capable mechanism as well.