diff options
| author | tyx <[email protected]> | 2022-10-29 09:17:55 +0800 |
|---|---|---|
| committer | guo <[email protected]> | 2023-04-24 10:58:05 +0800 |
| commit | 7ec14378ef65590043e89a13fea1db305f9bbaf1 (patch) | |
| tree | 1aa46564c601efa9a360b85cd679e32d8ab7e6bc /components/net/netdev/src | |
| parent | 8aaa57e2eaf8357735e084c38c88c2c23b83e2a2 (diff) | |
[net][netdev]Add more hook functions
Diffstat (limited to 'components/net/netdev/src')
| -rw-r--r-- | components/net/netdev/src/netdev.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index 319329b20e..9f1165c52f 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -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; } @@ -180,6 +189,17 @@ int netdev_unregister(struct netdev *netdev) } /** + * 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,11 +393,28 @@ 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 . * * @param netdev the network interface device to change |
