Age | Commit message (Collapse) | Author |
|
|
|
it belongs. (f-util.c stays there for auxiliary and non-important things.)
|
|
|
|
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.
|
|
make_tmp_attrs Convert inline attributes to ea_list
store_tmp_attrs Convert ea_list to inline attributes
import_control Pre-import decisions
|
|
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 :)).
|
|
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.
|
|
approximation of a integral fraction of page size even if both malloc
overhead and chunk header space is counted.
|
|
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.
|
|
attributes.
Please implement in all protocols.
|
|
to distinguish between our own routes and alien ones.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
and vice versa now.
|
|
actually starts to happen. Grrr.
|
|
|
|
|
|
|
|
|
|
writing an error message...
|
|
memory available for subsequent allocations from the same pool. Both flushing
and re-using the memory costs just few instructions.
|
|
functions to sysdep header endian.h.
|
|
|
|
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 `}'.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
|
|
|
|
This avoids few nasty references to free memory.
|
|
us a real protocol number in 2.2.4 kernel.
|
|
to bogus prefixes and non-local routes to host scope addresses.
|
|
modifying filters yet) to be attached to protocol instances.
|
|
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.
|
|
needing some local information should use extended attrs and cached
rta's).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to the krt_capable mechanism as well.
|