From ba23c77a4dbe88aeef1a329ed6555a0bdfc9249e Mon Sep 17 00:00:00 2001 From: Benjamin Valentin Date: Fri, 25 Apr 2025 00:19:02 +0200 Subject: [PATCH 1/2] gnrc/ipv6/nib: add option to disable router solicitations --- sys/include/net/gnrc/ipv6/nib/conf.h | 7 +++++++ sys/net/gnrc/network_layer/ipv6/nib/nib.c | 14 ++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sys/include/net/gnrc/ipv6/nib/conf.h b/sys/include/net/gnrc/ipv6/nib/conf.h index 90a9bf4b9d..73bd886a6e 100644 --- a/sys/include/net/gnrc/ipv6/nib/conf.h +++ b/sys/include/net/gnrc/ipv6/nib/conf.h @@ -131,6 +131,13 @@ extern "C" { #define CONFIG_GNRC_IPV6_NIB_ADV_ROUTER 0 #endif +/** + * @brief enable periodic router solicitations + */ +#ifndef CONFIG_GNRC_IPV6_NIB_SOL_ROUTER +#define CONFIG_GNRC_IPV6_NIB_SOL_ROUTER 1 +#endif + /** * @brief Include a Route Information Option for subnets * on other interfaces in normal Router Advertisements diff --git a/sys/net/gnrc/network_layer/ipv6/nib/nib.c b/sys/net/gnrc/network_layer/ipv6/nib/nib.c index 43f25c729d..7cadc20eb5 100644 --- a/sys/net/gnrc/network_layer/ipv6/nib/nib.c +++ b/sys/net/gnrc/network_layer/ipv6/nib/nib.c @@ -105,11 +105,17 @@ static void _handle_rdnss_timeout(sock_udp_ep_t *dns_server); static inline bool _should_search_rtr(const gnrc_netif_t *netif) { - /* 6LBR interface does not send RS. - A non-advertising router sends RS or a 6LN that is advertising or not + /* RS are globally disabled */ + if (!CONFIG_GNRC_IPV6_NIB_SOL_ROUTER) { + return false; + } + /* 6LBR interface does not send RS. */ + if (gnrc_netif_is_6lbr(netif)) { + return false; + } + /* A non-advertising router sends RS or a 6LN that is advertising or not has to refetch router information */ - return !gnrc_netif_is_6lbr(netif) && - (!gnrc_netif_is_rtr_adv(netif) || gnrc_netif_is_6ln(netif)); + return !gnrc_netif_is_rtr_adv(netif) || gnrc_netif_is_6ln(netif); } void gnrc_ipv6_nib_init(void) From 989d8485de889fb7969af457f76a9810ae1907e1 Mon Sep 17 00:00:00 2001 From: Benjamin Valentin Date: Mon, 28 Apr 2025 14:12:49 +0200 Subject: [PATCH 2/2] gnrc/ipv6/nib: convert conf.h to new indentation style --- sys/include/net/gnrc/ipv6/nib/conf.h | 165 +++++++++++++-------------- 1 file changed, 82 insertions(+), 83 deletions(-) diff --git a/sys/include/net/gnrc/ipv6/nib/conf.h b/sys/include/net/gnrc/ipv6/nib/conf.h index 73bd886a6e..08320a6954 100644 --- a/sys/include/net/gnrc/ipv6/nib/conf.h +++ b/sys/include/net/gnrc/ipv6/nib/conf.h @@ -32,51 +32,50 @@ extern "C" { /* some pseudo-module based configuration, doc: see below */ #ifdef MODULE_GNRC_IPV6_NIB_6LBR -#ifndef CONFIG_GNRC_IPV6_NIB_6LBR -#define CONFIG_GNRC_IPV6_NIB_6LBR 1 -#endif -#ifndef CONFIG_GNRC_IPV6_NIB_NUMOF -#define CONFIG_GNRC_IPV6_NIB_NUMOF (16) -#endif +# ifndef CONFIG_GNRC_IPV6_NIB_6LBR +# define CONFIG_GNRC_IPV6_NIB_6LBR 1 +# endif +# ifndef CONFIG_GNRC_IPV6_NIB_NUMOF +# define CONFIG_GNRC_IPV6_NIB_NUMOF (16) +# endif #endif #ifdef MODULE_GNRC_IPV6_NIB_6LR -#ifndef CONFIG_GNRC_IPV6_NIB_6LR -#define CONFIG_GNRC_IPV6_NIB_6LR 1 -#endif +# ifndef CONFIG_GNRC_IPV6_NIB_6LR +# define CONFIG_GNRC_IPV6_NIB_6LR 1 +# endif #endif #ifdef MODULE_GNRC_IPV6_NIB_6LN -#ifndef CONFIG_GNRC_IPV6_NIB_6LN -#define CONFIG_GNRC_IPV6_NIB_6LN 1 -#endif - -/* We are only a 6lo node with no 'classic' IPv6 interface */ -#ifndef MODULE_GNRC_IPV6_CLASSIC -#ifndef CONFIG_GNRC_IPV6_NIB_QUEUE_PKT -#define CONFIG_GNRC_IPV6_NIB_QUEUE_PKT 0 -#endif -#ifndef CONFIG_GNRC_IPV6_NIB_SLAAC -#define CONFIG_GNRC_IPV6_NIB_SLAAC 0 -#endif -#if !CONFIG_GNRC_IPV6_NIB_6LR -# ifndef CONFIG_GNRC_IPV6_NIB_ARSM -# define CONFIG_GNRC_IPV6_NIB_ARSM 0 -# endif -# ifndef CONFIG_GNRC_IPV6_NIB_NUMOF -/* only needs to store default router */ -# define CONFIG_GNRC_IPV6_NIB_NUMOF (1) -# endif -#endif -#endif +# ifndef CONFIG_GNRC_IPV6_NIB_6LN +# define CONFIG_GNRC_IPV6_NIB_6LN 1 +# endif +# ifndef MODULE_GNRC_IPV6_CLASSIC + /* We are only a 6lo node with no 'classic' IPv6 interface */ +# ifndef CONFIG_GNRC_IPV6_NIB_QUEUE_PKT +# define CONFIG_GNRC_IPV6_NIB_QUEUE_PKT 0 +# endif +# ifndef CONFIG_GNRC_IPV6_NIB_SLAAC +# define CONFIG_GNRC_IPV6_NIB_SLAAC 0 +# endif +# if !CONFIG_GNRC_IPV6_NIB_6LR +# ifndef CONFIG_GNRC_IPV6_NIB_ARSM +# define CONFIG_GNRC_IPV6_NIB_ARSM 0 +# endif +# ifndef CONFIG_GNRC_IPV6_NIB_NUMOF + /* only needs to store default router */ +# define CONFIG_GNRC_IPV6_NIB_NUMOF (1) +# endif +# endif +# endif #endif #ifdef MODULE_GNRC_IPV6_NIB_ROUTER -#define CONFIG_GNRC_IPV6_NIB_ROUTER 1 +# define CONFIG_GNRC_IPV6_NIB_ROUTER 1 #endif #ifdef MODULE_GNRC_IPV6_NIB_DNS -#define CONFIG_GNRC_IPV6_NIB_DNS 1 +# define CONFIG_GNRC_IPV6_NIB_DNS 1 #endif /** @@ -88,54 +87,54 @@ extern "C" { * @brief enable features for 6Lo border router */ #ifndef CONFIG_GNRC_IPV6_NIB_6LBR -#define CONFIG_GNRC_IPV6_NIB_6LBR 0 +# define CONFIG_GNRC_IPV6_NIB_6LBR 0 #endif /** * @brief enable features for 6Lo router */ #ifndef CONFIG_GNRC_IPV6_NIB_6LR -#if CONFIG_GNRC_IPV6_NIB_6LBR -#define CONFIG_GNRC_IPV6_NIB_6LR 1 -#else -#define CONFIG_GNRC_IPV6_NIB_6LR 0 -#endif +# if CONFIG_GNRC_IPV6_NIB_6LBR +# define CONFIG_GNRC_IPV6_NIB_6LR 1 +# else +# define CONFIG_GNRC_IPV6_NIB_6LR 0 +# endif #endif /** * @brief enable features for 6Lo node */ #ifndef CONFIG_GNRC_IPV6_NIB_6LN -#if CONFIG_GNRC_IPV6_NIB_6LR -#define CONFIG_GNRC_IPV6_NIB_6LN 1 -#else -#define CONFIG_GNRC_IPV6_NIB_6LN 0 -#endif +# if CONFIG_GNRC_IPV6_NIB_6LR +# define CONFIG_GNRC_IPV6_NIB_6LN 1 +# else +# define CONFIG_GNRC_IPV6_NIB_6LN 0 +# endif #endif /** * @brief enable features for IPv6 routers */ #ifndef CONFIG_GNRC_IPV6_NIB_ROUTER -#if CONFIG_GNRC_IPV6_NIB_6LR -#define CONFIG_GNRC_IPV6_NIB_ROUTER 1 -#else -#define CONFIG_GNRC_IPV6_NIB_ROUTER 0 -#endif +# if CONFIG_GNRC_IPV6_NIB_6LR +# define CONFIG_GNRC_IPV6_NIB_ROUTER 1 +# else +# define CONFIG_GNRC_IPV6_NIB_ROUTER 0 +# endif #endif /** * @brief activate router advertising at interface start-up */ #ifndef CONFIG_GNRC_IPV6_NIB_ADV_ROUTER -#define CONFIG_GNRC_IPV6_NIB_ADV_ROUTER 0 +# define CONFIG_GNRC_IPV6_NIB_ADV_ROUTER 0 #endif /** * @brief enable periodic router solicitations */ #ifndef CONFIG_GNRC_IPV6_NIB_SOL_ROUTER -#define CONFIG_GNRC_IPV6_NIB_SOL_ROUTER 1 +# define CONFIG_GNRC_IPV6_NIB_SOL_ROUTER 1 #endif /** @@ -151,7 +150,7 @@ extern "C" { * Requires the `gnrc_ipv6_nib_rio` module. */ #ifndef CONFIG_GNRC_IPV6_NIB_ADD_RIO_IN_RA -#define CONFIG_GNRC_IPV6_NIB_ADD_RIO_IN_RA 0 +# define CONFIG_GNRC_IPV6_NIB_ADD_RIO_IN_RA 0 #endif /** @@ -162,25 +161,25 @@ extern "C" { * Requires the `gnrc_ipv6_nib_rio` module. */ #ifndef CONFIG_GNRC_IPV6_NIB_ADD_RIO_IN_LAST_RA -#if IS_USED(MODULE_GNRC_IPV6_AUTO_SUBNETS) -#define CONFIG_GNRC_IPV6_NIB_ADD_RIO_IN_LAST_RA 1 -#else -#define CONFIG_GNRC_IPV6_NIB_ADD_RIO_IN_LAST_RA 0 -#endif +# if IS_USED(MODULE_GNRC_IPV6_AUTO_SUBNETS) +# define CONFIG_GNRC_IPV6_NIB_ADD_RIO_IN_LAST_RA 1 +# else +# define CONFIG_GNRC_IPV6_NIB_ADD_RIO_IN_LAST_RA 0 +# endif #endif /** * @brief (de-)activate NDP address resolution state-machine */ #ifndef CONFIG_GNRC_IPV6_NIB_ARSM -#define CONFIG_GNRC_IPV6_NIB_ARSM 1 +# define CONFIG_GNRC_IPV6_NIB_ARSM 1 #endif /** * @brief queue packets for address resolution */ #ifndef CONFIG_GNRC_IPV6_NIB_QUEUE_PKT -#define CONFIG_GNRC_IPV6_NIB_QUEUE_PKT 1 +# define CONFIG_GNRC_IPV6_NIB_QUEUE_PKT 1 #endif /** @@ -190,25 +189,25 @@ extern "C" { * @see [RFC 4862](https://tools.ietf.org/html/rfc4862) */ #ifndef CONFIG_GNRC_IPV6_NIB_SLAAC -#define CONFIG_GNRC_IPV6_NIB_SLAAC 1 +# define CONFIG_GNRC_IPV6_NIB_SLAAC 1 #endif /** * @brief handle Redirect Messages */ #ifndef CONFIG_GNRC_IPV6_NIB_REDIRECT -#define CONFIG_GNRC_IPV6_NIB_REDIRECT 0 +# define CONFIG_GNRC_IPV6_NIB_REDIRECT 0 #endif /** * @brief (de-)activate destination cache */ #ifndef CONFIG_GNRC_IPV6_NIB_DC -#if CONFIG_GNRC_IPV6_NIB_REDIRECT -#define CONFIG_GNRC_IPV6_NIB_DC 1 -#else -#define CONFIG_GNRC_IPV6_NIB_DC 0 -#endif +# if CONFIG_GNRC_IPV6_NIB_REDIRECT +# define CONFIG_GNRC_IPV6_NIB_DC 1 +# else +# define CONFIG_GNRC_IPV6_NIB_DC 0 +# endif #endif /** @@ -217,7 +216,7 @@ extern "C" { * @see [RFC 8106](https://tools.ietf.org/html/rfc8106) */ #ifndef CONFIG_GNRC_IPV6_NIB_DNS -#define CONFIG_GNRC_IPV6_NIB_DNS 0 +# define CONFIG_GNRC_IPV6_NIB_DNS 0 #endif /** @@ -226,11 +225,11 @@ extern "C" { * @see [RFC 6775, section 8.1](https://tools.ietf.org/html/rfc6775#section-8.1) */ #ifndef CONFIG_GNRC_IPV6_NIB_MULTIHOP_P6C -#if CONFIG_GNRC_IPV6_NIB_6LR -#define CONFIG_GNRC_IPV6_NIB_MULTIHOP_P6C 1 -#else -#define CONFIG_GNRC_IPV6_NIB_MULTIHOP_P6C 0 -#endif +# if CONFIG_GNRC_IPV6_NIB_6LR +# define CONFIG_GNRC_IPV6_NIB_MULTIHOP_P6C 1 +# else +# define CONFIG_GNRC_IPV6_NIB_MULTIHOP_P6C 0 +# endif #endif /** @@ -239,7 +238,7 @@ extern "C" { * @see [RFC 6775, section 8.2](https://tools.ietf.org/html/rfc6775#section-8.2) */ #ifndef CONFIG_GNRC_IPV6_NIB_MULTIHOP_DAD -#define CONFIG_GNRC_IPV6_NIB_MULTIHOP_DAD 0 +# define CONFIG_GNRC_IPV6_NIB_MULTIHOP_DAD 0 #endif /** @} */ @@ -249,7 +248,7 @@ extern "C" { * @see [RFC 4861, section 6.3.4](https://tools.ietf.org/html/rfc4861#section-6.3.4) */ #ifndef CONFIG_GNRC_IPV6_NIB_REACH_TIME_RESET -#define CONFIG_GNRC_IPV6_NIB_REACH_TIME_RESET (7200000U) +# define CONFIG_GNRC_IPV6_NIB_REACH_TIME_RESET (7200000U) #endif /** @@ -258,14 +257,14 @@ extern "C" { * @warning Only do this if you know what you're doing */ #ifndef CONFIG_GNRC_IPV6_NIB_NO_RTR_SOL -#define CONFIG_GNRC_IPV6_NIB_NO_RTR_SOL 0 +# define CONFIG_GNRC_IPV6_NIB_NO_RTR_SOL 0 #endif /** * @brief Maximum link-layer address length (aligned) */ #ifndef CONFIG_GNRC_IPV6_NIB_L2ADDR_MAX_LEN -#define CONFIG_GNRC_IPV6_NIB_L2ADDR_MAX_LEN (8U) +# define CONFIG_GNRC_IPV6_NIB_L2ADDR_MAX_LEN (8U) #endif /** @@ -275,7 +274,7 @@ extern "C" { * default routers */ #ifndef CONFIG_GNRC_IPV6_NIB_DEFAULT_ROUTER_NUMOF -#define CONFIG_GNRC_IPV6_NIB_DEFAULT_ROUTER_NUMOF (1) +# define CONFIG_GNRC_IPV6_NIB_DEFAULT_ROUTER_NUMOF (1) #endif /** @@ -285,7 +284,7 @@ extern "C" { * neighbors and duplicate address detection table entries */ #ifndef CONFIG_GNRC_IPV6_NIB_NUMOF -#define CONFIG_GNRC_IPV6_NIB_NUMOF (4) +# define CONFIG_GNRC_IPV6_NIB_NUMOF (4) #endif /** @@ -297,7 +296,7 @@ extern "C" { * @attention This MUST be leq UINT8_MAX */ #ifndef CONFIG_GNRC_IPV6_NIB_NBR_QUEUE_CAP -#define CONFIG_GNRC_IPV6_NIB_NBR_QUEUE_CAP (16) +# define CONFIG_GNRC_IPV6_NIB_NBR_QUEUE_CAP (16) #endif /** @@ -307,16 +306,16 @@ extern "C" { * and prefix list entries in NIB */ #ifndef CONFIG_GNRC_IPV6_NIB_OFFL_NUMOF -#define CONFIG_GNRC_IPV6_NIB_OFFL_NUMOF (8) +# define CONFIG_GNRC_IPV6_NIB_OFFL_NUMOF (8) #endif #if CONFIG_GNRC_IPV6_NIB_MULTIHOP_P6C || defined(DOXYGEN) /** * @brief Number of authoritative border router entries in NIB */ -#ifndef CONFIG_GNRC_IPV6_NIB_ABR_NUMOF -#define CONFIG_GNRC_IPV6_NIB_ABR_NUMOF (1) -#endif +# ifndef CONFIG_GNRC_IPV6_NIB_ABR_NUMOF +# define CONFIG_GNRC_IPV6_NIB_ABR_NUMOF (1) +# endif #endif #endif /* !CONFIG_KCONFIG_MODULE_GNRC_IPV6_NIB || DOXYGEN */