From 4fb3e0bb94abdd2d44b23937670a83876d11b97f Mon Sep 17 00:00:00 2001 From: Rozhuk Ivan Date: Wed, 23 Jun 2021 10:15:11 -0600 Subject: [PATCH] devctl: add RENAME devctl event for IFNET Add devd event on network iface rename. Reviewed by: imp@,asomers@ Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D30839 --- sbin/devd/devd.conf.5 | 4 +++- sys/net/if.c | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sbin/devd/devd.conf.5 b/sbin/devd/devd.conf.5 index 1a1071584f70..56e2df684f32 100644 --- a/sbin/devd/devd.conf.5 +++ b/sbin/devd/devd.conf.5 @@ -40,7 +40,7 @@ .\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS .\" SOFTWARE. .\" -.Dd October 12, 2020 +.Dd June 23, 2021 .Dt DEVD.CONF 5 .Os .Sh NAME @@ -467,6 +467,8 @@ Carrier status changed to DOWN. The network interface is attached to the system. .It Li IFNET Ta Em inet Ta Li DETACH Ta The network interface is detached from the system. +.It Li IFNET Ta Em inet Ta Li RENAME Ta +The network interface is renamed. .El .Pp .Bl -column "System" "Subsystem" "1234567" -compact diff --git a/sys/net/if.c b/sys/net/if.c index f615d82636be..cfa795904bc9 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -2468,6 +2468,7 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data, struct thread *td) size_t descrlen; char *descrbuf, *odescrbuf; char new_name[IFNAMSIZ]; + char old_name[IFNAMSIZ], strbuf[IFNAMSIZ + 8]; struct ifaddr *ifa; struct sockaddr_dl *sdl; @@ -2673,6 +2674,7 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data, struct thread *td) if_printf(ifp, "changing name to '%s'\n", new_name); IF_ADDR_WLOCK(ifp); + strlcpy(old_name, ifp->if_xname, sizeof(old_name)); strlcpy(ifp->if_xname, new_name, sizeof(ifp->if_xname)); ifa = ifp->if_addr; sdl = (struct sockaddr_dl *)ifa->ifa_addr; @@ -2700,6 +2702,9 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data, struct thread *td) rt_ifannouncemsg(ifp, IFAN_ARRIVAL); ifp->if_flags &= ~IFF_RENAMING; + + snprintf(strbuf, sizeof(strbuf), "name=%s", new_name); + devctl_notify("IFNET", old_name, "RENAME", strbuf); break; #ifdef VIMAGE