This is the 3rd version of Cumulus Code Changes. This includes CR comments from take-2( apologies if I have missed anything ) as well as the addition of another 40 or so patches from our internal tree.
I'm posting the cover-letter first to get input from the rest of the community on how they would like to see these patches posted to the list. I do not want this to get lost in the shuffle and if I receive no comments in the next couple of days I will git send-email the whole thing :) For those impatient here is the github branch these changes are on: https://github.com/donaldsharp/quagga/tree/take-3 Ayan Banerjee (6): Quagga: ipv6 multipath support Enable support for BGP IPV6 multipath. Send ARP requests proactively during OSPF Adjacency formation. OSPF: Ensure deletion is clean OSPF: Ensure that OSPF can send out multiple packets per thread OSPF: Limit the number of interfaces serviced at one time Daniel Walton (31): The peer-groups parser is missing advertisement-interval and 'timers connect' BGP doesn't count a route with an unreachable nexthop in PfxRcd bgpd: Improve peer scaling Fix "no set metric" for ospf6 and RIP Make "no redistribute" always remove the redistribute statement iBGP multipath is broken if 'bgp deterministic-med' is enabled. Fix aggregation issues found via ANVL Add clear command to force a bestpath recalculation and re-advertisement of a prefix BGP crashes if attributes alone consume > 4096 bytes Add [bestpath|multipath] option to 'show ip bgp x.x.x.x' OSPFv3 should accept long form of "no redistribute" BGP: Display BGP paths with unreachable nexthps as invalid OSPF: Fix no ip ospf hello-interval OSPF: "show ip ospf neighbor" header spacing BGP: flag paths for multipath if we RX link-local and global nexthops Zebra: Add internal support for route tags Zebra: Add ability to read/write tag value BGP: Add support for route tags RIP: add support for route tags ZEBRA: add support for route tags bgpd: atomic-aggregate is lost when we aggregate another aggregate that has atomic-aggregate 'set metric -12' is broken in the parser bgp: Alow gracefull shutdown of peers bgpd: Add replace-as option to remove-private-as BGP: Clarify the different permutations of soft clearing a peer BGP: Overhaul BGP debugs BGP: Implement BGP as-override feature BGP: Fix BGP_INFO_ATTR_CHANGED being cleared incorrectly BGP: Correct a few fuzz failures in BGP BGP: Fix incorrectly flagged nexthop BGP: Save the last message from a peer that caused us to send a NOTIFICATION Dinesh Dutt (17): BGP: IPv6 Multipath broken with nexthop global address Zebra: Use a fixed route metric when populating kernel BGPd: Support matching on local preference in route-map bgpd: bgpd-ibgp-policy-out-allow-mods.patch BGP: Add match interface support to BGP route-map. BGPd: Delete the route from the kernel when a valid NH changes to invalid NH OSPFv2: Don't wait for state change to Exchange to start LSReq VTYSH: Add support for marking a file with appropriate end of context Zebra: Suppress displaying default config as part of running config Zebra: Add route-map support for Next Hop Tracking zebra: allow static routes to use NH's from protocols Zebra: Gather and display detailed info about clients of Zebra zebra: Honor setting source via route map and pushing that to the kernel. OSPFv3: Add ABR support and make ECMP > 4. BGP: Fix FSM to handle active/passive connections better BGP: Reprocess the trigger points when an attached route map changes OSPF: Better handle traffic when system is loaded Donald Sharp (8): Quagga: Set MULTIPATH_NUM to 64 when user specifies 0 from cli Zebra: Clean up some compile errors that were missed vtysh: service integrated-vtysh-config not being written to file BGP: Test effect of route-map on received/advertised routes OSPF: Add support for Route tags BGP: Use next hop tracking for connected routes too zebra: Add check to notice when an interface is unnumbered ospf6d: ospfv3-stub-area-support.patch JR Rivers (1): OSPF: 16.0 rfc2328 compliance James Li (3): Zebra: Dissallow outside programs to delete Quagga routes zebra: Notice passed nexthop is ONLINK ospfd: Add unnumbered interface support Pradosh Mohapatra (5): bgp: cluster-id length equality for multipath quagga: nexthop-tracking in zebra Add a null check in bgp_address_del() function when connected addresses are removed. BGP: Show more meaningful outq value in 'show ip bgp summary' output. BGP: Event-driven route announcement taking into account min route advertisement interval Vipin Kumar (17): bgpd: update delay bgpd: table-map feature 'neighbor <if-name> interface' config support in BGP including RA/Zebra changes. bgpd: update prefix packing optimizations Make the private AS number check 4 byte compatible. Block configuration and installation of martians Support for 'clear ip ospf interface [IFNAME]' Update router-LSA when nbr's interface-ID changes Support for 'clear ipv6 ospf6 interface [ifname] Add the missing ospf6 running check in show cmds OSPF: Make destination of p2p to multicast for LS-ACKS OSPFv3: LA (local-address) bit related inter-op fix. OSPFv3: Fixing a couple of issues with ospf6_route_remove () routine. OSPFv3: Adding the initialization check in ospfv3_clean() OSPF: Fix shutdown scenario BGP: Add maxmed command ospf6d: Fix loss of hello's on interface Vivek Venkatraman (4): BGP: Make source interface selection in BGP for nexthop determination more robust lib: Some small enhancements to thread and workqueue libraries in zebra: BGP: Changes to improve BGP convergence time: BGPd: Make ipv6 unicast/multicast address-family work bgpd/Makefile.am | 5 +- bgpd/bgp_advertise.c | 55 +- bgpd/bgp_advertise.h | 29 + bgpd/bgp_aspath.c | 176 +++- bgpd/bgp_aspath.h | 14 +- bgpd/bgp_attr.c | 234 ++--- bgpd/bgp_attr.h | 12 +- bgpd/bgp_clist.c | 15 +- bgpd/bgp_damp.c | 1 + bgpd/bgp_debug.c | 1121 +++++++++++++++++++----- bgpd/bgp_debug.h | 39 +- bgpd/bgp_ecommunity.c | 1 + bgpd/bgp_filter.c | 31 +- bgpd/bgp_filter.h | 4 +- bgpd/bgp_fsm.c | 829 ++++++++++++++++-- bgpd/bgp_fsm.h | 24 + bgpd/bgp_main.c | 33 +- bgpd/bgp_mpath.c | 61 +- bgpd/bgp_mpath.h | 6 +- bgpd/bgp_mplsvpn.c | 1 + bgpd/bgp_network.c | 141 ++- bgpd/bgp_network.h | 2 +- bgpd/bgp_nexthop.c | 1151 +++---------------------- bgpd/bgp_nexthop.h | 42 +- bgpd/bgp_nht.c | 517 +++++++++++ bgpd/bgp_nht.h | 58 ++ bgpd/bgp_open.c | 25 +- bgpd/bgp_packet.c | 857 +++++++++++-------- bgpd/bgp_packet.h | 14 +- bgpd/bgp_regex.c | 2 + bgpd/bgp_route.c | 1934 ++++++++++++++++++++++++++++++------------ bgpd/bgp_route.h | 40 +- bgpd/bgp_routemap.c | 1039 +++++++++++++++++++---- bgpd/bgp_table.c | 1 + bgpd/bgp_table.h | 1 + bgpd/bgp_vty.c | 1954 +++++++++++++++++++++++++++++++----------- bgpd/bgp_vty.h | 4 + bgpd/bgp_zebra.c | 733 ++++++++++++---- bgpd/bgp_zebra.h | 9 +- bgpd/bgpd.c | 852 +++++++++++++++---- bgpd/bgpd.h | 140 ++- configure.ac | 5 +- doc/bgpd.texi | 41 + doc/next-hop-tracking.txt | 326 +++++++ doc/routemap.texi | 4 + isisd/isisd.c | 5 +- lib/Makefile.am | 4 +- lib/bitfield.h | 102 +++ lib/command.c | 2 +- lib/command.h | 9 +- lib/filter.c | 9 + lib/if.c | 61 ++ lib/if.h | 17 + lib/libospf.h | 6 + lib/log.c | 27 +- lib/log.h | 12 - lib/memtypes.c | 6 + lib/nexthop.c | 168 ++++ lib/nexthop.h | 93 ++ lib/plist.c | 14 +- lib/prefix.h | 15 +- lib/route_types.pl | 23 +- lib/routemap.c | 531 +++++++++++- lib/routemap.h | 33 +- lib/thread.c | 14 +- lib/thread.h | 6 + lib/workqueue.c | 37 +- lib/workqueue.h | 3 + lib/zclient.c | 105 ++- lib/zclient.h | 9 + lib/zebra.h | 9 +- ospf6d/ospf6_abr.c | 553 ++++++++---- ospf6d/ospf6_abr.h | 7 +- ospf6d/ospf6_area.c | 323 ++++++- ospf6d/ospf6_area.h | 7 +- ospf6d/ospf6_asbr.c | 92 +- ospf6d/ospf6_asbr.h | 1 + ospf6d/ospf6_flood.c | 5 +- ospf6d/ospf6_flood.h | 2 + ospf6d/ospf6_interface.c | 78 +- ospf6d/ospf6_interface.h | 8 +- ospf6d/ospf6_intra.c | 116 ++- ospf6d/ospf6_lsa.h | 1 + ospf6d/ospf6_lsdb.c | 35 +- ospf6d/ospf6_lsdb.h | 4 + ospf6d/ospf6_main.c | 4 + ospf6d/ospf6_message.c | 14 +- ospf6d/ospf6_network.c | 10 +- ospf6d/ospf6_network.h | 2 +- ospf6d/ospf6_route.c | 291 ++++++- ospf6d/ospf6_route.h | 56 +- ospf6d/ospf6_spf.c | 152 ++-- ospf6d/ospf6_spf.h | 6 +- ospf6d/ospf6_top.c | 10 + ospf6d/ospf6_zebra.c | 109 ++- ospf6d/ospf6_zebra.h | 2 + ospf6d/ospf6d.c | 8 + ospfd/ospf_abr.h | 1 - ospfd/ospf_asbr.c | 5 +- ospfd/ospf_asbr.h | 3 +- ospfd/ospf_dump.c | 2 +- ospfd/ospf_interface.c | 13 +- ospfd/ospf_lsa.c | 45 +- ospfd/ospf_main.c | 1 + ospfd/ospf_network.c | 36 + ospfd/ospf_nsm.c | 28 +- ospfd/ospf_packet.c | 291 ++++--- ospfd/ospf_packet.h | 2 + ospfd/ospf_route.c | 4 + ospfd/ospf_route.h | 1 + ospfd/ospf_routemap.c | 223 ++++- ospfd/ospf_spf.c | 7 - ospfd/ospf_vty.c | 199 ++++- ospfd/ospf_vty.h | 1 + ospfd/ospf_zebra.c | 49 +- ospfd/ospfd.c | 2 + ospfd/ospfd.h | 9 +- ripd/rip_routemap.c | 51 +- ripngd/ripng_routemap.c | 24 +- tests/aspath_test.c | 1 + tests/bgp_capability_test.c | 9 +- tests/bgp_mp_attr_test.c | 9 +- tests/bgp_mpath_test.c | 4 +- tests/ecommunity_test.c | 1 + vtysh/extract.pl.in | 6 +- vtysh/vtysh.c | 159 +++- vtysh/vtysh.h | 4 +- vtysh/vtysh_config.c | 2 +- vtysh/vtysh_main.c | 42 +- zebra/Makefile.am | 8 +- zebra/connected.c | 33 +- zebra/connected.h | 1 + zebra/debug.c | 30 + zebra/debug.h | 3 + zebra/if_netlink.c | 1 + zebra/interface.c | 35 + zebra/ioctl.c | 1 + zebra/kernel_null.c | 1 + zebra/redistribute.c | 50 +- zebra/redistribute_null.c | 1 + zebra/rib.h | 124 +-- zebra/rt_netlink.c | 117 ++- zebra/rt_netlink.h | 3 +- zebra/rtadv.c | 81 +- zebra/rtread_netlink.c | 1 + zebra/zebra_fpm_netlink.c | 8 +- zebra/zebra_rib.c | 706 +++++++++++----- zebra/zebra_rnh.c | 762 +++++++++++++++++ zebra/zebra_rnh.h | 54 ++ zebra/zebra_rnh_null.c | 21 + zebra/zebra_routemap.c | 953 ++++++++++++++++++++- zebra/zebra_vty.c | 1976 +++++++++++++++++++++++++++++++++++++------ zebra/zserv.c | 558 +++++++++++- zebra/zserv.h | 51 ++ 154 files changed, 17636 insertions(+), 4976 deletions(-) create mode 100644 bgpd/bgp_nht.c create mode 100644 bgpd/bgp_nht.h create mode 100644 doc/next-hop-tracking.txt create mode 100644 lib/bitfield.h create mode 100644 lib/nexthop.c create mode 100644 lib/nexthop.h mode change 100755 => 100644 lib/route_types.pl create mode 100644 zebra/zebra_rnh.c create mode 100644 zebra/zebra_rnh.h create mode 100644 zebra/zebra_rnh_null.c -- 1.9.1 _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
