mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-15 09:33:50 +01:00
Merge pull request #21437 from benpicco/CONFIG_GNRC_IPV6_NIB_SOL_ROUTER
gnrc/ipv6/nib: add option to disable router solicitations
This commit is contained in:
commit
d973ca18a9
@ -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,47 +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
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -144,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
|
||||
|
||||
/**
|
||||
@ -155,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
|
||||
|
||||
/**
|
||||
@ -183,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
|
||||
|
||||
/**
|
||||
@ -210,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
|
||||
|
||||
/**
|
||||
@ -219,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
|
||||
|
||||
/**
|
||||
@ -232,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
|
||||
/** @} */
|
||||
|
||||
@ -242,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
|
||||
|
||||
/**
|
||||
@ -251,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
|
||||
|
||||
/**
|
||||
@ -268,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
|
||||
|
||||
/**
|
||||
@ -278,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
|
||||
|
||||
/**
|
||||
@ -290,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
|
||||
|
||||
/**
|
||||
@ -300,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 */
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user