summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2018-06-29 05:23:14 +0200
committerAlexander Couzens <lynxis@fe80.eu>2018-07-05 02:45:20 +0200
commit57f87ad89b38d1ea574c39a2d720747120dcc5fb (patch)
treed1a8265d7180b26177466a975ed8413023e0bbef
parent03785fb09734be05a721318d2b5378ae1656f64c (diff)
Introduce new interface event "create" (IFEV_CREATE)
"create" will be called before the proto handlers initialised. Acked-by: Hans Dedecker <dedeckeh@gmail.com> Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
-rw-r--r--interface-event.c1
-rw-r--r--interface.c1
-rw-r--r--interface.h2
3 files changed, 4 insertions, 0 deletions
diff --git a/interface-event.c b/interface-event.c
index 86e8f54..a40f6dc 100644
--- a/interface-event.c
+++ b/interface-event.c
@@ -38,6 +38,7 @@ static const char * const eventnames[] = {
[IFEV_FREE] = "free",
[IFEV_RELOAD] = "reload",
[IFEV_LINK_UP] = "iflink",
+ [IFEV_CREATE] = "create",
};
static void
diff --git a/interface.c b/interface.c
index 2a23984..400c605 100644
--- a/interface.c
+++ b/interface.c
@@ -1275,6 +1275,7 @@ interface_update(struct vlist_tree *tree, struct vlist_node *node_new,
set_config_state(if_old, IFC_REMOVE);
} else if (node_new) {
D(INTERFACE, "Create interface '%s'\n", if_new->name);
+ interface_event(if_new, IFEV_CREATE);
proto_init_interface(if_new, if_new->config);
interface_claim_device(if_new);
netifd_ubus_add_interface(if_new);
diff --git a/interface.h b/interface.h
index 0e58f69..e5639eb 100644
--- a/interface.h
+++ b/interface.h
@@ -28,6 +28,8 @@ enum interface_event {
IFEV_FREE,
IFEV_RELOAD,
IFEV_LINK_UP,
+ /* send when a new interface created. This is before proto handlers has been attached. */
+ IFEV_CREATE,
};
enum interface_state {