summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/net/if.c2
-rw-r--r--sys/net/if_var.h5
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
OpenPOWER on IntegriCloud