diff --git a/makefiles/pseudomodules.inc.mk b/makefiles/pseudomodules.inc.mk index d21b36fdcf7a..c9f315e9a6b2 100644 --- a/makefiles/pseudomodules.inc.mk +++ b/makefiles/pseudomodules.inc.mk @@ -48,6 +48,7 @@ PSEUDOMODULES += gnrc_ipv6_nib_6lr PSEUDOMODULES += gnrc_ipv6_nib_dns PSEUDOMODULES += gnrc_ipv6_nib_rio PSEUDOMODULES += gnrc_ipv6_nib_router +PSEUDOMODULES += gnrc_ipv6_nib_rtr_adv_pio_cb PSEUDOMODULES += gnrc_netdev_default PSEUDOMODULES += gnrc_neterr PSEUDOMODULES += gnrc_netapi_callbacks diff --git a/sys/net/gnrc/network_layer/ipv6/nib/nib.c b/sys/net/gnrc/network_layer/ipv6/nib/nib.c index e99ce3b715dc..dec7a6deae72 100644 --- a/sys/net/gnrc/network_layer/ipv6/nib/nib.c +++ b/sys/net/gnrc/network_layer/ipv6/nib/nib.c @@ -754,6 +754,13 @@ static void _handle_rtr_adv(gnrc_netif_t *netif, const ipv6_hdr_t *ipv6, (ndp_opt_pi_t *)opt); #endif /* CONFIG_GNRC_IPV6_NIB_MULTIHOP_P6C */ next_timeout = _min(next_timeout, min_pfx_timeout); + + /* notify optional PIO consumer */ + if (IS_USED(MODULE_GNRC_IPV6_NIB_RTR_ADV_PIO_CB)) { + extern void gnrc_ipv6_nib_rtr_adv_pio_cb(gnrc_netif_t *netif, + const ndp_opt_pi_t *pio); + gnrc_ipv6_nib_rtr_adv_pio_cb(netif, (ndp_opt_pi_t *)opt); + } break; } /* ABRO was already secured in the option check above */