Build system reworked to one global Makefile with includes and no nesting
Also removed the lib-dir merging with sysdep. Updated #include'saccordingly.
Fixed make doc on recent Debian together with moving generated doc intoobjdir.
Moved Makefile.in into root dir...
io.c: fix reads from uninitialized memory
Hidden AF_INET* inside sysdep/
Better fix of missing AF_INET6? definition in lib/socket.h
Moved the code to sysdep.
Removed BITS_PER_IP_ADDRESS, MAX_PREFIX_LENGTH, BIRD_AF
Explicit setting of AF_INET(6|) in IP socket creation. BFD set to listenon v6, without setting the V6ONLY flag to catch both v4 and v6 traffic.
Squashing and minor changes by Ondrej Santiago Zajicek
IO: Fix the previous bugfix
I should check it after making some trivial changes. The original patchfrom Alexander has it right.
IO: Handle fd values too big for select()
If the number of sockets is too much for select(), we should at leasthandle it with proper error messages and reject new sockets instead ofbreaking the event loop.
Thanks to Alexander V. Chernikov for the patch.
Fixes port range socket option
Fixes bug in debug dumps
Using 'dump sockets' in IPv6 mode caused crash due to mismatched format string.
Thanks to Pavel Tvrdik for noticing it.
Implement latency tracking, internal event log and watchdog
Use IP_PORTRANGE_HIGH for BFD where available
Integrated IP functions.
Fixes some warnings.
Ensures that msg_controllen includes last padding.
Although RFC 3542 allows both cases, Theo de Raadt thinkshe knows better, and msg_controllen without last paddingfails on OpenBSD.
Thanks to Job Snijders for the bugreport.
IPv4/IPv6 integrated socket code.
Many changes in I/O and OSPF sockets and packet handling.
I/O: - BSD: specify src addr on IP sockets by IP_HDRINCL - BSD: specify src addr on UDP sockets by IP_SENDSRCADDR - Linux: specify src addr on IP/UDP sockets by IP_PKTINFO - IPv6: specify src addr on IP/UDP sockets by IPV6_PKTINFO...
Merge commit 'origin/bfd'
Fixes problem with RIP on multiple ifaces on BSD.
RIP sockets for multiple ifaces collided, because we cannot bind toa specific iface on BSD. Workarounded by SO_REUSEPORT.
Thanks to Eugene M. Zheganin for the bugreport.
BFD protocol, ready for release.
Supports OSPF and BGP and also statically configured sessions.
Fixes some BFD bugs and makes logging thread-safe.
BFD work in progress.
Now it compiles and mostly works.
Initial BFD commit, work in progress.
Fixes header file name.
Thanks to Fritz Grimpen for the patch.
Some fixes for TTL security.
Implements TTL security for OSPF and RIP.
Interfaces for OSPF and RIP could be configured to use (and request)TTL 255 for traffic to direct neighbors.
Thanks to Simon Dickhoven for the original patch for RIPng.
Better packet priority and traffic class handling.
Implements support for IPv6 traffic class, sets higher priority for OSPFand RIP outgoing packets by default and allows to configure ToS/DS/TClassIP header field and the local priority of outgoing packets.
Implements undo command and optional timeout for configuration
Several new configure command variants:
configure undo - undo last reconfigurationconfigure timeout - configure with scheduled undo if not confirmed in timeoutconfigure confirm - confirm last configuration...
Rename sk_new() to avoid name collision with OpenSSL.
Cleanup in sysdep KRT code, part 2.
Remove support for historic Linux kernels,merge krt-iface, krt-set and krt-scan stub headers.
Some minor fixes.
Better support for link-local addresses in IO code.
The generalized TTL security mechanism (RFC 5082) support.
Added header file.
Implements Router Advertisement protocol.
Ignore warning when BGP peer is unreachable.
Implements proper multihop BGP.
Also does some incompatible changes to config file syntax,like removing 'via IP' from multihop option.
Implements command that shows memory usage.
Fixes bug on Linux 2.4.x - kernel sync does not work until restart of kernel protocol.
Which was, actually, a bug in timers - on older kernel, monotonic timeris missing and the other implementation started with now == 0, whichcollides with usage 0 as a special value in timer->expires field.
Handle EPIPE as a common connection close event.
Fixes build on newer Linux systems.
Fixes IPv6 build on older systems.
Fixes missing header.
Use SO_BINDTODEVICE also in Linux/IPv6.
Minor fixes to previous patches.
Merge branch 'socket2' into new
Adds check for no protocol and some minor CLI fixes.
- Adds check to deny config file with no specified protocol to prevent loading of empty config file.- Moves CLI init before config parse to receive immediate error message when cannot open control socket....
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.
Fixes a crash caused by missing error hook on BGP listening socket.
Error happened when too many BGP connections arrived in one moment(ECONNABORTED).
Temporary OSPF commit - socket changes.
Makes date/time formats configurable.
BSD compatibility fix.
Implements MRTdump feature.
Use IPv6 checksums in OSPFv3.
Merge branch 'dev' into ospf3
Workaround for stupid callback scheduler.
There is no reak callback scheduler and previous behavior causesbad things during hard congestion (like BGP hold timeouts).
Smart callback scheduler is still missing, but main loop waschanged such that it first processes all tx callbacks (which...
Clear memory allocated by ralloc().
This also fixes bug that timer->recurrent was not clearedin tm_new() and unexpected recurrence of startup timerin BGP confused state machine and caused crash.
Temporary OSPFv3 development commit (changing multicast support).
Temporary OSPFv3 development commit
Fixes bug on TCP passive socket binding on BSD.
BGP on BSD was bound to random port. I am surprised thatnobody noticed it already.
Fixes bug in scheduling of callback by main loop.
If other side of a socket is sending data faster thanBIRD is processing, BIRD does not schedule any othercallbacks (events, timers, rx/tx callbacks).
Implements option that changes BGP listening socket parametres.
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.
rx_hook may be cleaned in some callback so we check it beforeexecuting sk_read().
Fix problem with local time changes.
Fixes bugs in IPv6 code caused by recent commits.
Multihop BGP was completely broken, because listening socket has alwaysttl 1.
Merge branch 'dev' into out
Check of socket name length
Implementation of MD5 authentication of BGP sessions.
Previous patch reverted. :-(
Buffer overflow fix.
Real write is only in sk_maybe_write. Previous change partially reverted.Thank you MJ.
Added s->err_hook wrapper that empties socket.
Time added in password management.
sk_write bugfix for BSD.
Test old instance of BIRD.
Cleaned up sk_reallocate() and friends.Also, removed the `if (s)' test, because I believe that as the wholesocket interface doesn't accent NULL pointers, sk_reallocate() shouldn'tbe the only exception.
OSPF is ready for changing MTU.
CONFIG_SKIP_MC_BIND added.BSD hates it, Linux needs it.
#ifdef CONFIG_UNIX_DONTROUTE added.
Rewritten the I/O loop. All socket operations are now safe, meaning thatyou can delete the socket from anywhere in the hooks and nothing should break.Also, the receive/transmit buffers are now regular xmalloc()'ed buffers,not separate resources which would need shuffling around between pools....
*BSD port added. (Tested on FreeBSD and NetBSD)
Fixed <time.h> vs. <sys/time.h> problems.
Use SUN_LEN() for length of UNIX domain addresses. This should fix problemswith connection to clients on libc5 machines.
Fixes to the progdoc.
Spelling fixes to progdoc.
Documented sockets, events and timers.
Split random number functions off io.c, so that they can be documentedseparately.
tm_format_reltime() works with both past and future timestamps.
Some less socket error messages.
Don't report refused connections.
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.)
Fixed a couple of nasty CLI bugs which were triggered on long or multi-partoutputs. It took a whole evening to hunt them down, but now the CLI seemsto work fine.
Now I run three BGP connections with several thousand routes!
Changed handling of incoming connections, so that we can send datafrom the send hook without worrying about existence of socket buffers.
Also, don't forget to copy peer addresses.
Removed several FIXME's.