This is the updated patch to add the Babel protocol to Bird. It is updated quite a bit compared to the previous version. Specifically:
- Split up wire serialisation/deserialisation into a separate part from the semantic handling of TLVs. There's now a separate internal representation of the TLVs in host byte order. These are queued for handling and transmission and only serialised/deserialised at read/write from the wire. The get/put functions from unaligned.h are used to ensure alignment. - Reworked handling of route propagation to the core. Babel now keeps separate selected_in and selected_out entries for each prefix and lets the core pick which route to propagate out. - IPv4 routes are explicitly ignored in the handler instead of the parser. - Entries are timestamped and triggered updates only propagate changed entries. - TX failures are handled and transmission of the TLV queue is resumed when the socket is ready to transmit again. - Added reconfiguration support and cli show* support (based on the rip-new RIP implementation). - Added documentation of more functions and user-facing documentation. - The code has been rearranged to have packet handling code in packet.c and the semantic handlers in babel.c. Also, a bunch of code style changes and other adjustments based on the detailed comments from the last submission. I split this up in two commits, where the first one adds formatting of 64-bit router IDs to bvnsprintf() (which is technically a stand-alone change) and the other adds the Babel protocol. Toke Høiland-Jørgensen (2): Teach bvsnprintf() to print 64-bit router IDs. Add the Babel protocol. configure.in | 3 + doc/bird.sgml | 91 +++ lib/bitops.h | 3 +- lib/ip.h | 5 + lib/printf.c | 31 +- nest/proto.c | 3 + nest/protocol.h | 2 +- nest/route.h | 11 +- proto/Doc | 1 + proto/babel/Doc | 2 + proto/babel/Makefile | 5 + proto/babel/babel.c | 1905 ++++++++++++++++++++++++++++++++++++++++++++++++++ proto/babel/babel.h | 348 +++++++++ proto/babel/config.Y | 127 ++++ proto/babel/packet.c | 863 +++++++++++++++++++++++ proto/babel/packet.h | 127 ++++ sysdep/autoconf.h.in | 1 + 17 files changed, 3518 insertions(+), 10 deletions(-) create mode 100644 proto/babel/Doc create mode 100644 proto/babel/Makefile create mode 100644 proto/babel/babel.c create mode 100644 proto/babel/babel.h create mode 100644 proto/babel/config.Y create mode 100644 proto/babel/packet.c create mode 100644 proto/babel/packet.h -- 2.6.4
