Version in base suite: 6.0.2-2 Base version: frr_6.0.2-2 Target version: frr_6.0.2-2+deb10u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/f/frr/frr_6.0.2-2.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/f/frr/frr_6.0.2-2+deb10u1.dsc changelog | 8 + patches/Add_peer_action_for_PEER_FLAG_IFPEER_V6ONLY_flag.patch | 40 +++++ patches/interface_based_peers_should_automatically_override_it_s_peer_group.patch | 67 ++++++++++ patches/series | 2 4 files changed, 117 insertions(+) diff -Nru frr-6.0.2/debian/changelog frr-6.0.2/debian/changelog --- frr-6.0.2/debian/changelog 2019-02-04 21:16:07.000000000 +0000 +++ frr-6.0.2/debian/changelog 2020-01-07 12:21:50.000000000 +0000 @@ -1,3 +1,11 @@ +frr (6.0.2-2+deb10u1) buster; urgency=medium + + * extended next hop capability not working: add upstream patches: + - Add_peer_action_for_PEER_FLAG_IFPEER_V6ONLY_flag.patch. + - interface_based_peers_should_automatically_override_it_s_peer_group.patch + + -- Thomas Goirand Tue, 07 Jan 2020 13:21:50 +0100 + frr (6.0.2-2) unstable; urgency=medium * remove bogus libjson0 build-dep (closes: #921349) diff -Nru frr-6.0.2/debian/patches/Add_peer_action_for_PEER_FLAG_IFPEER_V6ONLY_flag.patch frr-6.0.2/debian/patches/Add_peer_action_for_PEER_FLAG_IFPEER_V6ONLY_flag.patch --- frr-6.0.2/debian/patches/Add_peer_action_for_PEER_FLAG_IFPEER_V6ONLY_flag.patch 1970-01-01 00:00:00.000000000 +0000 +++ frr-6.0.2/debian/patches/Add_peer_action_for_PEER_FLAG_IFPEER_V6ONLY_flag.patch 2020-01-07 12:21:30.000000000 +0000 @@ -0,0 +1,40 @@ +Author: Donatas Abraitis +Date: Mon, 25 Feb 2019 21:16:02 +0200 +Description: [PATCH] bgpd: Add peer action for PEER_FLAG_IFPEER_V6ONLY flag + peer_flag_modify() will always return BGP_ERR_INVALID_FLAG because + the action was not defined for PEER_FLAG_IFPEER_V6ONLY flag. + + ``` + global PEER_FLAG_IFPEER_V6ONLY = 16384; + global BGP_ERR_INVALID_FLAG = -2; + probe process("/usr/lib/frr/bgpd").statement("peer_flag_modify@/root/frr/bgpd/bgpd.c:3975") + { + if ($flag == PEER_FLAG_IFPEER_V6ONLY && $action->type == 0) + printf("action not found for the flag PEER_FLAG_IFPEER_V6ONLY\n"); + } + probe process("/usr/lib/frr/bgpd").function("peer_flag_modify").return + { + if ($return == BGP_ERR_INVALID_FLAG) + printf("return BGP_ERR_INVALID_FLAG\n"); + } + ``` + produces: + action not found for the flag PEER_FLAG_IFPEER_V6ONLY + return BGP_ERR_INVALID_FLAG +$ vtysh -c 'conf t' -c 'router bgp 20' -c 'neighbor eth1 interface v6only remote-as external' +Signed-off-by: Donatas Abraitis +Origin: upstream, https://github.com/FRRouting/frr/commit/79c245c358b55b372fdea3aeb1e4e4758979f2ae.patch +Last-Update: 2020-01-07 + +Index: frr-6.0.2/bgpd/bgpd.c +=================================================================== +--- frr-6.0.2.orig/bgpd/bgpd.c ++++ frr-6.0.2/bgpd/bgpd.c +@@ -3660,6 +3660,7 @@ static const struct peer_flag_action pee + {PEER_FLAG_DISABLE_CONNECTED_CHECK, 0, peer_change_reset}, + {PEER_FLAG_CAPABILITY_ENHE, 0, peer_change_reset}, + {PEER_FLAG_ENFORCE_FIRST_AS, 0, peer_change_reset_in}, ++ {PEER_FLAG_IFPEER_V6ONLY, 0, peer_change_reset}, + {PEER_FLAG_ROUTEADV, 0, peer_change_none}, + {PEER_FLAG_TIMER, 0, peer_change_none}, + {PEER_FLAG_TIMER_CONNECT, 0, peer_change_none}, diff -Nru frr-6.0.2/debian/patches/interface_based_peers_should_automatically_override_it_s_peer_group.patch frr-6.0.2/debian/patches/interface_based_peers_should_automatically_override_it_s_peer_group.patch --- frr-6.0.2/debian/patches/interface_based_peers_should_automatically_override_it_s_peer_group.patch 1970-01-01 00:00:00.000000000 +0000 +++ frr-6.0.2/debian/patches/interface_based_peers_should_automatically_override_it_s_peer_group.patch 2020-01-07 12:21:50.000000000 +0000 @@ -0,0 +1,67 @@ +From: Donald Sharp +Date: Wed, 28 Nov 2018 18:46:36 -0500 +Subject: bgpd: interface based peers should automatically override it's peer group + When a interface based peer is setup and if it is part of a peer + group we should ignore this and just use the PEER_FLAG_CAPABILITY_ENHE + no matter what. +Signed-off-by: Donald Sharp +Signed-off-by: Donatas Abraitis +Origin: upstream, https://github.com/FRRouting/frr/commit/0c3558cb89ba1531b34a5640b9a91b397b74e3a1.patch +Last-Update: 2020-01-07 + +Index: frr-6.0.2/bgpd/bgp_vty.c +=================================================================== +--- frr-6.0.2.orig/bgpd/bgp_vty.c ++++ frr-6.0.2/bgpd/bgp_vty.c +@@ -2872,7 +2872,7 @@ static int peer_conf_interface_get(struc + if (!CHECK_FLAG(peer->flags_invert, PEER_FLAG_CAPABILITY_ENHE)) { + SET_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE); + SET_FLAG(peer->flags_invert, PEER_FLAG_CAPABILITY_ENHE); +- UNSET_FLAG(peer->flags_override, PEER_FLAG_CAPABILITY_ENHE); ++ SET_FLAG(peer->flags_override, PEER_FLAG_CAPABILITY_ENHE); + } + + if (peer_group_name) { +Index: frr-6.0.2/bgpd/bgpd.c +=================================================================== +--- frr-6.0.2.orig/bgpd/bgpd.c ++++ frr-6.0.2/bgpd/bgpd.c +@@ -6946,14 +6946,17 @@ static void bgp_config_write_peer_global + + /* capability extended-nexthop */ + if (peergroup_flag_check(peer, PEER_FLAG_CAPABILITY_ENHE)) { +- if (CHECK_FLAG(peer->flags_invert, PEER_FLAG_CAPABILITY_ENHE)) +- vty_out(vty, +- " no neighbor %s capability extended-nexthop\n", +- addr); +- else +- vty_out(vty, +- " neighbor %s capability extended-nexthop\n", +- addr); ++ if (!peer->conf_if) { ++ if (CHECK_FLAG(peer->flags_invert, ++ PEER_FLAG_CAPABILITY_ENHE)) ++ vty_out(vty, ++ " no neighbor %s capability extended-nexthop\n", ++ addr); ++ else ++ vty_out(vty, ++ " neighbor %s capability extended-nexthop\n", ++ addr); ++ } + } + + /* dont-capability-negotiation */ +Index: frr-6.0.2/tests/bgpd/test_peer_attr.py +=================================================================== +--- frr-6.0.2.orig/tests/bgpd/test_peer_attr.py ++++ frr-6.0.2/tests/bgpd/test_peer_attr.py +@@ -9,7 +9,7 @@ class TestFlag(frrtest.TestMultiOut): + TestFlag.okfail('peer\\advertisement-interval') + TestFlag.okfail('peer\\capability dynamic') + TestFlag.okfail('peer\\capability extended-nexthop') +-TestFlag.okfail('peer\\capability extended-nexthop') ++#TestFlag.okfail('peer\\capability extended-nexthop') + TestFlag.okfail('peer\\description') + TestFlag.okfail('peer\\disable-connected-check') + TestFlag.okfail('peer\\dont-capability-negotiate') diff -Nru frr-6.0.2/debian/patches/series frr-6.0.2/debian/patches/series --- frr-6.0.2/debian/patches/series 2019-02-04 21:16:07.000000000 +0000 +++ frr-6.0.2/debian/patches/series 2020-01-07 12:21:50.000000000 +0000 @@ -1,3 +1,5 @@ 0001-vtysh-fix-pager-compatibility-handling.patch 0002-watchfrr-build-in-defaults-for-r-s-k.patch systemd-deps.patch +Add_peer_action_for_PEER_FLAG_IFPEER_V6ONLY_flag.patch +interface_based_peers_should_automatically_override_it_s_peer_group.patch