Netlink: MPLS routes in kernel
Anyway, Bird is now capable to insert both MPLS routes and MPLS encaproutes into kernel.
It was (among others) needed to define platform-specific AF_MPLS to 28as this constant has been assigned in the linux kernel.
No support for BSD now, it may be added in the future.
Static: Protocol rework wrt. struct nexthop changes; MPLS label support
Nexthop: Support for label stack in nest
Removing (struct rta)->cast. Never used.
Merged multipath and single-path data structures.
Dropped struct mpnh and mpnh_*()Now struct nexthop exists, nexthop_*(), and also included struct nexthopinto struct rta.
Also converted RTD_DEVICE and RTD_ROUTER to RTD_UNICAST. If it is neededto distinguish between these two cases, RTD_DEVICE is equivalent to...
Integrated and extensible BGP with generalized AFI handling,support for IPv4+IPv6 AFI and unicast+multicast SAFI.
Merge branch 'master' into int-new
Merge tag 'v1.6.2' into int-new
Build: switch on -Wextra, get rid of most of the warnings
There are several unresolved -Wmissing-field-initializers on olderversions of GCC than 5.1, all of them false positive.
BGP: Support for large communities
Add support for large communities (draft-ietf-idr-large-community),96bit alternative to RFC 1997 communities.
Thanks to Matt Griswold for the original patch.
Nest: Keep multipath next hops sorted
Babel: Documentation updates
This updates the documentation to correctly mention Babel when protocolsare listed, and adds examples and route attribute documentation to theBabel section of the docs.
Signed-off-by: Toke Høiland-Jørgensen <email@example.com>
Merge branch 'int-new' of gitlab.labs.nic.cz:labs/bird into int-new
Hash: Fix of previous commit
Make int-new compilable again
Merge remote-tracking branch 'origin/int-new' into int-new
Merge remote-tracking branch 'origin/master' into int-new
Hash: fixed rta hashing wrt. structure padding
Prog Doc: Complete several missing parameters
Hash: typecast error fix
Updated RTA hashes to 32-bit values.
... and reworked the hashes a bit. Also added mem_hash functionwhich just computes a hash of given memory block.
Move ID allocator to a separate file and use it also in OSPF
Follow-up work on integration
BGP multipath support
Kernel option 'merge paths' allows to merge routes exported to kernelprotocol (currently BGP and static routes) to multipath routes.
Moving of mulipath merging code from OSPF to nest
unsigned [int] -> uint
KRT: Add support for plenty of kernel route metrics
Linux kernel route metrics (RTA_METRICS netlink route attribute) arerepresented and accessible as new route attributes:
krt_mtu, krt_window, krt_rtt, krt_rttvar, krt_sstresh, krt_cwnd, krt_advmss,krt_reordering, krt_hoplimit, krt_initcwnd, krt_rto_min, krt_initrwnd,...
Add bitfield route attribute type
Fixes some warnings.
Fixes some bugs and uses generic hash implementation.
Merge branch 'master' into add-path
filter/filter.c nest/proto.c nest/rt-table.c proto/bgp/bgp.h proto/bgp/config.Y
Some fixes in filter code.
Thanks to Sergey Popovich for original patches.
Implements ADD-PATH extension for BGP.
Allows to send and receive multiple routes for one network by one BGPsession. Also contains necessary core changes to support this (routingtables accepting several routes for one network from one protocol).It needs some more cleanup before merging to the master branch.
Fixes some missing tabs.
They unintentionally disappeared in 1.3.2.
BGP Extended communities.
Prints full community lists during 'show route all'.
Fix route types in rta_show().
Core multipath support.
Adds igp_metric attribute.
Implements IGP metric comparison for BGP routes.
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.
Implements command that shows memory usage.
Fixes unterminated string for atomic_aggr attribute formatting.
Fixes signedness in format route attributes.
Fixes bug in eattr binary search.
Adds %R printf directive for Router ID.
Fixes serious bug in route attribute handing.
ea_same() sometimes returns true for different route attributes,which caused that hash table in BGP does not work correctly andsome routes were sent with different attributes.
Proper format functions for ORIGINATOR_ID, CLUSTER_LIST
A lot of changes: - metric is 3 byte long now - summary lsa originating - more OSPF areas possible - virtual links - better E1/E2 routes handling - some bug fixes..
I have to do: - md5 auth (last mandatory item from rfc2328) - !!!!DEBUG!!!!! (mainly virtual link system has probably a lot of bugs)...
RTS_OSPF_BONDARY is nonsense, RTS_OSPF_IA must have smaller id than RTS_OSPF_EXT
Grrr, committing too fast.#include "alloca.h" -> #include "lib/alloca.h"
Use #include "alloca.h"
Spelling fixes to progdoc.
Documentation on routing tables and route attributes.
Fixed freeing of non-embedded extended attributes.
Added more convient interface for ea_find.
What is special about int default;? Compiler chokes on that!
Really free attributes.
Killed one more reference to RTS_RIP_EXT.
Added commands `show route protocol <p>' and `show route import <p>' whichshow the routing table as exported to the protocol given resp. as returnedfrom its import control hook.
To get handling of filtered extended attributes right (even in the old`show route where <filter>' command), the get_route_info hook gets an...
Better formatting of router ID's.
Define EAF_ORIGINATED and propagate it properly when merging attribute lists.
Printing of AS paths and community sets.
Export ea_same() and ea_hash().
Changed initialization of protocol list -- now we call proto_build() insteadof calling the protocols manually.
Implemented printing of dynamic attributes in `show route all'.
Each protocol can now register its own attribute class (protocol->attr_class,...
Include "lib/string.h" instead of <string.h>. It should give us bzero()and other non-portable functions on all systems.
Fixed bug in processing of dynamic attributes.
Renamed EAF_INLINE to EAF_TEMP to make the name reflect the real meaning.
Implemented real attribute cache.
Removed RTF_EXTERIOR and RTF_TAGGED (unused).
Added dumping of routing tables (`show route'). This includes filtering.
Allow EA type to be set to 'undefined' which overrides all further definitonsof that EA in the same list and causes ea_find() to fail unless you addEA_ALLOW_UNDEF to the second argument.
ea_sort (resp. ea_do_prune()) removes all undef'd attributes from the list....
Renamed attr->attrs to attr->eattrs.
Removed TOS support. This simplifies many things a lot.
Implemented extended route attributes and all related functions.
struct proto again contains instance name (a copy of proto->cf->name).
Implemented new configuration/reconfiguration interface and defined protocolstate machines. Full explanation will follow soon.
Added source RTS_DUMMY for temporary routes. They should never appearin the main table.
Minor rte/rta interface changes:
o rte can now contain a pointer to both cached and uncached rta. Protocols which don't need their own attribute caching can now just fill-in a rta, link it to rte without any calls to attribute cache and call rte_update()...
Do not segfault on iface == NULL.
Use '%I' instead of dirty address printing hacks.
Dumping of static attributes implemented.
Protocol hooks. All of them may be NULL.
Resource pools are now named.
Added routing table and routing attribute code.