From b063aa21391622da3b7c1735b2bac2511935b797 Mon Sep 17 00:00:00 2001 From: Jafar Al-Gharaibeh Date: Tue, 2 May 2017 17:23:34 -0500 Subject: [PATCH 1/6] Fix: Off by one error, correct index for hold timer Signed-off-by: Jafar Al-Gharaibeh --- pimd/pim_cmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 29cf248e6c..63554797ce 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -5081,7 +5081,7 @@ DEFUN (interface_ip_pim_hello, pim_ifp->pim_hello_period = strtol(argv[idx_time]->arg, NULL, 10); - if (argc == idx_hold) + if (argc == idx_hold + 1) pim_ifp->pim_default_holdtime = strtol(argv[idx_hold]->arg, NULL, 10); return CMD_SUCCESS; From 1c72f1a08da59224e41a7c4d470491eeba3f09ee Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 3 May 2017 08:11:38 -0400 Subject: [PATCH 2/6] zebra: Fix leaked memory in label manager code When we fail to properly setup we can leak some memory. Signed-off-by: Donald Sharp --- zebra/label_manager.c | 1 + 1 file changed, 1 insertion(+) diff --git a/zebra/label_manager.c b/zebra/label_manager.c index 9f8378572f..bf67141cd4 100644 --- a/zebra/label_manager.c +++ b/zebra/label_manager.c @@ -228,6 +228,7 @@ struct label_manager_chunk *assign_label_chunk(u_char proto, u_short instance, if (lmc->start > MPLS_MAX_UNRESERVED_LABEL - size + 1) { zlog_err("Reached max labels. Start: %u, size: %u", lmc->start, size); + XFREE(MTYPE_LM_CHUNK, lmc); return NULL; } lmc->end = lmc->start + size - 1; From 6cf3661ddf2853fe4a3d29fd0f0d5251aa5abefc Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Wed, 3 May 2017 10:03:14 -0300 Subject: [PATCH 3/6] ospfd: fix small problem in the redistribute command The use of {<>} is unnecessary and not correct. Signed-off-by: Renato Westphal --- ospfd/ospf_vty.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 776cf21ae3..cdee15304c 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -7160,7 +7160,7 @@ DEFUN (no_ospf_redistribute_source, DEFUN (ospf_redistribute_instance_source, ospf_redistribute_instance_source_cmd, - "redistribute (1-65535) {}", + "redistribute (1-65535) {metric (0-16777214)|metric-type (1-2)|route-map WORD}", REDIST_STR "Open Shortest Path First\n" "Non-main Kernel Routing Table\n" @@ -7231,7 +7231,7 @@ DEFUN (ospf_redistribute_instance_source, DEFUN (no_ospf_redistribute_instance_source, no_ospf_redistribute_instance_source_cmd, - "no redistribute (1-65535) {}", + "no redistribute (1-65535) {metric (0-16777214)|metric-type (1-2)|route-map WORD}", NO_STR REDIST_STR "Open Shortest Path First\n" From ae9b0e11f6d19460ed633265cf275a1d3b747e88 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 3 May 2017 09:13:12 -0400 Subject: [PATCH 4/6] bgpd: Fix crashes with '[no] neighbor ... shutdown ..' command This fixes two crashes: 1) When we enter a 'neighbor shutdown..' command for a peer group or interface based peer we were not properly looking up the peer. 2) When we we enter 'no neighbor shutdown..' command for a peer group or interface based peer we were not properly lookup up the peer. Signed-off-by: Donald Sharp --- bgpd/bgp_vty.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 6197b6107a..db7e62639c 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -3372,6 +3372,9 @@ peer_flag_modify_vty (struct vty *vty, const char *ip_str, return CMD_WARNING; } + if (!set && flag == PEER_FLAG_SHUTDOWN) + peer_tx_shutdown_message_unset (peer); + if (set) ret = peer_flag_set (peer, flag); else @@ -3430,9 +3433,11 @@ DEFUN (neighbor_shutdown_msg, if (argc >= 5) { - struct peer *peer = peer_lookup_vty (vty, argv[idx_peer]->arg); + struct peer *peer = peer_and_group_lookup_vty (vty, argv[idx_peer]->arg); char *message; + if (!peer) + return CMD_WARNING; message = argv_concat (argv, argc, 4); peer_tx_shutdown_message_set (peer, message); XFREE (MTYPE_TMP, message); @@ -3460,9 +3465,6 @@ DEFUN (no_neighbor_shutdown_msg, { int idx_peer = 2; - struct peer *peer = peer_lookup_vty (vty, argv[idx_peer]->arg); - peer_tx_shutdown_message_unset (peer); - return peer_flag_unset_vty (vty, argv[idx_peer]->arg, PEER_FLAG_SHUTDOWN); } From 09b3c328383249c44eb0aa369effc007cec683ed Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 3 May 2017 14:33:28 -0400 Subject: [PATCH 5/6] ospf6d: Fix redistribution debug knowledge When redistributing into ospfv3 specify that the route is add or delete correctly. Signed-off-by: Donald Sharp --- ospf6d/ospf6_zebra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ospf6d/ospf6_zebra.c b/ospf6d/ospf6_zebra.c index 1904623e71..d0c9e4f042 100644 --- a/ospf6d/ospf6_zebra.c +++ b/ospf6d/ospf6_zebra.c @@ -289,7 +289,7 @@ ospf6_zebra_read_ipv6 (int command, struct zclient *zclient, snprintf (nexthopstr, sizeof (nexthopstr), "::"); zlog_debug ("Zebra Receive route %s: %s %s nexthop %s ifindex %ld tag %"ROUTE_TAG_PRI, - (command == ZEBRA_IPV6_ROUTE_ADD ? "add" : "delete"), + (command == ZEBRA_REDISTRIBUTE_IPV6_ADD ? "add" : "delete"), zebra_route_string(api.type), prefixstr, nexthopstr, ifindex, api.tag); } From e1a1b2eddeaa6cab79f81882a3de554994f59f9e Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 3 May 2017 14:39:21 -0400 Subject: [PATCH 6/6] ospf6d: Allow some route-map commands to work The generic callbacks need to be enabled in order for some route-map commands to properly work. I've tried to match up to what is programmed to work within ospfv3. Signed-off-by: Donald Sharp --- ospf6d/ospf6_asbr.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c index 8caae50221..da90e2f966 100644 --- a/ospf6d/ospf6_asbr.c +++ b/ospf6d/ospf6_asbr.c @@ -1170,6 +1170,15 @@ ospf6_routemap_init (void) route_map_set_metric_hook (generic_set_add); route_map_no_set_metric_hook (generic_set_delete); + route_map_match_tag_hook (generic_match_add); + route_map_no_match_tag_hook (generic_match_delete); + + route_map_match_ipv6_address_prefix_list_hook (generic_match_add); + route_map_no_match_ipv6_address_prefix_list_hook (generic_match_delete); + + route_map_match_interface_hook (generic_match_add); + route_map_no_match_interface_hook (generic_match_delete); + route_map_install_match (&ospf6_routemap_rule_match_address_prefixlist_cmd); route_map_install_match (&ospf6_routemap_rule_match_interface_cmd); route_map_install_match (&ospf6_routemap_rule_match_tag_cmd);