Skip to content

Commit 964a58d

Browse files
committed
net: l2: openthread: openthread_border_router: Update address events
This commit refactored IPV6 and IPV4 address events. Events have been defined independently for each installed callback. Previously, IPV6 address event was not triggered due to a mix of IPV4 and IPV6 flags. Signed-off-by: Cristian Bulacu <[email protected]>
1 parent 33ff683 commit 964a58d

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

subsys/net/l2/openthread/openthread_border_router.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333
#include <string.h>
3434

3535
static 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 */
4040
static uint32_t ail_iface_index;
4141
static 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

Comments
 (0)