diff options
| author | David Lamparter <equinox@opensourcerouting.org> | 2016-11-28 17:35:08 +0100 |
|---|---|---|
| committer | David Lamparter <equinox@opensourcerouting.org> | 2016-11-28 17:35:08 +0100 |
| commit | cdf76126497e0346e0cbb6fb27db2d24b3bc872e (patch) | |
| tree | 43a505ff49a17f660e7f1a61fbb47ab1179d91ae | |
| parent | 7fc0257282f6a719304018de7367ef9675cb63fb (diff) | |
| parent | 18653436b7e7e5cb7a3ea8ba8a182598cbfbd247 (diff) | |
Merge remote-tracking branch 'cmaster-next' into cmaster-next-releng
| -rw-r--r-- | debian/changelog | 12 | ||||
| -rw-r--r-- | isisd/isis_circuit.c | 4 | ||||
| -rw-r--r-- | lib/nexthop.c | 1 | ||||
| -rwxr-xr-x | vtysh/extract.pl.in | 1 | ||||
| -rw-r--r-- | vtysh/vtysh.c | 12 | ||||
| -rw-r--r-- | vtysh/vtysh_config.c | 13 | ||||
| -rw-r--r-- | zebra/interface.c | 19 | ||||
| -rw-r--r-- | zebra/zebra_rnh.c | 69 |
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); } } |
