|
@@ -31,6 +31,9 @@
|
|
|
struct netdev *netdev_list = RT_NULL;
|
|
|
/* The default network interface device */
|
|
|
struct netdev *netdev_default = RT_NULL;
|
|
|
+/* The global network register callback */
|
|
|
+static netdev_callback_fn g_netdev_register_callback = RT_NULL;
|
|
|
+static netdev_callback_fn g_netdev_default_change_callback = RT_NULL;
|
|
|
|
|
|
/**
|
|
|
* This function will register network interface device and
|
|
@@ -112,6 +115,12 @@ int netdev_register(struct netdev *netdev, const char *name, void *user_data)
|
|
|
netdev_set_default(netdev_list);
|
|
|
}
|
|
|
|
|
|
+ /* execute netdev register callback */
|
|
|
+ if (g_netdev_register_callback)
|
|
|
+ {
|
|
|
+ g_netdev_register_callback(netdev, NETDEV_CB_REGISTER);
|
|
|
+ }
|
|
|
+
|
|
|
return RT_EOK;
|
|
|
}
|
|
|
|
|
@@ -179,6 +188,17 @@ int netdev_unregister(struct netdev *netdev)
|
|
|
return -RT_ERROR;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * This function will set register callback
|
|
|
+ *
|
|
|
+ * @param register_callback the network register callback
|
|
|
+ *
|
|
|
+ */
|
|
|
+void netdev_set_register_callback(netdev_callback_fn register_callback)
|
|
|
+{
|
|
|
+ g_netdev_register_callback = register_callback;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* This function will get the first network interface device
|
|
|
* with the flags in network interface device list.
|
|
@@ -373,10 +393,27 @@ void netdev_set_default(struct netdev *netdev)
|
|
|
{
|
|
|
netdev->ops->set_default(netdev);
|
|
|
}
|
|
|
+
|
|
|
+ /* execture application netdev default change callback */
|
|
|
+ if (g_netdev_default_change_callback)
|
|
|
+ {
|
|
|
+ g_netdev_default_change_callback(netdev, NETDEV_CB_DEFAULT_CHANGE);
|
|
|
+ }
|
|
|
LOG_D("Setting default network interface device name(%s) successfully.", netdev->name);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * This function will set defalut netdev change callback
|
|
|
+ *
|
|
|
+ * @param register_callback the network default change callback
|
|
|
+ *
|
|
|
+ */
|
|
|
+void netdev_set_default_change_callback(netdev_callback_fn register_callback)
|
|
|
+{
|
|
|
+ g_netdev_default_change_callback = register_callback;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* This function will enable network interface device .
|
|
|
*
|