summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_label.h4
-rw-r--r--bgpd/bgp_route.c65
-rw-r--r--bgpd/bgp_route.h2
-rw-r--r--debian/changelog16
-rw-r--r--ospfd/ospf_vty.c522
-rw-r--r--pimd/pim_msdp.c7
-rw-r--r--redhat/frr.spec.in430
-rw-r--r--tests/topotests/lib/bgprib.py2
-rw-r--r--tests/topotests/ospf_gr_helper/test_ospf_gr_helper.py2
-rwxr-xr-xtests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py2
-rw-r--r--zebra/zebra_ptm.c2
11 files changed, 513 insertions, 541 deletions
diff --git a/bgpd/bgp_label.h b/bgpd/bgp_label.h
index d227cf7241..cafcc8e9c7 100644
--- a/bgpd/bgp_label.h
+++ b/bgpd/bgp_label.h
@@ -65,7 +65,7 @@ static inline int bgp_is_withdraw_label(mpls_label_t *label)
return 0;
}
-static inline int bgp_is_valid_label(mpls_label_t *label)
+static inline int bgp_is_valid_label(const mpls_label_t *label)
{
uint8_t *t = (uint8_t *)label;
if (!t)
@@ -99,7 +99,7 @@ static inline void bgp_unregister_for_label(struct bgp_dest *dest)
}
/* Label stream to value */
-static inline uint32_t label_pton(mpls_label_t *label)
+static inline uint32_t label_pton(const mpls_label_t *label)
{
uint8_t *t = (uint8_t *)label;
return ((((unsigned int)t[0]) << 12) | (((unsigned int)t[1]) << 4)
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index ffd8a8118c..fdaee9b600 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -102,6 +102,10 @@ DEFINE_HOOK(bgp_rpki_prefix_status,
const struct prefix *prefix),
(peer, attr, prefix));
+/* Render dest to prefix_rd based on safi */
+static const struct prefix_rd *bgp_rd_from_dest(const struct bgp_dest *dest,
+ safi_t safi);
+
/* Extern from bgp_dump.c */
extern const char *bgp_origin_str[];
extern const char *bgp_origin_long_str[];
@@ -10712,14 +10716,15 @@ static int bgp_show_community(struct vty *vty, struct bgp *bgp,
static int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,
struct bgp_table *table, enum bgp_show_type type,
- void *output_arg, char *rd, int is_last,
+ void *output_arg, const char *rd, int is_last,
unsigned long *output_cum, unsigned long *total_cum,
unsigned long *json_header_depth, uint16_t show_flags,
enum rpki_states rpki_target_state)
{
struct bgp_path_info *pi;
struct bgp_dest *dest;
- int header = 1;
+ bool header = true;
+ bool json_detail_header = false;
int display;
unsigned long output_count = 0;
unsigned long total_count = 0;
@@ -10731,7 +10736,7 @@ static int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,
bool all = CHECK_FLAG(show_flags, BGP_SHOW_OPT_AFI_ALL);
if (output_cum && *output_cum != 0)
- header = 0;
+ header = false;
if (use_json && !*json_header_depth) {
if (all)
@@ -10761,10 +10766,19 @@ static int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,
vty_out(vty, " \"%s\" : { ", rd);
}
+ /* Check for 'json detail', where we need header output once per dest */
+ if (use_json && CHECK_FLAG(show_flags, BGP_SHOW_OPT_DETAIL) &&
+ type != bgp_show_type_dampend_paths &&
+ type != bgp_show_type_damp_neighbor &&
+ type != bgp_show_type_flap_statistics &&
+ type != bgp_show_type_flap_neighbor)
+ json_detail_header = true;
+
/* Start processing of routes. */
for (dest = bgp_table_top(table); dest; dest = bgp_route_next(dest)) {
const struct prefix *dest_p = bgp_dest_get_prefix(dest);
enum rpki_states rpki_curr_state = RPKI_NOT_BEING_USED;
+ bool json_detail = json_detail_header;
pi = bgp_dest_get_bgp_path_info(dest);
if (pi == NULL)
@@ -11016,8 +11030,28 @@ static int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,
else
vty_out(vty, (wide ? BGP_SHOW_HEADER_WIDE
: BGP_SHOW_HEADER));
- header = 0;
+ header = false;
+
+ } else if (json_detail && json_paths != NULL) {
+ const struct prefix_rd *prd;
+ json_object *jtemp;
+
+ /* Use common detail header, for most types;
+ * need a json 'object'.
+ */
+
+ jtemp = json_object_new_object();
+ prd = bgp_rd_from_dest(dest, safi);
+
+ route_vty_out_detail_header(
+ vty, bgp, dest, prd, table->afi,
+ safi, jtemp);
+
+ json_object_array_add(json_paths, jtemp);
+
+ json_detail = false;
}
+
if (rd != NULL && !display && !output_count) {
if (!use_json)
vty_out(vty,
@@ -11176,6 +11210,7 @@ int bgp_show_table_rd(struct vty *vty, struct bgp *bgp, safi_t safi,
}
return CMD_SUCCESS;
}
+
static int bgp_show(struct vty *vty, struct bgp *bgp, afi_t afi, safi_t safi,
enum bgp_show_type type, void *output_arg,
uint16_t show_flags, enum rpki_states rpki_target_state)
@@ -11260,7 +11295,8 @@ static void bgp_show_all_instances_routes_vty(struct vty *vty, afi_t afi,
/* Header of detailed BGP route information */
void route_vty_out_detail_header(struct vty *vty, struct bgp *bgp,
- struct bgp_dest *dest, struct prefix_rd *prd,
+ struct bgp_dest *dest,
+ const struct prefix_rd *prd,
afi_t afi, safi_t safi, json_object *json)
{
struct bgp_path_info *pi;
@@ -11470,7 +11506,7 @@ void route_vty_out_detail_header(struct vty *vty, struct bgp *bgp,
}
}
-static void bgp_show_path_info(struct prefix_rd *pfx_rd,
+static void bgp_show_path_info(const struct prefix_rd *pfx_rd,
struct bgp_dest *bgp_node, struct vty *vty,
struct bgp *bgp, afi_t afi, safi_t safi,
json_object *json, enum bgp_path_type pathtype,
@@ -11530,6 +11566,23 @@ static void bgp_show_path_info(struct prefix_rd *pfx_rd,
}
}
+/*
+ * Return rd based on safi
+ */
+static const struct prefix_rd *bgp_rd_from_dest(const struct bgp_dest *dest,
+ safi_t safi)
+{
+ switch (safi) {
+ case SAFI_MPLS_VPN:
+ case SAFI_ENCAP:
+ case SAFI_EVPN:
+ return (struct prefix_rd *)(bgp_dest_get_prefix(dest));
+ default:
+ return NULL;
+
+ }
+}
+
/* Display specified route of BGP table. */
static int bgp_show_route_in_table(struct vty *vty, struct bgp *bgp,
struct bgp_table *rib, const char *ip_str,
diff --git a/bgpd/bgp_route.h b/bgpd/bgp_route.h
index 46802d0d14..2fd80495d9 100644
--- a/bgpd/bgp_route.h
+++ b/bgpd/bgp_route.h
@@ -784,7 +784,7 @@ extern bool bgp_zebra_has_route_changed(struct bgp_path_info *selected);
extern void route_vty_out_detail_header(struct vty *vty, struct bgp *bgp,
struct bgp_dest *dest,
- struct prefix_rd *prd, afi_t afi,
+ const struct prefix_rd *prd, afi_t afi,
safi_t safi, json_object *json);
extern void route_vty_out_detail(struct vty *vty, struct bgp *bgp,
struct bgp_dest *bn,
diff --git a/debian/changelog b/debian/changelog
index 99c75106db..f5b392274a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,20 @@
-frr (8.1~dev-1) UNRELEASED; urgency=medium
+frr (8.2~dev-1) UNRELEASED; urgency=medium
* New upstream release...
- -- Ondřej Surý <ondrej@debian.org> Tue, 04 May 2021 22:52:47 +0200
+ -- Jafar Al-Gharaibeh <jafar@atcorp.com> Mon, 08 Nov 2021 10:00:00 +0500
+
+frr (8.1-0) unstable; urgency=medium
+
+ * New upstream release FRR 8.1
+
+ -- Jafar Al-Gharaibeh <jafar@atcorp.com> Tue, 02 Nov 2021 14:00:00 +0500
+
+frr (8.0-0) unstable; urgency=medium
+
+ * New upstream release FRR 8.0
+
+ -- Martin Winter <mwinter@opensourcerouting.org> Wed, 21 Jul 2021 13:42:00 +0200
frr (7.5.1-1) unstable; urgency=medium
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index bbb458d8ef..fcfc645a23 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -9863,161 +9863,10 @@ DEFUN (no_ospf_proactive_arp,
return CMD_SUCCESS;
}
-/* Graceful Restart HELPER Commands */
-DEFPY(ospf_gr_helper_enable, ospf_gr_helper_enable_cmd,
- "graceful-restart helper enable [A.B.C.D$address]",
- "OSPF Graceful Restart\n"
- "OSPF GR Helper\n"
- "Enable Helper support\n"
- "Advertising Router-ID\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
-
- if (address_str) {
- ospf_gr_helper_support_set_per_routerid(ospf, &address,
- OSPF_GR_TRUE);
- return CMD_SUCCESS;
- }
-
- ospf_gr_helper_support_set(ospf, OSPF_GR_TRUE);
-
- return CMD_SUCCESS;
-}
-
-DEFPY(no_ospf_gr_helper_enable,
- no_ospf_gr_helper_enable_cmd,
- "no graceful-restart helper enable [A.B.C.D$address]",
- NO_STR
- "OSPF Graceful Restart\n"
- "OSPF GR Helper\n"
- "Enable Helper support\n"
- "Advertising Router-ID\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
-
- if (address_str) {
- ospf_gr_helper_support_set_per_routerid(ospf, &address,
- OSPF_GR_FALSE);
- return CMD_SUCCESS;
- }
-
- ospf_gr_helper_support_set(ospf, OSPF_GR_FALSE);
- return CMD_SUCCESS;
-}
-
-#if CONFDATE > 20220921
-CPP_NOTICE(
- "Time to remove the deprecated \"[no] graceful-restart helper-only\" commands")
+#if CONFDATE > 20211209
+CPP_NOTICE("Time to remove broken OSPF GR helper")
#endif
-DEFPY_HIDDEN(ospf_gr_helper_only, ospf_gr_helper_only_cmd,
- "graceful-restart helper-only [A.B.C.D]",
- "OSPF Graceful Restart\n"
- "Enable Helper support\n"
- "Advertising router id\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
- struct in_addr addr;
- int ret;
-
- vty_out(vty,
- "%% This command is deprecated. Please, use `graceful-restart helper enable` instead.\n");
-
- if (argc == 3) {
- ret = inet_aton(argv[2]->arg, &addr);
- if (!ret) {
- vty_out(vty,
- "Please specify the valid routerid address.\n");
- return CMD_WARNING_CONFIG_FAILED;
- }
-
- ospf_gr_helper_support_set_per_routerid(ospf, &addr, OSPF_GR_TRUE);
- return CMD_SUCCESS;
- }
-
- ospf_gr_helper_support_set(ospf, OSPF_GR_TRUE);
-
- return CMD_SUCCESS;
-}
-
-ALIAS_HIDDEN(no_ospf_gr_helper_enable,
- no_ospf_gr_helper_only_cmd,
- "no graceful-restart helper-only [A.B.C.D]",
- NO_STR
- "OSPF Graceful Restart\n"
- "Disable Helper support\n"
- "Advertising router id\n")
-
-DEFPY(ospf_gr_helper_enable_lsacheck,
- ospf_gr_helper_enable_lsacheck_cmd,
- "graceful-restart helper strict-lsa-checking",
- "OSPF Graceful Restart\n"
- "OSPF GR Helper\n"
- "Enable strict LSA check\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
-
- ospf_gr_helper_lsa_check_set(ospf, OSPF_GR_TRUE);
- return CMD_SUCCESS;
-}
-
-DEFPY(no_ospf_gr_helper_enable_lsacheck,
- no_ospf_gr_helper_enable_lsacheck_cmd,
- "no graceful-restart helper strict-lsa-checking",
- NO_STR
- "OSPF Graceful Restart\n"
- "OSPF GR Helper\n"
- "Disable strict LSA check\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
-
- ospf_gr_helper_lsa_check_set(ospf, OSPF_GR_FALSE);
- return CMD_SUCCESS;
-}
-
-DEFPY(ospf_gr_helper_supported_grace_time,
- ospf_gr_helper_supported_grace_time_cmd,
- "graceful-restart helper supported-grace-time (10-1800)$interval",
- "OSPF Graceful Restart\n"
- "OSPF GR Helper\n"
- "Supported grace timer\n"
- "Grace interval(in seconds)\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
-
- ospf_gr_helper_supported_gracetime_set(ospf, interval);
- return CMD_SUCCESS;
-}
-
-DEFPY(no_ospf_gr_helper_supported_grace_time,
- no_ospf_gr_helper_supported_grace_time_cmd,
- "no graceful-restart helper supported-grace-time (10-1800)$interval",
- NO_STR
- "OSPF Graceful Restart\n"
- "OSPF GR Helper\n"
- "Supported grace timer\n"
- "Grace interval(in seconds)\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
-
- ospf_gr_helper_supported_gracetime_set(ospf, OSPF_MAX_GRACE_INTERVAL);
- return CMD_SUCCESS;
-}
-
-DEFPY(ospf_gr_helper_planned_only,
- ospf_gr_helper_planned_only_cmd,
- "graceful-restart helper planned-only",
- "OSPF Graceful Restart\n"
- "OSPF GR Helper\n"
- "Supported only planned restart\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
-
- ospf_gr_helper_set_supported_planned_only_restart(ospf, OSPF_GR_TRUE);
-
- return CMD_SUCCESS;
-}
-
/* External Route Aggregation */
DEFUN (ospf_external_route_aggregation,
ospf_external_route_aggregation_cmd,
@@ -10100,256 +9949,6 @@ DEFUN (no_ospf_external_route_aggregation,
return CMD_SUCCESS;
}
-DEFPY(no_ospf_gr_helper_planned_only,
- no_ospf_gr_helper_planned_only_cmd,
- "no graceful-restart helper planned-only",
- NO_STR
- "OSPF Graceful Restart\n"
- "OSPF GR Helper\n"
- "Supported only for planned restart\n")
-{
- VTY_DECLVAR_INSTANCE_CONTEXT(ospf, ospf);
-
- ospf_gr_helper_set_supported_planned_only_restart(ospf, OSPF_GR_FALSE);
-
- return CMD_SUCCESS;
-}
-
-static int ospf_print_vty_helper_dis_rtr_walkcb(struct hash_bucket *bucket,
- void *arg)
-{
- struct advRtr *rtr = bucket->data;
- struct vty *vty = (struct vty *)arg;
- static unsigned int count;
-
- vty_out(vty, "%-6pI4,", &rtr->advRtrAddr);
- count++;
-
- if (count % 5 == 0)
- vty_out(vty, "\n");
-
- return HASHWALK_CONTINUE;
-}
-
-static int ospf_show_gr_helper_details(struct vty *vty, struct ospf *ospf,
- uint8_t use_vrf, json_object *json,
- bool uj, bool detail)
-{
- struct listnode *node;
- struct ospf_interface *oi;
- char buf[PREFIX_STRLEN];
- json_object *json_vrf = NULL;
-
- if (uj) {
- if (use_vrf)
- json_vrf = json_object_new_object();
- else
- json_vrf = json;
- }
-
- if (ospf->instance) {
- if (uj)
- json_object_int_add(json, "ospfInstance",
- ospf->instance);
- else
- vty_out(vty, "\nOSPF Instance: %d\n\n", ospf->instance);
- }
-
- ospf_show_vrf_name(ospf, vty, json_vrf, use_vrf);
-
- if (uj) {
- if (use_vrf)
- json_object_object_add(json, ospf_get_name(ospf),
- json_vrf);
- } else
- vty_out(vty, "\n");
-
- /* Show Router ID. */
- if (uj) {
- json_object_string_add(json_vrf, "routerId",
- inet_ntop(AF_INET, &ospf->router_id,
- buf, sizeof(buf)));
- } else {
- vty_out(vty, "\n OSPF Router with ID (%pI4)\n\n",
- &ospf->router_id);
- }
-
- if (!uj) {
-
- if (ospf->is_helper_supported)
- vty_out(vty,
- " Graceful restart helper support enabled.\n");
- else
- vty_out(vty,
- " Graceful restart helper support disabled.\n");
-
- if (ospf->strict_lsa_check)
- vty_out(vty, " Strict LSA check is enabled.\n");
- else
- vty_out(vty, " Strict LSA check is disabled.\n");
-
- if (ospf->only_planned_restart)
- vty_out(vty,
- " Helper supported for planned restarts only.\n");
- else
- vty_out(vty,
- " Helper supported for Planned and Unplanned Restarts.\n");
-
- vty_out(vty,
- " Supported Graceful restart interval: %d(in seconds).\n",
- ospf->supported_grace_time);
-
- if (OSPF_HELPER_ENABLE_RTR_COUNT(ospf)) {
- vty_out(vty, " Enable Router list:\n");
- vty_out(vty, " ");
- hash_walk(ospf->enable_rtr_list,
- ospf_print_vty_helper_dis_rtr_walkcb, vty);
- vty_out(vty, "\n\n");
- }
-
- if (ospf->last_exit_reason != OSPF_GR_HELPER_EXIT_NONE) {
- vty_out(vty, " Last Helper exit Reason :%s\n",
- ospf_exit_reason2str(ospf->last_exit_reason));
- }
-
- if (ospf->active_restarter_cnt)
- vty_out(vty,
- " Number of Active neighbours in graceful restart: %d\n",
- ospf->active_restarter_cnt);
- else
- vty_out(vty, "\n");
-
- } else {
- json_object_string_add(
- json_vrf, "helperSupport",
- (ospf->is_helper_supported) ? "Enabled" : "Disabled");
- json_object_string_add(json_vrf, "strictLsaCheck",
- (ospf->strict_lsa_check) ? "Enabled"
- : "Disabled");
- json_object_string_add(
- json_vrf, "restartSupoort",
- (ospf->only_planned_restart)
- ? "Planned Restart only"
- : "Planned and Unplanned Restarts");
-
- json_object_int_add(json_vrf, "supportedGracePeriod",
- ospf->supported_grace_time);
-
- if (ospf->last_exit_reason != OSPF_GR_HELPER_EXIT_NONE)
- json_object_string_add(
- json_vrf, "LastExitReason",
- ospf_exit_reason2str(ospf->last_exit_reason));
-
- if (ospf->active_restarter_cnt)
- json_object_int_add(json_vrf, "activeRestarterCnt",
- ospf->active_restarter_cnt);
- }
-
-
- if (detail) {
- int cnt = 1;
- json_object *json_neighbors = NULL;
-
- for (ALL_LIST_ELEMENTS_RO(ospf->oiflist, node, oi)) {
- struct route_node *rn;
- struct ospf_neighbor *nbr;
- json_object *json_neigh;
-
- if (ospf_interface_neighbor_count(oi) == 0)
- continue;
-
- if (uj) {
- json_object_object_get_ex(json_vrf, "Neighbors",
- &json_neighbors);
- if (!json_neighbors) {
- json_neighbors =
- json_object_new_object();
- json_object_object_add(json_vrf,
- "Neighbors",
- json_neighbors);
- }
- }
-
- for (rn = route_top(oi->nbrs); rn;
- rn = route_next(rn)) {
-
- if (!rn->info)
- continue;
-
- nbr = rn->info;
-
- if (!OSPF_GR_IS_ACTIVE_HELPER(nbr))
- continue;
-
- if (!uj) {
- vty_out(vty, " Neighbour %d :\n", cnt);
- vty_out(vty, " Address : %pI4\n",
- &nbr->address.u.prefix4);
- vty_out(vty, " Routerid : %pI4\n",
- &nbr->router_id);
- vty_out(vty,
- " Received Grace period : %d(in seconds).\n",
- nbr->gr_helper_info
- .recvd_grace_period);
- vty_out(vty,
- " Actual Grace period : %d(in seconds)\n",
- nbr->gr_helper_info
- .actual_grace_period);
- vty_out(vty,
- " Remaining GraceTime:%ld(in seconds).\n",
- thread_timer_remain_second(
- nbr->gr_helper_info
- .t_grace_timer));
- vty_out(vty,
- " Graceful Restart reason: %s.\n\n",
- ospf_restart_reason2str(
- nbr->gr_helper_info
- .gr_restart_reason));
- cnt++;
- } else {
- json_neigh = json_object_new_object();
- json_object_string_add(
- json_neigh, "srcAddr",
- inet_ntop(AF_INET, &nbr->src,
- buf, sizeof(buf)));
-
- json_object_string_add(
- json_neigh, "routerid",
- inet_ntop(AF_INET,
- &nbr->router_id,
- buf, sizeof(buf)));
- json_object_int_add(
- json_neigh,
- "recvdGraceInterval",
- nbr->gr_helper_info
- .recvd_grace_period);
- json_object_int_add(
- json_neigh,
- "actualGraceInterval",
- nbr->gr_helper_info
- .actual_grace_period);
- json_object_int_add(
- json_neigh, "remainGracetime",
- thread_timer_remain_second(
- nbr->gr_helper_info
- .t_grace_timer));
- json_object_string_add(
- json_neigh, "restartReason",
- ospf_restart_reason2str(
- nbr->gr_helper_info
- .gr_restart_reason));
- json_object_object_add(
- json_neighbors,
- inet_ntop(AF_INET, &nbr->src,
- buf, sizeof(buf)),
- json_neigh);
- }
- }
- }
- }
- return CMD_SUCCESS;
-}
-
DEFUN (ospf_external_route_aggregation_no_adrvertise,
ospf_external_route_aggregation_no_adrvertise_cmd,
"summary-address A.B.C.D/M no-advertise",
@@ -10438,108 +10037,6 @@ DEFUN (ospf_route_aggregation_timer,
return CMD_SUCCESS;
}
-DEFPY (show_ip_ospf_gr_helper,
- show_ip_ospf_gr_helper_cmd,
- "show ip ospf [vrf <NAME|all>] graceful-restart helper [detail] [json]",
- SHOW_STR
- IP_STR
- "OSPF information\n"
- VRF_CMD_HELP_STR
- "All VRFs\n"
- "OSPF Graceful Restart\n"
- "Helper details in the router\n"
- "Detailed informtion\n"
- JSON_STR)
-{
- char *vrf_name = NULL;
- bool all_vrf = false;
- int ret = CMD_SUCCESS;
- int idx_vrf = 0;
- int idx = 0;
- uint8_t use_vrf = 0;
- bool uj = use_json(argc, argv);
- struct ospf *ospf = NULL;
- json_object *json = NULL;
- struct listnode *node = NULL;
- int inst = 0;
- bool detail = false;
-
- OSPF_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf);
-
- if (argv_find(argv, argc, "detail", &idx))
- detail = true;
-
- if (uj)
- json = json_object_new_object();
-
- /* vrf input is provided */
- if (vrf_name) {
- use_vrf = 1;
-
- if (all_vrf) {
- for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
- if (!ospf->oi_running)
- continue;
-
- ret = ospf_show_gr_helper_details(
- vty, ospf, use_vrf, json, uj, detail);
- }
-
- if (uj) {
- vty_out(vty, "%s\n",
- json_object_to_json_string_ext(
- json, JSON_C_TO_STRING_PRETTY));
- json_object_free(json);
- }
-
- return ret;
- }
-
- ospf = ospf_lookup_by_inst_name(inst, vrf_name);
-
- if (ospf == NULL || !ospf->oi_running) {
-
- if (uj) {
- vty_out(vty, "%s\n",
- json_object_to_json_string_ext(
- json, JSON_C_TO_STRING_PRETTY));
- json_object_free(json);
- } else
- vty_out(vty, "%% OSPF instance not found\n");
-
- return CMD_SUCCESS;
- }
-
- } else {
- /* Default Vrf */
- ospf = ospf_lookup_by_vrf_id(VRF_DEFAULT);
-
- if (ospf == NULL || !ospf->oi_running) {
-
- if (uj) {
- vty_out(vty, "%s\n",
- json_object_to_json_string_ext(
- json, JSON_C_TO_STRING_PRETTY));
- json_object_free(json);
- } else
- vty_out(vty, "%% OSPF instance not found\n");
-
- return CMD_SUCCESS;
- }
-
- ospf_show_gr_helper_details(vty, ospf, use_vrf, json, uj,
- detail);
- }
-
- if (uj) {
- vty_out(vty, "%s\n", json_object_to_json_string_ext(
- json, JSON_C_TO_STRING_PRETTY));
- json_object_free(json);
- }
-
- return CMD_SUCCESS;
-}
-/* Graceful Restart HELPER commands end */
DEFUN (no_ospf_route_aggregation_timer,
no_ospf_route_aggregation_timer_cmd,
"no aggregation timer",
@@ -12608,9 +12105,6 @@ void ospf_vty_show_init(void)
/* "show ip ospf vrfs" commands. */
install_element(VIEW_NODE, &show_ip_ospf_vrfs_cmd);
- /* "show ip ospf gr-helper details" command */
- install_element(VIEW_NODE, &show_ip_ospf_gr_helper_cmd);
-
/* "show ip ospf summary-address" command */
install_element(VIEW_NODE, &show_ip_ospf_external_aggregator_cmd);
}
@@ -12721,18 +12215,6 @@ static void ospf_vty_zebra_init(void)
install_element(OSPF_NODE, &no_ospf_distance_ospf_cmd);
install_element(OSPF_NODE, &ospf_distance_ospf_cmd);
- /*Ospf garcefull restart helper configurations */
- install_element(OSPF_NODE, &ospf_gr_helper_enable_cmd);
- install_element(OSPF_NODE, &no_ospf_gr_helper_enable_cmd);
- install_element(OSPF_NODE, &ospf_gr_helper_only_cmd);
- install_element(OSPF_NODE, &no_ospf_gr_helper_only_cmd);
- install_element(OSPF_NODE, &ospf_gr_helper_enable_lsacheck_cmd);
- install_element(OSPF_NODE, &no_ospf_gr_helper_enable_lsacheck_cmd);
- install_element(OSPF_NODE, &ospf_gr_helper_supported_grace_time_cmd);
- install_element(OSPF_NODE, &no_ospf_gr_helper_supported_grace_time_cmd);
- install_element(OSPF_NODE, &ospf_gr_helper_planned_only_cmd);
- install_element(OSPF_NODE, &no_ospf_gr_helper_planned_only_cmd);
-
/* External LSA summarisation config commands.*/
install_element(OSPF_NODE, &ospf_external_route_aggregation_cmd);
install_element(OSPF_NODE, &no_ospf_external_route_aggregation_cmd);
diff --git a/pimd/pim_msdp.c b/pimd/pim_msdp.c
index ddba33ff9d..fa7f1da79a 100644
--- a/pimd/pim_msdp.c
+++ b/pimd/pim_msdp.c
@@ -1304,7 +1304,6 @@ int pim_msdp_config_write(struct pim_instance *pim, struct vty *vty,
struct pim_msdp_mg *mg;
struct listnode *mbrnode;
struct pim_msdp_mg_mbr *mbr;
- char mbr_str[INET_ADDRSTRLEN];
char src_str[INET_ADDRSTRLEN];
int count = 0;
@@ -1321,10 +1320,8 @@ int pim_msdp_config_write(struct pim_instance *pim, struct vty *vty,
}
for (ALL_LIST_ELEMENTS_RO(mg->mbr_list, mbrnode, mbr)) {
- pim_inet4_dump("<mbr?>", mbr->mbr_ip, mbr_str,
- sizeof(mbr_str));
- vty_out(vty, "%sip msdp mesh-group %s member %s\n",
- spaces, mg->mesh_group_name, mbr_str);
+ vty_out(vty, "%sip msdp mesh-group %s member %pI4\n",
+ spaces, mg->mesh_group_name, &mbr->mbr_ip);
++count;
}
}
diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in
index a7286d1878..229104baff 100644
--- a/redhat/frr.spec.in
+++ b/redhat/frr.spec.in
@@ -199,6 +199,8 @@ Requires: initscripts
BuildRequires: pam-devel
%endif
%if "%{initsystem}" == "systemd"
+BuildRequires: systemd
+BuildRequires: systemd-devel
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
@@ -394,6 +396,9 @@ routing state through standard SNMP MIBs.
--disable-bgp-vnc \
%endif
--enable-isisd \
+%if "%{initsystem}" == "systemd"
+ --enable-systemd \
+%endif
--enable-rpki \
%if %{with_bfdd}
--enable-bfdd \
@@ -768,9 +773,428 @@ sed -i 's/ -M rpki//' %{_sysconfdir}/frr/daemons
%changelog
-* Fri Oct 30 2020 Martin Winter <mwinter@opensourcerouting.org> - %{version}
-- Moved RPKI to subpackage
-- Added SNMP subpackage
+* Tue Nov 4 2021 Martin Winter <mwinter@opensourcerouting.org> - %{version}
+
+* Tue Nov 2 2021 Jafar Al-Gharaibeh <jafar@atcorp.com> - 8.1
+- FRR 8.1 brings a long list of enhancements and fixes with 1200 commits from
+- 75 developers. Thanks to all contributers.
+- New Features:
+- Lua hooks are now feature complete, with one hook available for use (http://docs.frrouting.org/en/latest/scripting.html)
+- Improvements to SRv6 (Segment Routing over IPv6) (http://docs.frrouting.org/en/latest/zebra.html#segment-routing-ipv6)
+- Improvements to Prefix-SID (Type 5)
+- EVPN route type-5 gateway IP overlay Index (http://docs.frrouting.org/en/latest/bgp.html#evpn-overlay-index-gateway-ip)
+- OSPFv3 NSSA and NSSA totally stub areas (http://docs.frrouting.org/en/latest/ospf6d.html#ospf6-area)
+- OSPFv3 ASBR summarization (http://docs.frrouting.org/en/latest/ospf6d.html#asbr-summarisation-support-in-ospfv3)
+- OSPFv3 Graceful Restart (http://docs.frrouting.org/en/latest/ospf6d.html#graceful-restart)
+- OSPFv2 Graceful Restart (restarting mode added, helper was already implemented) (http://docs.frrouting.org/en/latest/ospfd.html#graceful-restart)
+- Behavior Changes
+- Every node in running config now has an explicit "exit" tag
+- Link bandwidth in BGP is now correctly encoded according to IEEE 754. To stay with old incorrect encoding use:
+- `neighbor PEER disable-link-bw-encoding-ieee`
+- Changelog
+- alpine:
+ Fix path for daemons file install
+- BGP:
+- Add "json" option to "show bgp as-path-access-list"
+- Add `disable-addpath-rx` knob
+- Add an ability to set extcommunity to none in route-maps
+- Add counter of displayed show bgp summary when filtering
+- Add knob to config cond-adv scanner period
+- Add route-map `match alias` command
+- Add rpki source address configuration
+- Add show bgp summary filter by neighbor or as
+- Add terse display option on show bgp summary
+- Allow for auto-completion of community alias's created
+- Bgp knob to teardown session immediately when peer is unreachable
+- Expand 'bgp default <afi>-<safi>' cmds
+- Extend evpn next hop tracking to type-1 and type-4 routes
+- Fix "no router bgp x vrf default"
+- Flowspec redirect vrf uses vrf table instead of allocated table id
+- Handle quick flaps of an evpn prefix properly
+- Initial batch of evpn lttng tracepoints
+- Limit processing to what is needed in rpki validation
+- Modify vrf/view display in show bgp summary
+- Set 4096 instead of 65535 as new max packet size for a new peer
+- Set extended msg size only if we advertised and received capability
+- Show bgp community alias in json community list output
+- Show bgp prefixes by community alias
+- Show max packet size per update-group
+- Split soft reconfigure table task into several jobs to not block vtysh
+- Store distance received from a redistribute statement
+- Update route-type-1 legend to match output
+- ISIS:
+- Fix sending of lsp with null seqno
+- lib:
+- Add "json" option to "show ip[v6] access-list"
+- Add "json" option to "show ip[v6] prefix-list"
+- Add "json" option to "show route-map"
+- Prevent grpc assert on missing yang node
+- NHRP:
+- Clear cache when shortcuts are cleared
+- Fix corrupt address being shown for shortcuts with no cache entry
+- Set prefix correctly in resolution request
+- OSPF6:
+- Add debug commands for lsa all and route all
+- Add warning log for late hello packets
+- Add write-multiplier configuration
+- Don't update router-id if at least one adjacency is full
+- Extend the "redistribute" command with more options
+- Fix issue when displaying the redistribute command
+- Fix logging of border router routes
+- Json output for database dump show command
+- Link state id in lsa database json output
+- Send lsa update immediately when ospf instance is deleted
+- OSPF:
+- Fix crash when creating vlink in unknown vrf
+- Gr conformance fix for hello packet dr election
+- Print extra lsa information in some log messages
+- Rfc conformance test case 25.23 issue fix
+- Show ip ospf route json does not shown metric and tag
+- Summary lsa is not originated when process is reset
+- pathd:
+- Handle pcinitiated configuration, main thread
+- Handle pcinitiated messages, thread controller
+- Handle srp_id correctly
+- If pce ret no-path to pcreq don't retry pcreq nor delegate
+- PBR:
+- Add `match ip-protocol [tcp|udp]`
+- Add ability to set/unset src and dest ports
+- Nhg "add" edge case for last in table range
+- Start inclusion of src and dst ports for pbrd
+- PIM:
+- Add tos/ttl check for igmp conformance
+- Allow join prune intervals to be as small as 5 seconds
+- Allow msdp group name 'default'
+- Fix register suppress timer code
+- Fix uaf/heap corruption in bsm code
+- Fix command "no ip msdp mesh-group member"
+- Igmp groups are not getting timeout
+- Igmp memberships are not querier specific
+- Igmp sockets need to be iface-bound too
+- Prevent uninited usage of nexthop
+- Support msdp global timers configuration
+- vtysh
+- Add cli timestamp '-t' flag
+- Add error code if daemon is not running
+- Fix searching commands in parent nodes
+- yang:
+- Add msdp timer configuration
+- Fix bgp multicast prefix type
+- Mark a couple of prefix-list/access-list leafs as mandatory
+- Move multicast prefix type definition
+- Replace an empty pattern with a zero-length restriction
+- Rework pim msdp mesh group
+- Simplify msdp peer handling
+- zebra :
+- Add "json" option to "show interface"
+- Various improvment to dataplane interface
+- Add message counts for `show zebra client`
+- Add nhg id to show ip route json
+- Add show command for ra interface lists
+- Fix ipv4 routes with ipv6 link local next hops install in fpm
+- Handle bridge mac address update in evpn contexts
+- Move individual lines to table in `show zebra client` command
+- Refresh vxlan evpn contexts, when bridge interface goes up
+- Update zl3vni when bridge link refreshed in other namespaces
+
+* Wed Jul 21 2021 Martin Winter <mwinter@opensourcerouting.org> - 8.0
+- Major changes
+- New daemon pathd for segment routing
+- EVPN Multihoming is now fully supported
+- OSPFv3 now supports VRFs
+- TI-LFA has been implemented in IS-IS and OSPF
+- Ability for Zebra to dump netlink messages in a human-friendly format
+- LDP gained SNMP support
+- libyang minimun version is now 2.0
+- BABEL:
+- Add `distribute-list` commands
+- Fix memory leak in connected route handling
+- BGP:
+- Add support for use of aliases with communities
+- Add support of tcp-mss for neighbors
+- Add support for EVPN Multihoming
+- Add ability to show BGP routes from a particular table version
+- Add support for for RFC 8050 (MRT add-path)
+- Add SNMP support for MPLS VPN
+- Add `show bgp summary wide` command to show more detailed output
+ on wide terminals
+- Add ability for peer-groups to have `ttl-security hops` configured
+- Add support for conditional Advertisement
+- Add support for RFC 4271 Delay Open Timer
+- Add a knob to not advertise until route is installed in fib
+- Add BGP-wide configuration for graceful shutdown
+- Add support for RFC 8654 extended messages
+- Improve RPKI reporting as well as new show commands
+- Improve handling of VRF route leaking
+- Improve scaling behavior for dynamic neighbors
+- Improve LL nexthop tracking to be interface based
+- Improve route reachability handling with respect to blackhole routes
+- Improve SNMP traps to RFC 4273 notifications
+- Improve EVPN routes to use L3 NHG's where applicable
+- Improvements to EVPN
+- Improvements to update behavior
+- Fix various issues with connection resolution
+- Fix statistics commands in some situations
+- Fix non-determistic locally-originated paths in bestpath selection
+- Continue working on transitioning to YANG/Northbound configuration
+- Various bug fixes and performance improvements
+- EIGRP:
+- Add `distribute-list` commands
+- Ensure received AS number is the same as ours in all situations
+- Properly validate TLV lengths in some situations
+- IS-IS:
+- Add ldb-sync functionality
+- Add TI-LFA functionality
+- Add support for Anycast-SID's
+- Add support for classic LFA RFC 5286
+- Add `show isis fast-reroute summary` command
+- Add support for Remote LFA RFC 7490
+- Fix Attach-bit processing in some scenarios
+- Cleanup BFD integration
+- Various bug fixes and performance improvements
+- LDP:
+- Add SNMP support
+- Support for LDP IGP Synchronization
+- Support for RLFA clients
+- Various bug fixes and performance improvements
+- LIBFRR:
+- Various bugfixes and performance improvements
+- NHRP:
+- Add `nhrp multicast-nflog-group (1-65535)` command
+- Add configuration options for vici socket path
+- Add support for forwarding multicast packets
+- Fix handling of MTU
+- Fix handling of NAT extension
+- Retry IPsec under some conditions
+- OSPFv2:
+- Add OSPF GR helper support
+- Add JSON support for various commands
+- Add `summary-address A.B.C.D/M ...` commands
+- Add `area X nssa suppress-fa` command
+- Add support for TI-LFA
+- Add support for BFD profiles
+- Add support for Traffic Engineering database
+- Add support for usage of DMPVPN with OSPF
+- Add `clear ip ospf neighbor` commands
+- Add YANG support for route-maps
+- Improvements to SNMP
+- Fixes for type 5 and type 7 LSA handling
+- Various bug fixes and performance improvements
+- OSPFv3:
+- Add support for VRFs
+- Add JSON support to a bunch of commands
+- Add ability to control maximum paths for routes
+- Add `show ipv6 ospf6 vrfs` command
+- Add support for BFD profiles
+- Fix to not send hellos on loopbacks
+- Cleanup area handling around interfaces
+- YANG support for route-maps
+- Various bug fixes and performance improvements
+- OSPFCLIENT:
+- Cleanup trust of user input
+- PATHd:
+- Add support of SR-TE policy management daemon
+- Add optional support for PCEP to pathd
+- Integrate PCEP-LIB into FRR
+- PBR:
+- Add `set installable` nhg command
+- Improve interface up/down event handling
+- PIM:
+- Add YANG integration
+- Add JSON support to various commands
+- Add BFD profile support
+- Fixes to IGMP conformance
+- Fixes to behavior surrounding Prune and Prune-pending
+- Various bug fixes and performance improvements
+- RIPNG:
+- Fix interface wakeup after shutdown
+- SHARP:
+- Add ability to use Nexthop Groups
+- Add v4 redistribute watching
+- Add TED support
+- Various bug fixes
+- STATIC:
+- Fix nexthop handling in some situations
+- Forbid blackhole and non-blackhole nexthops in a single route
+- VRRP:
+- printf formatting cleanups
+- VTYSH:
+- Add a `show history` command
+- Add `show memory <daemon>` support
+- Start deprecation cycle for `address-family evpn`
+- Display version with --help
+- Various bug fixes
+- WATCHFRR:
+- Fix some crashes
+- ZEBRA:
+- Add JSON support to various commands
+- Add Human readable netlink dumps
+- Add L2 NHG support
+- Add support for LSPs to FPM dataplane
+- Add ability for other protocol daemons to install nexthop groups into the kernel
+- Add YANG support for route-maps
+- Improve scale performance when handling a large number of VRF's
+- Improve network namespace handling
+- Improve asic-offload handling
+- Improve FreeBSD interface and route handling
+- Improve handling of neighbors in kernel dataplane plugin
+- Improve label manager
+- Improve route-map processing
+- Improve debug-ability of routes and VRFs
+- Improve FPM dataplane plugin
+- Improve handling of reachability / nexthop tracking on shutdown interfaces
+- Improve EVPN support
+- Fix startup handling of `set src X`
+- Various bug fixes and performance improvements
+
+* Wed Mar 3 2021 Martin Winter <mwinter@opensourcerouting.org> - 7.5.1
+- BABEL:
+- Fix connected route leak on change
+- BFD:
+- Session lookup was sometimes wrong
+- Memory leak and handling cleanups
+- In some situations handle vrf appropriately when receiving packets
+- BGP:
+- Peer Group Inheritance Fixes
+- Dissallow attempt to peer peers reachable via blackholes
+- Send BMP down message when reachability fails
+- Cleanup handling of aggregator data when the AGG AS is 0
+- Handle `neighbor <peer-group allowas-in` config changes properly
+- Properly parse community and lcommunity values in some circumstances
+- Allow peer-groups to configure `ttl-security hops`
+- Prevent v6 routes with v4 nexthops from being installed
+- Allow `default-originate` to be cleared from a peer group
+- Fix evpn route-map vni filter at origin
+- local routes were using non-default distance
+- Properly track if the nexthop was updated in some circumstances
+- Cleanup `show running` when running bgp with `-e X` values
+- Various Memory leaks in show commands
+- Properly withdraw exported routes when deleting a VRF
+- Avoid resetting ebgp-multihop if peer setting is the same as peer-group
+- Properly encode flowspec rules to zebra in some rare circumstances
+- Generate statistics for routes in bgp when we have exactly 1 route
+- Properly apply route-map for the default-originate command
+- EIGRP:
+- Properly set MTU for eigrp packets sent
+- Various memory leaks and using uninited data fixes
+- ISIS:
+- When last area address is removed, resign if we were the DR
+- Various memory leaks and using uninited data fixes
+- LDP:
+- Various memory leaks and using uninited data fixes
+- NHRP:
+- Use onlink routes when prefix == nh
+- Shortcut routes are installed with proper nexthop
+- OSPF:
+- Prevent duplicate packet read in multiple vrf situation
+- Fix area removal at interface level
+- Restore Point to MultiPoint interface types
+- Correctly handle MTU change on startup
+- Multi Instance initialization sometimes was not successful
+- NSSA translate-always was not working properly
+- OSPFv3:
+- Don't send hellos on loopback interfaces
+- Handle ECMP better when a sub-path is removed
+- Memory leak and handling fixes
+- Fix Link LSA not updating when router priority is modified
+- Some output from show commands was wrong
+- Intra area remote connected prefixes sometimes not installed
+- PBR:
+- Various memory leaks and using uninited data fixes
+- PIM:
+- SGRpt prune received during prune didn't override holdtime
+- Various memory leaks and using uninited data fixes
+- STATIC:
+- Fix VRF and usage on startup in some instances
+- Tableid was being mishandled in some cases
+- VTYSH:
+- Disable bracketed paste in readline.
+- WATCHFRR:
+- Various memory leaks and using uninited data fixes
+- ZEBRA:
+- Always install blackhole routes using kernel routes instead of nexthops
+- Various memory leaks and using uninited data fixes
+- Dissallow resolution to duplicate nexthops that created infinite nexthops
+- Apply the route-map delay-timer globally
+- Some routes were stuck in Queued state when using the FPM
+- Better handle vrf creation when using namespaces
+- Set NUD_NOARP on sticky mac entries in addtion to NTF_STICKY
+- Allow `set src X` to work on startup
+- FRR Library:
+- Fix a variety of memory leaks
+- Fix VRF Creation in some instances
+- RPKI context editing was not properly handled in reload situations
+- routemap code was not properly handling modification of CLI in some instances
+- SNAPCRAFT:
+- Update to using rtrlib 0.7.0
+- Fix passthrough path for Libyang 1.x
+- ALPINE:
+- Remove old docker deps
+
+* Mon Nov 2 2020 Donald Sharp <sharpd@nvidia.com> - 7.5
+- BFD
+- Profile support
+- Minimum ttl support
+- BGP
+- rpki VRF support
+- GR fixes
+- Add wide option to display of routes
+- Add `maximum-prefix <num> force`
+- Add `bestpath-routes` to neighbor command
+- Add `bgp shutdown message MSG...` command
+- Add v6 Flowspec support
+- Add `neighbor <neigh> shutdown rtt` command
+- Allow update-delay to be applied globaly
+- EVPN
+- Beginning of MultiHoming Support
+- ISIS
+- Segment Routing Support
+- VRF Support
+- Guard against adj timer display overflow
+- Add support for Anycast-SIDs
+- Add support for Topology Independent LFA (TI-LFA)
+- Add `lsp-gen-interval 2` to isis configuration
+- OSPF
+- Segment Routing support for ECMP
+- Various LSA fixes
+- Prevent crash if transferring config amongst instances
+- PBR
+- Adding json support to commands
+- DSCP/ECN based PBR Matching
+- PIM
+- Add more json support to commands
+- Fix missing mesh-group commands
+- MSDP SA forwarding
+- Clear (s,g,rpt) ifchannel on (*, G) prune received
+- Fix igmp querier election and IP address mapping
+- Crash fix when RP is removed
+- STATIC
+- Northbound Support
+- YANG
+- Filter and route-map Support
+- OSPF model definition
+- BGP model definition
+- VTYSH
+- Speed up output across daemons
+- Fix build-time errors for some --enable flags
+- Speed up output of configuration across daemons
+- ZEBRA
+- nexthop group support for FPM
+- northbound support for rib model
+- Backup nexthop support
+- netlink batching support
+- Allow upper level protocols to request ARP
+- Add json output for zebra ES, ES-EVI and access vlan dumps
+-
+- Upgrade to using libyang1.0.184
+-
+- RPM
+- Moved RPKI to subpackage
+- Added SNMP subpackage
+-
+- As always there are too many bugfixes to list individually. This release
+- compromises just over 1k of commits by the community, with contributors from
+- 70 people.
* Tue Jun 30 2020 Martin Winter <mwinter@opensourcerouting.org> - 7.4
- BGPd
diff --git a/tests/topotests/lib/bgprib.py b/tests/topotests/lib/bgprib.py
index a216e3588e..35a57d0a99 100644
--- a/tests/topotests/lib/bgprib.py
+++ b/tests/topotests/lib/bgprib.py
@@ -122,7 +122,7 @@ class BgpRib:
luResult(target, True, title, logstr)
def RequireUnicastRoutes(self, target, afi, vrf, title, wantroutes, debug=0):
- logstr = "RequireVpnRoutes %s" % str(wantroutes)
+ logstr = "RequireUnicastRoutes %s" % str(wantroutes)
vrfstr = ""
if vrf != "":
vrfstr = "vrf %s" % (vrf)
diff --git a/tests/topotests/ospf_gr_helper/test_ospf_gr_helper.py b/tests/topotests/ospf_gr_helper/test_ospf_gr_helper.py
index 2c7c6df37e..b7a10d630a 100644
--- a/tests/topotests/ospf_gr_helper/test_ospf_gr_helper.py
+++ b/tests/topotests/ospf_gr_helper/test_ospf_gr_helper.py
@@ -100,6 +100,8 @@ TC8. Verify helper functionality when dut is helping RR and new grace lsa
def setup_module(mod):
+ return pytest.skip("OSPF GR helper mode is currently broken")
+
"""
Sets up the pytest environment
diff --git a/tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py b/tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py
index debf7ad766..4b69d82887 100755
--- a/tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py
+++ b/tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py
@@ -139,6 +139,8 @@ def build_topo(tgen):
def setup_module(mod):
+ return pytest.skip("OSPF GR helper mode is currently broken")
+
"Sets up the pytest environment"
tgen = Topogen(build_topo, mod.__name__)
tgen.start_topology()
diff --git a/zebra/zebra_ptm.c b/zebra/zebra_ptm.c
index ec68f585e3..b1d2f1f0b3 100644
--- a/zebra/zebra_ptm.c
+++ b/zebra/zebra_ptm.c
@@ -613,7 +613,7 @@ static int zebra_ptm_handle_msg_cb(void *arg, void *in_ctxt)
int count = 0;
RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) {
- ifp = if_lookup_by_name_vrf(ifname, vrf);
+ ifp = if_lookup_by_name_vrf(port_str, vrf);
if (ifp) {
count++;
if (!vrf_is_backend_netns())