Index: sys/compat/linuxkpi/common/include/linux/netdevice.h =================================================================== --- sys/compat/linuxkpi/common/include/linux/netdevice.h +++ sys/compat/linuxkpi/common/include/linux/netdevice.h @@ -59,6 +59,7 @@ /* According to linux::ipoib_main.c. */ struct netdev_notifier_info { struct net_device *dev; + struct ifnet *ifp; }; static inline struct net_device * @@ -67,6 +68,12 @@ return (ni->dev); } +static inline struct ifnet * +netdev_notifier_info_to_ifp(struct netdev_notifier_info *ni) +{ + return (ni->ifp); +} + int register_netdevice_notifier(struct notifier_block *); int register_inetaddr_notifier(struct notifier_block *); int unregister_netdevice_notifier(struct notifier_block *); Index: sys/compat/linuxkpi/common/src/linux_compat.c =================================================================== --- sys/compat/linuxkpi/common/src/linux_compat.c +++ sys/compat/linuxkpi/common/src/linux_compat.c @@ -2315,6 +2315,7 @@ struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; if (linkstate == LINK_STATE_UP) nb->notifier_call(nb, NETDEV_UP, &ni); @@ -2329,6 +2330,7 @@ struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; nb->notifier_call(nb, NETDEV_REGISTER, &ni); } @@ -2340,6 +2342,7 @@ struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; nb->notifier_call(nb, NETDEV_UNREGISTER, &ni); } @@ -2351,6 +2354,7 @@ struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; nb->notifier_call(nb, NETDEV_CHANGEADDR, &ni); } @@ -2362,6 +2366,7 @@ struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; nb->notifier_call(nb, NETDEV_CHANGEIFADDR, &ni); }