mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 12:52:49 +00:00
Merge paul/ospfd/201012-review ospfd and lib/ fixes and performance improvements
This commit is contained in:
commit
d1de1c2596
@ -331,7 +331,6 @@ ALIAS (no_debug_bgp_as4,
|
||||
undebug_bgp_as4_cmd,
|
||||
"undebug bgp as4",
|
||||
UNDEBUG_STR
|
||||
DEBUG_STR
|
||||
BGP_STR
|
||||
"BGP AS4 actions\n")
|
||||
|
||||
@ -340,6 +339,7 @@ DEFUN (debug_bgp_as4_segment,
|
||||
"debug bgp as4 segment",
|
||||
DEBUG_STR
|
||||
BGP_STR
|
||||
"BGP AS4 actions\n"
|
||||
"BGP AS4 aspath segment handling\n")
|
||||
{
|
||||
if (vty->node == CONFIG_NODE)
|
||||
@ -358,6 +358,7 @@ DEFUN (no_debug_bgp_as4_segment,
|
||||
NO_STR
|
||||
DEBUG_STR
|
||||
BGP_STR
|
||||
"BGP AS4 actions\n"
|
||||
"BGP AS4 aspath segment handling\n")
|
||||
{
|
||||
if (vty->node == CONFIG_NODE)
|
||||
@ -374,8 +375,8 @@ ALIAS (no_debug_bgp_as4_segment,
|
||||
undebug_bgp_as4_segment_cmd,
|
||||
"undebug bgp as4 segment",
|
||||
UNDEBUG_STR
|
||||
DEBUG_STR
|
||||
BGP_STR
|
||||
"BGP AS4 actions\n"
|
||||
"BGP AS4 aspath segment handling\n")
|
||||
|
||||
DEFUN (debug_bgp_fsm,
|
||||
@ -417,7 +418,6 @@ ALIAS (no_debug_bgp_fsm,
|
||||
undebug_bgp_fsm_cmd,
|
||||
"undebug bgp fsm",
|
||||
UNDEBUG_STR
|
||||
DEBUG_STR
|
||||
BGP_STR
|
||||
"Finite State Machine\n")
|
||||
|
||||
@ -715,7 +715,6 @@ ALIAS (no_debug_bgp_zebra,
|
||||
undebug_bgp_zebra_cmd,
|
||||
"undebug bgp zebra",
|
||||
UNDEBUG_STR
|
||||
DEBUG_STR
|
||||
BGP_STR
|
||||
"BGP Zebra messages\n")
|
||||
|
||||
|
@ -356,7 +356,11 @@ bgp_dump_routes_func (int afi, int first_run, unsigned int seq)
|
||||
stream_putw(obuf, info->peer->table_dump_index);
|
||||
|
||||
/* Originated */
|
||||
#ifdef HAVE_CLOCK_MONOTONIC
|
||||
stream_putl (obuf, time(NULL) - (bgp_clock() - info->uptime));
|
||||
#else
|
||||
stream_putl (obuf, info->uptime);
|
||||
#endif /* HAVE_CLOCK_MONOTONIC */
|
||||
|
||||
/* Dump attribute. */
|
||||
/* Skip prefix & AFI/SAFI for MP_NLRI */
|
||||
|
@ -1885,12 +1885,6 @@ bgp_notify_receive (struct peer *peer, bgp_size_t size)
|
||||
bgp_notify.subcode == BGP_NOTIFY_OPEN_UNSUP_PARAM )
|
||||
UNSET_FLAG (peer->sflags, PEER_STATUS_CAPABILITY_OPEN);
|
||||
|
||||
/* Also apply to Unsupported Capability until remote router support
|
||||
capability. */
|
||||
if (bgp_notify.code == BGP_NOTIFY_OPEN_ERR &&
|
||||
bgp_notify.subcode == BGP_NOTIFY_OPEN_UNSUP_CAPBL)
|
||||
UNSET_FLAG (peer->sflags, PEER_STATUS_CAPABILITY_OPEN);
|
||||
|
||||
BGP_EVENT_ADD (peer, Receive_NOTIFICATION_message);
|
||||
}
|
||||
|
||||
|
@ -5978,6 +5978,9 @@ route_vty_out_detail (struct vty *vty, struct bgp *bgp, struct prefix *p,
|
||||
char buf1[BUFSIZ];
|
||||
struct attr *attr;
|
||||
int sockunion_vty_out (struct vty *, union sockunion *);
|
||||
#ifdef HAVE_CLOCK_MONOTONIC
|
||||
time_t tbuf;
|
||||
#endif
|
||||
|
||||
attr = binfo->attr;
|
||||
|
||||
@ -6144,8 +6147,12 @@ route_vty_out_detail (struct vty *vty, struct bgp *bgp, struct prefix *p,
|
||||
bgp_damp_info_vty (vty, binfo);
|
||||
|
||||
/* Line 7 display Uptime */
|
||||
time_t tbuf = time(NULL) - (bgp_clock() - binfo->uptime);
|
||||
#ifdef HAVE_CLOCK_MONOTONIC
|
||||
tbuf = time(NULL) - (bgp_clock() - binfo->uptime);
|
||||
vty_out (vty, " Last update: %s", ctime(&tbuf));
|
||||
#else
|
||||
vty_out (vty, " Last update: %s", ctime(&binfo->uptime));
|
||||
#endif /* HAVE_CLOCK_MONOTONIC */
|
||||
}
|
||||
vty_out (vty, "%s", VTY_NEWLINE);
|
||||
}
|
||||
|
@ -9952,7 +9952,7 @@ community_list_perror (struct vty *vty, int ret)
|
||||
switch (ret)
|
||||
{
|
||||
case COMMUNITY_LIST_ERR_CANT_FIND_LIST:
|
||||
vty_out (vty, "%% Can't find communit-list%s", VTY_NEWLINE);
|
||||
vty_out (vty, "%% Can't find community-list%s", VTY_NEWLINE);
|
||||
break;
|
||||
case COMMUNITY_LIST_ERR_MALFORMED_VAL:
|
||||
vty_out (vty, "%% Malformed community-list value%s", VTY_NEWLINE);
|
||||
@ -10313,7 +10313,7 @@ DEFUN (show_ip_community_list_arg,
|
||||
list = community_list_lookup (bgp_clist, argv[0], COMMUNITY_LIST_MASTER);
|
||||
if (! list)
|
||||
{
|
||||
vty_out (vty, "%% Can't find communit-list%s", VTY_NEWLINE);
|
||||
vty_out (vty, "%% Can't find community-list%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
@ -10663,7 +10663,7 @@ DEFUN (show_ip_extcommunity_list_arg,
|
||||
list = community_list_lookup (bgp_clist, argv[0], EXTCOMMUNITY_LIST_MASTER);
|
||||
if (! list)
|
||||
{
|
||||
vty_out (vty, "%% Can't find extcommunit-list%s", VTY_NEWLINE);
|
||||
vty_out (vty, "%% Can't find extcommunity-list%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
|
@ -49,9 +49,9 @@ Up or down the current interface.
|
||||
@end deffn
|
||||
|
||||
@deffn {Interface Command} {ip address @var{address/prefix}} {}
|
||||
@deffnx {Interface Command} {ip6 address @var{address/prefix}} {}
|
||||
@deffnx {Interface Command} {ipv6 address @var{address/prefix}} {}
|
||||
@deffnx {Interface Command} {no ip address @var{address/prefix}} {}
|
||||
@deffnx {Interface Command} {no ip6 address @var{address/prefix}} {}
|
||||
@deffnx {Interface Command} {no ipv6 address @var{address/prefix}} {}
|
||||
Set the IPv4 or IPv6 address/prefix for the interface.
|
||||
@end deffn
|
||||
|
||||
|
@ -50,7 +50,9 @@ ospf6_vertex_cmp (void *a, void *b)
|
||||
struct ospf6_vertex *vb = (struct ospf6_vertex *) b;
|
||||
|
||||
/* ascending order */
|
||||
return (va->cost - vb->cost);
|
||||
if (va->cost != vb->cost)
|
||||
return (va->cost - vb->cost);
|
||||
return (va->hops - vb->hops);
|
||||
}
|
||||
|
||||
static int
|
||||
@ -320,22 +322,8 @@ ospf6_spf_install (struct ospf6_vertex *v,
|
||||
}
|
||||
|
||||
prev = (struct ospf6_vertex *) route->route_option;
|
||||
if (prev->hops > v->hops)
|
||||
{
|
||||
for (ALL_LIST_ELEMENTS (prev->child_list, node, nnode, w))
|
||||
{
|
||||
assert (w->parent == prev);
|
||||
w->parent = v;
|
||||
listnode_add_sort (v->child_list, w);
|
||||
}
|
||||
listnode_delete (prev->parent->child_list, prev);
|
||||
listnode_add_sort (v->parent->child_list, v);
|
||||
|
||||
ospf6_vertex_delete (prev);
|
||||
route->route_option = v;
|
||||
}
|
||||
else
|
||||
ospf6_vertex_delete (v);
|
||||
assert (prev->hops <= v->hops);
|
||||
ospf6_vertex_delete (v);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
@ -44,19 +44,16 @@ DEFUN (show_debugging_rip,
|
||||
{
|
||||
if (IS_RIP_DEBUG_SEND && IS_RIP_DEBUG_RECV)
|
||||
{
|
||||
vty_out (vty, " RIP packet%s debugging is on%s",
|
||||
IS_RIP_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, " RIP packet debugging is on%s",
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IS_RIP_DEBUG_SEND)
|
||||
vty_out (vty, " RIP packet send%s debugging is on%s",
|
||||
IS_RIP_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, " RIP packet send debugging is on%s",
|
||||
VTY_NEWLINE);
|
||||
else
|
||||
vty_out (vty, " RIP packet receive%s debugging is on%s",
|
||||
IS_RIP_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, " RIP packet receive debugging is on%s",
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
}
|
||||
@ -105,11 +102,12 @@ DEFUN (debug_rip_packet_direct,
|
||||
rip_debug_packet |= RIP_DEBUG_SEND;
|
||||
if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
|
||||
rip_debug_packet |= RIP_DEBUG_RECV;
|
||||
rip_debug_packet &= ~RIP_DEBUG_DETAIL;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (debug_rip_packet_detail,
|
||||
/* N.B. the "detail" modifier is a no-op. we leave this command
|
||||
for legacy compatibility. */
|
||||
DEFUN_DEPRECATED (debug_rip_packet_detail,
|
||||
debug_rip_packet_detail_cmd,
|
||||
"debug rip packet (recv|send) detail",
|
||||
DEBUG_STR
|
||||
@ -124,7 +122,6 @@ DEFUN (debug_rip_packet_detail,
|
||||
rip_debug_packet |= RIP_DEBUG_SEND;
|
||||
if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
|
||||
rip_debug_packet |= RIP_DEBUG_RECV;
|
||||
rip_debug_packet |= RIP_DEBUG_DETAIL;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
@ -224,20 +221,17 @@ config_write_debug (struct vty *vty)
|
||||
{
|
||||
if (IS_RIP_DEBUG_SEND && IS_RIP_DEBUG_RECV)
|
||||
{
|
||||
vty_out (vty, "debug rip packet%s%s",
|
||||
IS_RIP_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, "debug rip packet%s",
|
||||
VTY_NEWLINE);
|
||||
write++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IS_RIP_DEBUG_SEND)
|
||||
vty_out (vty, "debug rip packet send%s%s",
|
||||
IS_RIP_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, "debug rip packet send%s",
|
||||
VTY_NEWLINE);
|
||||
else
|
||||
vty_out (vty, "debug rip packet recv%s%s",
|
||||
IS_RIP_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, "debug rip packet recv%s",
|
||||
VTY_NEWLINE);
|
||||
write++;
|
||||
}
|
||||
|
@ -40,7 +40,6 @@
|
||||
#define IS_RIP_DEBUG_PACKET (rip_debug_packet & RIP_DEBUG_PACKET)
|
||||
#define IS_RIP_DEBUG_SEND (rip_debug_packet & RIP_DEBUG_SEND)
|
||||
#define IS_RIP_DEBUG_RECV (rip_debug_packet & RIP_DEBUG_RECV)
|
||||
#define IS_RIP_DEBUG_DETAIL (rip_debug_packet & RIP_DEBUG_DETAIL)
|
||||
|
||||
#define IS_RIP_DEBUG_ZEBRA (rip_debug_zebra & RIP_DEBUG_ZEBRA)
|
||||
|
||||
|
@ -45,19 +45,16 @@ DEFUN (show_debugging_ripng,
|
||||
{
|
||||
if (IS_RIPNG_DEBUG_SEND && IS_RIPNG_DEBUG_RECV)
|
||||
{
|
||||
vty_out (vty, " RIPng packet%s debugging is on%s",
|
||||
IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, " RIPng packet debugging is on%s",
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IS_RIPNG_DEBUG_SEND)
|
||||
vty_out (vty, " RIPng packet send%s debugging is on%s",
|
||||
IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, " RIPng packet send debugging is on%s",
|
||||
VTY_NEWLINE);
|
||||
else
|
||||
vty_out (vty, " RIPng packet receive%s debugging is on%s",
|
||||
IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, " RIPng packet receive debugging is on%s",
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
}
|
||||
@ -106,11 +103,13 @@ DEFUN (debug_ripng_packet_direct,
|
||||
ripng_debug_packet |= RIPNG_DEBUG_SEND;
|
||||
if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
|
||||
ripng_debug_packet |= RIPNG_DEBUG_RECV;
|
||||
ripng_debug_packet &= ~RIPNG_DEBUG_DETAIL;
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (debug_ripng_packet_detail,
|
||||
/* N.B. the "detail" modifier is a no-op. we leave this command
|
||||
for legacy compatibility. */
|
||||
DEFUN_DEPRECATED (debug_ripng_packet_detail,
|
||||
debug_ripng_packet_detail_cmd,
|
||||
"debug ripng packet (recv|send) detail",
|
||||
DEBUG_STR
|
||||
@ -125,7 +124,7 @@ DEFUN (debug_ripng_packet_detail,
|
||||
ripng_debug_packet |= RIPNG_DEBUG_SEND;
|
||||
if (strncmp ("recv", argv[0], strlen (argv[0])) == 0)
|
||||
ripng_debug_packet |= RIPNG_DEBUG_RECV;
|
||||
ripng_debug_packet |= RIPNG_DEBUG_DETAIL;
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
@ -225,20 +224,17 @@ config_write_debug (struct vty *vty)
|
||||
{
|
||||
if (IS_RIPNG_DEBUG_SEND && IS_RIPNG_DEBUG_RECV)
|
||||
{
|
||||
vty_out (vty, "debug ripng packet%s%s",
|
||||
IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, "debug ripng packet%s",
|
||||
VTY_NEWLINE);
|
||||
write++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IS_RIPNG_DEBUG_SEND)
|
||||
vty_out (vty, "debug ripng packet send%s%s",
|
||||
IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, "debug ripng packet send%s",
|
||||
VTY_NEWLINE);
|
||||
else
|
||||
vty_out (vty, "debug ripng packet recv%s%s",
|
||||
IS_RIPNG_DEBUG_DETAIL ? " detail" : "",
|
||||
vty_out (vty, "debug ripng packet recv%s",
|
||||
VTY_NEWLINE);
|
||||
write++;
|
||||
}
|
||||
|
@ -29,7 +29,6 @@
|
||||
#define RIPNG_DEBUG_PACKET 0x01
|
||||
#define RIPNG_DEBUG_SEND 0x20
|
||||
#define RIPNG_DEBUG_RECV 0x40
|
||||
#define RIPNG_DEBUG_DETAIL 0x80
|
||||
|
||||
#define RIPNG_DEBUG_ZEBRA 0x01
|
||||
|
||||
@ -39,7 +38,6 @@
|
||||
#define IS_RIPNG_DEBUG_PACKET (ripng_debug_packet & RIPNG_DEBUG_PACKET)
|
||||
#define IS_RIPNG_DEBUG_SEND (ripng_debug_packet & RIPNG_DEBUG_SEND)
|
||||
#define IS_RIPNG_DEBUG_RECV (ripng_debug_packet & RIPNG_DEBUG_RECV)
|
||||
#define IS_RIPNG_DEBUG_DETAIL (ripng_debug_packet & RIPNG_DEBUG_DETAIL)
|
||||
|
||||
#define IS_RIPNG_DEBUG_ZEBRA (ripng_debug_zebra & RIPNG_DEBUG_ZEBRA)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user