summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2016-11-28 17:35:08 +0100
committerDavid Lamparter <equinox@opensourcerouting.org>2016-11-28 17:35:08 +0100
commitcdf76126497e0346e0cbb6fb27db2d24b3bc872e (patch)
tree43a505ff49a17f660e7f1a61fbb47ab1179d91ae
parent7fc0257282f6a719304018de7367ef9675cb63fb (diff)
parent18653436b7e7e5cb7a3ea8ba8a182598cbfbd247 (diff)
Merge remote-tracking branch 'cmaster-next' into cmaster-next-releng
-rw-r--r--debian/changelog12
-rw-r--r--isisd/isis_circuit.c4
-rw-r--r--lib/nexthop.c1
-rwxr-xr-xvtysh/extract.pl.in1
-rw-r--r--vtysh/vtysh.c12
-rw-r--r--vtysh/vtysh_config.c13
-rw-r--r--zebra/interface.c19
-rw-r--r--zebra/zebra_rnh.c69
8 files changed, 89 insertions, 42 deletions
diff --git a/debian/changelog b/debian/changelog
index 22263ac059..f17f89eaff 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,14 @@
quagga (0.99.24+cl3u5) RELEASED; urgency=medium
- * Closes:
-
- -- dev-support <dev-support@cumulusnetworks.com> Fri, 28 Oct 2016 20:43:14 -0400
+ * Closes: CM-12846 - Resolve Memory leaks in 'show ip bgp neighbor json'
+ * Closes: CM-5878 - Display all ospf peers with 'show ip ospf neighbor detail all'
+ * Closes: CM-5794 - Add support for IPv6 static to null0
+ * Closes: CM-13060 - Reduce JSON memory usage.
+ * Closes: CM-10394 - protect 'could not get instance' error messages with debug
+ * Closes: CM-11173 - Move netlink error messages undeer a debug
+ * Closes: CM-13328 - Fixes route missing in hardware after reboot
+
+ -- dev-support <dev-support@cumulusnetworks.com> Fri, 11 Nov 2016 22:13:29 -0400
quagga (0.99.24+cl3u4) RELEASED; urgency=medium
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index 7eee46ef48..c5812a658d 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -719,8 +719,8 @@ isis_circuit_up (struct isis_circuit *circuit)
THREAD_READ_ON (master, circuit->t_read, isis_receive, circuit,
circuit->fd);
#else
- THREAD_TIMER_ON (master, circuit->t_read, isis_receive, circuit,
- circuit->fd);
+ THREAD_TIMER_MSEC_ON (master, circuit->t_read, isis_receive, circuit,
+ listcount (circuit->area->circuit_list) * 100);
#endif
circuit->lsp_queue = list_new ();
diff --git a/lib/nexthop.c b/lib/nexthop.c
index d7d8f0cd30..7b8ac95e83 100644
--- a/lib/nexthop.c
+++ b/lib/nexthop.c
@@ -82,7 +82,6 @@ nexthop_type_to_str (enum nexthop_types_t nh_type)
static const char *desc[] = {
"none",
"Directly connected",
- "Interface route",
"IPv4 nexthop",
"IPv4 nexthop with ifindex",
"IPv6 nexthop",
diff --git a/vtysh/extract.pl.in b/vtysh/extract.pl.in
index 565391b659..3e85936069 100755
--- a/vtysh/extract.pl.in
+++ b/vtysh/extract.pl.in
@@ -65,6 +65,7 @@ $ignore{'"address-family encapv6"'} = "ignore";
$ignore{'"address-family vpnv6"'} = "ignore";
$ignore{'"address-family vpnv6 unicast"'} = "ignore";
$ignore{'"exit-address-family"'} = "ignore";
+$ignore{'"exit-link-params"'} = "ignore";
$ignore{'"vnc defaults"'} = "ignore";
$ignore{'"vnc nve-group NAME"'} = "ignore";
$ignore{'"exit-vnc"'} = "ignore";
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 17dd58a4a8..6c00058c18 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -1976,6 +1976,17 @@ DEFUNSH (VTYSH_ZEBRA,
return CMD_SUCCESS;
}
+DEFUNSH (VTYSH_ZEBRA,
+ exit_link_params,
+ exit_link_params_cmd,
+ "exit-link-params",
+ "Exit from Link Params configuration node\n")
+{
+ if (vty->node == LINK_PARAMS_NODE)
+ vty->node = INTERFACE_NODE;
+ return CMD_SUCCESS;
+}
+
/* Memory */
DEFUN (vtysh_show_memory,
vtysh_show_memory_cmd,
@@ -3288,6 +3299,7 @@ vtysh_init_vty (void)
install_element (INTERFACE_NODE, &no_interface_desc_cmd);
install_element (INTERFACE_NODE, &vtysh_end_all_cmd);
install_element (INTERFACE_NODE, &vtysh_exit_interface_cmd);
+ install_element (LINK_PARAMS_NODE, &exit_link_params_cmd);
install_element (LINK_PARAMS_NODE, &vtysh_end_all_cmd);
install_element (LINK_PARAMS_NODE, &vtysh_exit_interface_cmd);
install_element (INTERFACE_NODE, &vtysh_quit_interface_cmd);
diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c
index 4ec0e00286..e60e9c091f 100644
--- a/vtysh/vtysh_config.c
+++ b/vtysh/vtysh_config.c
@@ -171,7 +171,18 @@ vtysh_config_parse_line (const char *line)
/* Store line to current configuration. */
if (config)
{
- if (config->index == RMAP_NODE ||
+ if (strncmp (line, " link-params", strlen (" link-params")) == 0)
+ {
+ config_add_line (config->line, line);
+ config->index = LINK_PARAMS_NODE;
+ }
+ else if (config->index == LINK_PARAMS_NODE &&
+ strncmp (line, " exit-link-params", strlen (" exit")) == 0)
+ {
+ config_add_line (config->line, line);
+ config->index = INTERFACE_NODE;
+ }
+ else if (config->index == RMAP_NODE ||
config->index == INTERFACE_NODE ||
config->index == NS_NODE ||
config->index == VTY_NODE)
diff --git a/zebra/interface.c b/zebra/interface.c
index 0f4d2ee9e4..b87f61f920 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -1773,6 +1773,16 @@ DEFUN (link_params,
return CMD_SUCCESS;
}
+DEFUN (exit_link_params,
+ exit_link_params_cmd,
+ "exit-link-params",
+ "Exit from Link Params configuration mode\n")
+{
+ if (vty->node == LINK_PARAMS_NODE)
+ vty->node = INTERFACE_NODE;
+ return CMD_SUCCESS;
+}
+
/* Specific Traffic Engineering parameters commands */
DEFUN (link_params_enable,
link_params_enable_cmd,
@@ -2814,6 +2824,7 @@ link_params_config_write (struct vty *vty, struct interface *ifp)
if (IS_PARAM_SET(iflp, LP_RMT_AS))
vty_out(vty, " neighbor %s as %u%s", inet_ntoa(iflp->rmt_ip),
iflp->rmt_as, VTY_NEWLINE);
+ vty_out(vty, " exit-link-params%s", VTY_NEWLINE);
return 0;
}
@@ -2978,15 +2989,23 @@ zebra_if_init (void)
install_element(LINK_PARAMS_NODE, &link_params_max_rsv_bw_cmd);
install_element(LINK_PARAMS_NODE, &link_params_unrsv_bw_cmd);
install_element(LINK_PARAMS_NODE, &link_params_admin_grp_cmd);
+ install_element(LINK_PARAMS_NODE, &no_link_params_admin_grp_cmd);
install_element(LINK_PARAMS_NODE, &link_params_inter_as_cmd);
install_element(LINK_PARAMS_NODE, &no_link_params_inter_as_cmd);
install_element(LINK_PARAMS_NODE, &link_params_delay_cmd);
+ install_element(LINK_PARAMS_NODE, &no_link_params_delay_cmd);
install_element(LINK_PARAMS_NODE, &link_params_delay_mm_cmd);
install_element(LINK_PARAMS_NODE, &link_params_delay_var_cmd);
+ install_element(LINK_PARAMS_NODE, &no_link_params_delay_var_cmd);
install_element(LINK_PARAMS_NODE, &link_params_pkt_loss_cmd);
+ install_element(LINK_PARAMS_NODE, &no_link_params_pkt_loss_cmd);
install_element(LINK_PARAMS_NODE, &link_params_ava_bw_cmd);
+ install_element(LINK_PARAMS_NODE, &no_link_params_ava_bw_cmd);
install_element(LINK_PARAMS_NODE, &link_params_res_bw_cmd);
+ install_element(LINK_PARAMS_NODE, &no_link_params_res_bw_cmd);
install_element(LINK_PARAMS_NODE, &link_params_use_bw_cmd);
+ install_element(LINK_PARAMS_NODE, &no_link_params_use_bw_cmd);
+ install_element(LINK_PARAMS_NODE, &exit_link_params_cmd);
install_element (CONFIG_NODE, &zebra_vrf_cmd);
install_element (CONFIG_NODE, &no_vrf_cmd);
diff --git a/zebra/zebra_rnh.c b/zebra/zebra_rnh.c
index f88a6f0a98..062f9d3831 100644
--- a/zebra/zebra_rnh.c
+++ b/zebra/zebra_rnh.c
@@ -542,31 +542,28 @@ zebra_rnh_process_static_routes (vrf_id_t vrfid, int family,
RNODE_FOREACH_RIB(static_rn, srib)
{
if (srib->type == ZEBRA_ROUTE_STATIC)
- break; /* currently works for only 1 static route. */
- }
+ continue;
- if (!srib) // unexpected
- continue;
+ /* Set the filter flag for the correct nexthop - static route may
+ * be having multiple. We care here only about registered nexthops.
+ */
+ for (nexthop = srib->nexthop; nexthop; nexthop = nexthop->next)
+ {
+ switch (nexthop->type)
+ {
+ case NEXTHOP_TYPE_IPV4:
+ case NEXTHOP_TYPE_IPV4_IFINDEX:
+ if (nexthop->gate.ipv4.s_addr == nrn->p.u.prefix4.s_addr)
+ {
+ if (num_resolving_nh)
+ UNSET_FLAG(nexthop->flags, NEXTHOP_FLAG_FILTERED);
+ else
+ SET_FLAG(nexthop->flags, NEXTHOP_FLAG_FILTERED);
+ }
+ break;
+ case NEXTHOP_TYPE_IPV6:
+ case NEXTHOP_TYPE_IPV6_IFINDEX:
- /* Set the filter flag for the correct nexthop - static route may
- * be having multiple. We care here only about registered nexthops.
- */
- for (nexthop = srib->nexthop; nexthop; nexthop = nexthop->next)
- {
- switch (nexthop->type)
- {
- case NEXTHOP_TYPE_IPV4:
- case NEXTHOP_TYPE_IPV4_IFINDEX:
- if (nexthop->gate.ipv4.s_addr == nrn->p.u.prefix4.s_addr)
- {
- if (num_resolving_nh)
- UNSET_FLAG(nexthop->flags, NEXTHOP_FLAG_FILTERED);
- else
- SET_FLAG(nexthop->flags, NEXTHOP_FLAG_FILTERED);
- }
- break;
- case NEXTHOP_TYPE_IPV6:
- case NEXTHOP_TYPE_IPV6_IFINDEX:
if (memcmp(&nexthop->gate.ipv6,&nrn->p.u.prefix6, 16) == 0)
{
if (num_resolving_nh)
@@ -580,20 +577,22 @@ zebra_rnh_process_static_routes (vrf_id_t vrfid, int family,
}
}
- if (IS_ZEBRA_DEBUG_NHT)
- {
- prefix2str(&static_rn->p, bufs, INET6_ADDRSTRLEN);
- if (prn && rib)
- zlog_debug("%u:%s: NH change %s, scheduling static route %s",
- vrfid, bufn, num_resolving_nh ?
- "" : "(filtered by route-map)", bufs);
- else
- zlog_debug("%u:%s: NH unreachable, scheduling static route %s",
- vrfid, bufn, bufs);
+ if (IS_ZEBRA_DEBUG_NHT)
+ {
+ prefix2str(&static_rn->p, bufs, INET6_ADDRSTRLEN);
+ if (prn && rib)
+ zlog_debug("%u:%s: NH change %s, scheduling static route %s",
+ vrfid, bufn, num_resolving_nh ?
+ "" : "(filtered by route-map)", bufs);
+ else
+ zlog_debug("%u:%s: NH unreachable, scheduling static route %s",
+ vrfid, bufn, bufs);
+ }
+
+ SET_FLAG(srib->status, RIB_ENTRY_CHANGED);
+ SET_FLAG(srib->status, RIB_ENTRY_NEXTHOPS_CHANGED);
}
- SET_FLAG(srib->status, RIB_ENTRY_CHANGED);
- SET_FLAG(srib->status, RIB_ENTRY_NEXTHOPS_CHANGED);
rib_queue_add(static_rn);
}
}