From 7ec14378ef65590043e89a13fea1db305f9bbaf1 Mon Sep 17 00:00:00 2001 From: tyx <462747508@qq.com> Date: Sat, 29 Oct 2022 09:17:55 +0800 Subject: [net][netdev]Add more hook functions --- components/net/netdev/src/netdev.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'components/net/netdev/src/netdev.c') 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; } @@ -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 . * -- cgit v1.3.1