summaryrefslogtreecommitdiff
path: root/zebra/interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/interface.c')
-rw-r--r--zebra/interface.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/zebra/interface.c b/zebra/interface.c
index 49fffcf5..5f9c7a23 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -209,6 +209,16 @@ if_addr_wakeup (struct interface *ifp)
{
if (! if_is_up (ifp))
{
+ /* XXX: WTF is it trying to set flags here?
+ * caller has just gotten a new interface, has been
+ * handed the flags already. This code has no business
+ * trying to override administrative status of the interface.
+ * The only call path to here which doesn't originate from
+ * kernel event is irdp - what on earth is it trying to do?
+ *
+ * further RUNNING is not a settable flag on any system
+ * I (paulj) am aware of.
+ */
if_set_flags (ifp, IFF_UP | IFF_RUNNING);
if_refresh (ifp);
}
@@ -236,6 +246,7 @@ if_addr_wakeup (struct interface *ifp)
{
if (! if_is_up (ifp))
{
+ /* XXX: See long comment above */
if_set_flags (ifp, IFF_UP | IFF_RUNNING);
if_refresh (ifp);
}
@@ -1172,7 +1183,7 @@ ip_address_install (struct vty *vty, struct interface *ifp,
/* Label. */
if (label)
- ifc->label = strdup (label);
+ ifc->label = XSTRDUP (MTYPE_CONNECTED_LABEL, label);
/* Add to linked list. */
listnode_add (ifp->connected, ifc);
@@ -1363,7 +1374,7 @@ ipv6_address_install (struct vty *vty, struct interface *ifp,
/* Label. */
if (label)
- ifc->label = strdup (label);
+ ifc->label = XSTRDUP (MTYPE_CONNECTED_LABEL, label);
/* Add to linked list. */
listnode_add (ifp->connected, ifc);