summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Jakma <paul@quagga.net>2011-03-20 22:08:02 +0000
committerPaul Jakma <paul@quagga.net>2011-03-20 22:09:15 +0000
commitd1de1c25962b5470f3825bc82d15e4dd29e1f842 (patch)
tree9e9b3c6ed51a0fdc78e0eb8900fad8f7e7598b98
parent4dd87df5af8a59174362e44f83df11f12457c8b4 (diff)
parente6844aa5d23cf56dd1f31afc96e8145ab188953f (diff)
Merge paul/ospfd/201012-review ospfd and lib/ fixes and performance improvements
-rw-r--r--bgpd/bgp_debug.c7
-rw-r--r--bgpd/bgp_dump.c4
-rw-r--r--bgpd/bgp_packet.c6
-rw-r--r--bgpd/bgp_route.c9
-rw-r--r--bgpd/bgp_vty.c6
-rw-r--r--doc/main.texi4
-rw-r--r--ospf6d/ospf6_spf.c22
-rw-r--r--ripd/rip_debug.c24
-rw-r--r--ripd/rip_debug.h1
-rw-r--r--ripngd/ripng_debug.c26
-rw-r--r--ripngd/ripng_debug.h2
11 files changed, 45 insertions, 66 deletions
diff --git a/bgpd/bgp_debug.c b/bgpd/bgp_debug.c
index c2077a59..26b35dfc 100644
--- a/bgpd/bgp_debug.c
+++ b/bgpd/bgp_debug.c
@@ -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")
diff --git a/bgpd/bgp_dump.c b/bgpd/bgp_dump.c
index 8087a403..edb725a9 100644
--- a/bgpd/bgp_dump.c
+++ b/bgpd/bgp_dump.c
@@ -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 */
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index a5f9552c..9102add7 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -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);
}
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index df23dda3..60e9610e 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -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);
}
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 88be52e2..ec0106a8 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -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;
}
diff --git a/doc/main.texi b/doc/main.texi
index 9966b356..a5759137 100644
--- a/doc/main.texi
+++ b/doc/main.texi
@@ -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
diff --git a/ospf6d/ospf6_spf.c b/ospf6d/ospf6_spf.c
index bfb6df2e..04367f08 100644
--- a/ospf6d/ospf6_spf.c
+++ b/ospf6d/ospf6_spf.c
@@ -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;
}
diff --git a/ripd/rip_debug.c b/ripd/rip_debug.c
index 64dc27c0..662e5843 100644
--- a/ripd/rip_debug.c
+++ b/ripd/rip_debug.c
@@ -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++;
}
diff --git a/ripd/rip_debug.h b/ripd/rip_debug.h
index f3a07eea..990ec908 100644
--- a/ripd/rip_debug.h
+++ b/ripd/rip_debug.h
@@ -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)
diff --git a/ripngd/ripng_debug.c b/ripngd/ripng_debug.c
index 78f13a71..33a7cf69 100644
--- a/ripngd/ripng_debug.c
+++ b/ripngd/ripng_debug.c
@@ -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++;
}
diff --git a/ripngd/ripng_debug.h b/ripngd/ripng_debug.h
index f5ed6eab..674345c0 100644
--- a/ripngd/ripng_debug.h
+++ b/ripngd/ripng_debug.h
@@ -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)