3333#include <string.h>
3434
3535static struct net_mgmt_event_callback ail_net_event_connection_cb ;
36- static struct net_mgmt_event_callback ail_net_event_address_cb ;
36+ static struct net_mgmt_event_callback ail_net_event_ipv6_addr_cb ;
3737#if defined(CONFIG_NET_IPV4 )
38- static struct net_mgmt_event_callback ail_net_event_ipv4_addr_add_cb ;
38+ static struct net_mgmt_event_callback ail_net_event_ipv4_addr_cb ;
3939#endif /* CONFIG_NET_IPV4 */
4040static uint32_t ail_iface_index ;
4141static struct net_if * ail_iface_ptr ;
@@ -234,15 +234,14 @@ static void ail_connection_handler(struct net_mgmt_event_callback *cb, uint64_t
234234 mdns_plat_monitor_interface (iface );
235235}
236236
237- static void ail_address_event_handler (struct net_mgmt_event_callback * cb , uint64_t mgmt_event ,
237+ static void ail_ipv6_address_event_handler (struct net_mgmt_event_callback * cb , uint64_t mgmt_event ,
238238 struct net_if * iface )
239239{
240240 if (net_if_l2 (iface ) != & NET_L2_GET_NAME (ETHERNET )) {
241241 return ;
242242 }
243243
244- if ((mgmt_event & (NET_EVENT_IPV6_ADDR_ADD | NET_EVENT_IPV6_ADDR_DEL |
245- NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IPV4_ADDR_DEL )) != mgmt_event ) {
244+ if ((mgmt_event & (NET_EVENT_IPV6_ADDR_ADD | NET_EVENT_IPV6_ADDR_DEL )) != mgmt_event ) {
246245 return ;
247246 }
248247
@@ -257,13 +256,15 @@ static void ail_ipv4_address_event_handler(struct net_mgmt_event_callback *cb, u
257256 return ;
258257 }
259258
260- if (mgmt_event != NET_EVENT_IPV4_ADDR_ADD ) {
259+ if (( mgmt_event & ( NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IPV4_ADDR_DEL )) != mgmt_event ) {
261260 return ;
262261 }
263262
264- struct openthread_context * ot_context = openthread_get_default_context ();
263+ if (mgmt_event == NET_EVENT_IPV4_ADDR_ADD ) {
264+ struct openthread_context * ot_context = openthread_get_default_context ();
265265
266- openthread_start_border_router_services (ot_context -> iface , iface );
266+ openthread_start_border_router_services (ot_context -> iface , iface );
267+ }
267268
268269 mdns_plat_monitor_interface (iface );
269270}
@@ -318,15 +319,14 @@ void openthread_border_router_init(struct openthread_context *ot_ctx)
318319 net_mgmt_init_event_callback (& ail_net_event_connection_cb , ail_connection_handler ,
319320 NET_EVENT_IF_UP | NET_EVENT_IF_DOWN );
320321 net_mgmt_add_event_callback (& ail_net_event_connection_cb );
321- net_mgmt_init_event_callback (& ail_net_event_address_cb , ail_address_event_handler ,
322- NET_EVENT_IPV6_ADDR_ADD | NET_EVENT_IPV6_ADDR_DEL |
323- NET_EVENT_IPV4_ADDR_ADD | NET_EVENT_IPV4_ADDR_DEL );
324- net_mgmt_add_event_callback (& ail_net_event_address_cb );
322+ net_mgmt_init_event_callback (& ail_net_event_ipv6_addr_cb , ail_ipv6_address_event_handler ,
323+ NET_EVENT_IPV6_ADDR_ADD | NET_EVENT_IPV6_ADDR_DEL );
324+ net_mgmt_add_event_callback (& ail_net_event_ipv6_addr_cb );
325325#if defined(CONFIG_NET_IPV4 )
326- net_mgmt_init_event_callback (& ail_net_event_ipv4_addr_add_cb ,
326+ net_mgmt_init_event_callback (& ail_net_event_ipv4_addr_cb ,
327327 ail_ipv4_address_event_handler ,
328328 NET_EVENT_IPV4_ADDR_ADD );
329- net_mgmt_add_event_callback (& ail_net_event_ipv4_addr_add_cb );
329+ net_mgmt_add_event_callback (& ail_net_event_ipv4_addr_cb );
330330#endif /* CONFIG_NET_IPV4 */
331331 openthread_set_bbr_multicast_listener_cb (ot_bbr_multicast_listener_handler , (void * )ot_ctx );
332332 (void )infra_if_start_icmp6_listener ();
0 commit comments