diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/net/if.c | 2 | ||||
-rw-r--r-- | sys/net/if_var.h | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/sys/net/if.c b/sys/net/if.c index 67f086b..625b6d0 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -2183,6 +2183,7 @@ void if_down(struct ifnet *ifp) { + EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_DOWN); if_unroute(ifp, IFF_UP, AF_UNSPEC); } @@ -2195,6 +2196,7 @@ if_up(struct ifnet *ifp) { if_route(ifp, IFF_UP, AF_UNSPEC); + EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_UP); } /* diff --git a/sys/net/if_var.h b/sys/net/if_var.h index 01ca26c..1456793 100644 --- a/sys/net/if_var.h +++ b/sys/net/if_var.h @@ -424,6 +424,11 @@ EVENTHANDLER_DECLARE(ifnet_departure_event, ifnet_departure_event_handler_t); /* Interface link state change event */ typedef void (*ifnet_link_event_handler_t)(void *, struct ifnet *, int); EVENTHANDLER_DECLARE(ifnet_link_event, ifnet_link_event_handler_t); +/* Interface up/down event */ +#define IFNET_EVENT_UP 0 +#define IFNET_EVENT_DOWN 1 +typedef void (*ifnet_event_fn)(void *, struct ifnet *ifp, int event); +EVENTHANDLER_DECLARE(ifnet_event, ifnet_event_fn); /* * interface groups |