summaryrefslogtreecommitdiffstats
path: root/zebra/rt_netlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/rt_netlink.c')
-rw-r--r--zebra/rt_netlink.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index 6d4df405..e9ddd737 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -987,24 +987,6 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h)
/* If new link is added. */
if_add_update (ifp);
}
- /* Interface name change */
- else if (strcmp(ifp->name, name) != 0)
- {
- ifp->mtu6 = ifp->mtu = mtu;
-
- zlog_info("interface index %d was renamed from %s to %s",
- ifi->ifi_index, ifp->name, name);
-
- if_delete_update(ifp);
-
- ifp = if_create(name, strlen(name));
- ifp->ifindex = ifi->ifindex;
- ifp->metric = 1;
- ifp->mtu = ifp->mtu6 = mtu;
- ifp->flags = new_flags;
-
- if_add_update (ifp);
- }
/* Interface status change. */
else if (new_flags != ifp->flags)
{
@@ -1029,6 +1011,15 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h)
if_up (ifp);
}
}
+ /* Interface name change */
+ else if (strcmp(ifp->name, name) != 0)
+ {
+ ifp->mtu = ifp->mtu6 = mtu;
+ zlog_info("interface index %d was renamed from %s to %s",
+ ifi->ifi_index, ifp->name, name);
+
+ if_rename (ifp, name);
+ }
/* Interface mtu change */
else if (mtu != ifp->mtu)
{