Allows run with restricted privileges.
Adds option -u and -g to specify user and group.When different user (than root) is specified,linux capabilities CAP_NET_* are kept.
Adds support for several Linux kernel route attributes.
Hide 6to4 route warnings.
Minor changes in addresses.
Mainly changes IA_UNNUMBERED to IA_PEER and adds IA_HOST. Also do notshow broadcast addr in show interfaces. Nobody cares for that.
Multipath support for linux kernel protocol.
Remove some runaway debug messages and typos.
Implements link state detection.
Also changes some symbol names (IFF_ADMIN_DOWN -> IFF_SHUTDOWN,IFF_LINK_UP -> IFF_ADMIN_UP).
Implements hostcache and recursive next hops.
Hostcache is a structure for monitoring changes in a routing table thatis used for routes with dynamic/recursive next hops. This is needed forproper iBGP next hop handling.
Support loopback/dummy addresses.
Fixes interface scan on Linux 2.4.x in IPv6 mode.
Better support for /31 networks.
It seems that prefixes /31 and /127 are valid and used in this strange world.
Restrict export of device routes to the kernel protocol.
In usual configuration, such export is already restrictedwith the aid of the direct protocol but there are someraces that can circumvent it. This makes it harder tobreak kernel device routes. Also adds an option to...
Use SO_BINDTODEVICE also in Linux/IPv6.
Minor fixes to previous patches.
Temporary OSPF commit - sockets.
Merge branch 'new' into socket2
Many changes in (mainly) kernel syncers.
- BSD kernel syncer is now self-conscious and can learn alien routes- important bugfix in BSD kernel syncer (crash after protocol restart)- many minor changes and bugfixes in kernel syncers and neighbor cache- direct protocol does not generate host and link local routes...
Fix configure to enable warnings and fix most of them.
Temporary OSPF commit - socket changes.
Merge branch 'dev' into ospf3
Fixes some problems related to link-local routes in KRT interface.
Allows importing 'onlink' routes.
Fixes one previous commit.
Do not allow gateway routes with NULL iface.
Temporary OSPFv3 development commit.
Finally, it is working.
Temporary OSPFv3 development commit (changing multicast support).
Temporary OSPFv3 development commit
Allow more kernel routing tables in IPv6.
Fixes problems with rewriting of kernel device routes.
Merge branch 'master' into dev
Fixes communication on netlink sockets
Independent sessions on netlink sockets mixed statein some common variables.
Linux specific TCP-MD5 handling moved to sysdep/linux/sysio.hFreeBSD coded added. BSD cannot set BGP passwords itself.This has to be done by external command.
Fixes mixed-up messages on netlink socket
Under specific circumstances there might be two mixed-upnetlink sessions (one for scan, the other for route changerequest). This patch separates netlink scans and requeststo two fds (and seq counters).
This should fix http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=428865
Rate limit for most abundant log messages
Fixes compilation on older systems.
Older kernel headers (the ones in Debian Sarge) does nothave __kernel_sockaddr_storage .
Ignore messages related to wireless extensions.
Merge branch 'dev' into out
Do not repeat 'Invalid broadcast address' error message.
'Invalid broadcast address' error is reported only once foran interface and not during every interface scan.
Ignore unknown netlink events.
Bird sometimes reported 'bird: nl_parse_link: Malformed message received'.The cause is that bird asynchronously received netlink packet fromwireless driver about some wireless event on its link layer. In thatcase bird shouldn't complain.
Bugfix for routing table breaking bug.
Here is a patch fixing a bug that causes breakage of a local routingtable during shutdown of Bird. The problem was caused by shutdownof 'device' protocol before shutdown of 'kernel' protocol. When'device' protocol went down, the route (with local network prefix)...
Implementation of MD5 authentication of BGP sessions.
Fix behavior of ipa_opposite().
It was giving wrong results on /30 networks.
Staticized lots of local functions.
Marked unused parameters in sysdep code as such.
Current Linux kernels don't remember rtm_protocol for IPv6 routes and supply RTPROT_BOOT instead.Work around that.
Report link-scope addresses as well.
Don't loop forever when trying to skip an out-sequence netlink reply.
Check broadcast address sanity before believing it.
Fix numbering of routing tables in IPv6 version.
Removed lots of trailing newlines in log messages.
Please note that the only calls which don't add newlines automatically(i.e., don't print a full line of output) are debug() and DBG.
Updated for new scope handling.
Also, provide proper address scopes in struct ifa.
Multicast problems should be gone, although the fix is Linux only and we'llneed to figure out something better when working on new ports.
If a broadcast address is missing, go fake one.
Removed the `async' switch which was used for debugging only anyway.
Don't moan when netlink reports lost packets.
Incoming buffer must be at least 8KB long.
IPv6 support compiles on both glibc 2.0 and 2.1.
#ifdef out lots of debugging information.
The long resource/routing table dump printed upon startup is gone nowand if you wish to see it, just send bird SIGUSR1 or use the `debug'commands.
Removed a lot of unused variables.
Please try compiling your code with --enable-warnings to see them. (Theunused parameter warnings are usually bogus, the unused variable onesare very useful, but gcc is unable to control them separately.)
IPv6 compiles with glibc 2.1.
Include "lib/string.h" instead of <string.h>. It should give us bzero()and other non-portable functions on all systems.
Cleaned up debugging in kernel syncer. Netlink has still LOCAL_DEBUGturned on, but after some testing I'll gag it.
ipa_opposite hack is not applicable in IPv6.
Rewrote interface type detection logic. The `unnumbered' flag is now peraddress, not per interface (hence it's ifa->flags & IA_UNNUMBERED) andshould be set reliably. IF_MULTIACCESS should be fixed now, but it isn'twise to rely on it on interfaces configured with /30 prefix.
Kernel route syncer now supports dynamic reconfiguration. Also it doesn'tdepend on the startup counter hack now and uses a zero-time timer insteadto make itself scheduled after normal protocol startup.
Removed point-to-point tunnel hack as it breaks ordinary PtP interfaces.I'll find a better solution soon.
Reconfiguration for device protocol.
Better order of includes.
set_inaddr() moved to sysio.h.
Tried to clean up multicast handling. Now we don't try to guessmulticast abilities depending on definedness of symbols and use hard-wiredsystem-dependent configuration defines instead.
Please test whereever you can.
Temporary work-arounds for multicast problems. Needs further investigation.
Renamed attr->attrs to attr->eattrs.
Taught Netlink how to behave in IPv6 world.
Basic support for IPv6. The system-dependent part doesn't work yet,but the core routines are there and seem to be working.
o lib/ipv6.[ch] written o Lexical analyser recognizes IPv6 addresses and when in IPv6 mode, treats pure IPv4 addresses as router IDs....
Kernel route syncer supports multiple tables.
The changes are just too extensive for lazy me to list themthere, but see the comment at the top of sysdep/unix/krt.c.The code got a bit more ifdeffy than I'd like, though.
Also fixed a bunch of FIXME's and added a couple of others. :)
Kill remaining master_table relics in KRT code.
Make all protocols pass routing table to rte_update and rte_discard.
Netlink support for secondary interface addresses.
I rewrote the interface handling code, so that it supports multipleaddresses per interface (needed for example for IPv6 support).
o struct iface now contains a list of all interface addresses (represented by struct ifa), iface->addr points to the primary address (if any)....
Removed TOS support. This simplifies many things a lot.
More changes to the kernel syncer.
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...
Remember that we can run device syncer without kernel syncerand vice versa now.
Cleaned up system configuration files -- removed few obsolete parameters,documented the remaining ones (sysdep/cf/README).
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...
Moved to a much more systematic way of configuring kernel protocols.
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...
Removed our declaration of RTPROT_BIRD since Alexey has assignedus a real protocol number in 2.2.4 kernel.
Fixed processing of !krt_capable() routes. Converted device route decisionsto the krt_capable mechanism as well.
KRT: Implemented asynchronous route / interface state notifications(via Netlink). Tweaked kernel synchronization rules a bit. Discoveredlocking bug in kernel Netlink :-)
Future plans: Hunt all the bugs and solve all the FIXME's.
Although there are still heaps of FIXME's, Netlink works.
To build BIRD with Netlink support, just configure it with
After it will be tested well enough, I'll probably make it a defaultfor 2.2 kernels (and rename it to linux-22 :)).
Converted some mb_alloc/bzero pairs to mb_allocz.
Netlink scans routes...
Rewrote the kernel syncer. The old layering was horrible.
The new kernel syncer is cleanly split between generic UNIX moduleand OS dependent submodules:
- krt.c (the generic part) - krt-iface (low-level functions for interface handling) - krt-scan (low-level functions for routing table scanning)...
Netlink module supports interface scan on startup. Working on more.
Implemented netlink protocol parsing functions. More to come tomorrow.
Added skeletal version of Linux netlink interface. It doesn't work yet,but the framework is there and I'll try finish it soon.
Use traditional Unix route/iface interface only when CONFIG_NETLINKis not defined. Also moved declarations of Unix iface logic to krt.h.
Squashed one bug in timing of route scans.
Synced Linux sysdeps to new interface.
die() -> bug() where appropriate.
Hopefully finished kernel syncer (krt) rewrite:
o Interface syncing is now a part of krt and it can have configurable parameters. Actually, the only one is scan rate now :) o Kernel routing table syncing is now synchronized with interface syncing (we need the most recent version of the interface list...
Rewritten kernel syncer. Now uses the rta trickery I've introduced yesterdayand does things "the right way". Few things are still missing (deviceroutes etc.), I'll add them later in the evening.