Skip to content

Commit 83bda0f

Browse files
rveerama1jukkar
authored andcommitted
net: Add IPv6 route add and delete event with info
If CONFIG_NET_MGMT_EVENT_INFO is enabled then provide mgmt info about the route, which is added or deleted. Signed-off-by: Ravi kumar Veeramally <[email protected]>
1 parent 9010def commit 83bda0f

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

subsys/net/ip/route.c

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,9 @@ struct net_route_entry *net_route_add(struct net_if *iface,
307307
struct net_nbr *nbr, *nbr_nexthop, *tmp;
308308
struct net_route_nexthop *nexthop_route;
309309
struct net_route_entry *route;
310+
#if defined(CONFIG_NET_MGMT_EVENT_INFO)
311+
struct net_event_ipv6_route info;
312+
#endif
310313

311314
NET_ASSERT(addr);
312315
NET_ASSERT(iface);
@@ -411,7 +414,17 @@ struct net_route_entry *net_route_add(struct net_if *iface,
411414

412415
net_route_info("Added", route, addr);
413416

417+
#if defined(CONFIG_NET_MGMT_EVENT_INFO)
418+
net_ipaddr_copy(&info.addr, addr);
419+
net_ipaddr_copy(&info.nexthop, nexthop);
420+
info.prefix_len = prefix_len;
421+
422+
net_mgmt_event_notify_with_info(NET_EVENT_IPV6_ROUTE_ADD,
423+
iface, (void *) &info,
424+
sizeof(struct net_event_ipv6_route));
425+
#else
414426
net_mgmt_event_notify(NET_EVENT_IPV6_ROUTE_ADD, iface);
427+
#endif
415428

416429
return route;
417430
}
@@ -420,11 +433,27 @@ int net_route_del(struct net_route_entry *route)
420433
{
421434
struct net_nbr *nbr;
422435
struct net_route_nexthop *nexthop_route;
436+
#if defined(CONFIG_NET_MGMT_EVENT_INFO)
437+
struct net_event_ipv6_route info;
438+
#endif
423439

424440
if (!route) {
425441
return -EINVAL;
426442
}
427443

444+
#if defined(CONFIG_NET_MGMT_EVENT_INFO)
445+
net_ipaddr_copy(&info.addr, &route->addr);
446+
info.prefix_len = route->prefix_len;
447+
net_ipaddr_copy(&info.nexthop,
448+
net_route_get_nexthop(route));
449+
450+
net_mgmt_event_notify_with_info(NET_EVENT_IPV6_ROUTE_DEL,
451+
route->iface, (void *) &info,
452+
sizeof(struct net_event_ipv6_route));
453+
#else
454+
net_mgmt_event_notify(NET_EVENT_IPV6_ROUTE_DEL, route->iface);
455+
#endif
456+
428457
sys_slist_find_and_remove(&routes, &route->node);
429458

430459
nbr = net_route_get_nbr(route);
@@ -434,8 +463,6 @@ int net_route_del(struct net_route_entry *route)
434463

435464
net_route_info("Deleted", route, &route->addr);
436465

437-
net_mgmt_event_notify(NET_EVENT_IPV6_ROUTE_DEL, nbr->iface);
438-
439466
SYS_SLIST_FOR_EACH_CONTAINER(&route->nexthop, nexthop_route, node) {
440467
if (!nexthop_route->nbr) {
441468
continue;

0 commit comments

Comments
 (0)