1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys/include/net/gnrc/netif/flags.h
2017-11-17 10:41:54 +01:00

145 lines
4.2 KiB
C

/*
* Copyright (C) 2017 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup net_gnrc_netif
* @{
*
* @file
* @brief Flag definitions for @ref net_gnrc_netif
*
* @author Martine Lenders <m.lenders@fu-berlin.de>
*/
#ifndef NET_GNRC_NETIF_FLAGS_H
#define NET_GNRC_NETIF_FLAGS_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Auto-address configuration modes
* @anchor net_gnrc_netif_aac
*/
enum {
GNRC_NETIF_AAC_NONE = 0, /**< no configuration */
GNRC_NETIF_AAC_AUTO, /**< Use some automatic bootstrapping (e.g. SLAAC with IPv6) */
GNRC_NETIF_AAC_DHCP, /**< Use DHCP(v6) */
/* extend if needed */
};
/**
* @name Network interface flags
* @anchor net_gnrc_netif_flags
* @{
*/
/**
* @brief Network interface has link-layer address
*
* There are link-layers (e.g. SLIP) that do not have (nor require) link-layer
* addresses. This flag signifies this fact to upper layers by leaving it unset.
*/
#define GNRC_NETIF_FLAGS_HAS_L2ADDR (0x00000001U)
/**
* @brief Network interface is enabled for IPv6 forwarding
*/
#define GNRC_NETIF_FLAGS_IPV6_FORWARDING (0x00000002U)
/**
* @brief Network interface advertises itself as an IPv6 router
* (implies @ref GNRC_NETIF_FLAGS_IPV6_FORWARDING to be set)
*/
#define GNRC_NETIF_FLAGS_IPV6_RTR_ADV (0x00000004U)
/**
* @brief This interface advertises its gnrc_netif_t::mtu to other nodes
* (implies @ref GNRC_NETIF_FLAGS_IPV6_RTR_ADV to be set)
*/
#define GNRC_NETIF_FLAGS_IPV6_ADV_MTU (0x00000008U)
/**
* @brief This interface advertises its gnrc_netif_t::cur_hl to other nodes
* (implies @ref GNRC_NETIF_FLAGS_IPV6_RTR_ADV to be set)
*/
#define GNRC_NETIF_FLAGS_IPV6_ADV_CUR_HL (0x00000010U)
/**
* @brief This interface advertises its reachable time to other nodes
* (implies @ref GNRC_NETIF_FLAGS_IPV6_RTR_ADV to be set)
*/
#define GNRC_NETIF_FLAGS_IPV6_ADV_REACH_TIME (0x00000020U)
/**
* @brief This interface advertises its retransmission timer to other nodes
* (implies @ref GNRC_NETIF_FLAGS_IPV6_RTR_ADV to be set)
*/
#define GNRC_NETIF_FLAGS_IPV6_ADV_RETRANS_TIMER (0x00000040U)
/**
* @brief If gnrc_netif_t::ipv6::aac_mode == GNRC_NETIF_AAC_DHCP then this
* flag indicates that other configuration information is available via
* DHCPv6 (e.g. DNS-related information)
*
* @see [RFC 4861, section 4.2](https://tools.ietf.org/html/rfc4861#section-4.2)
*/
#define GNRC_NETIF_FLAGS_IPV6_ADV_O_FLAG (0x00000080U)
/**
* @brief This interface uses 6Lo header compression
*
* @see [RFC 6282](https://tools.ietf.org/html/rfc6282)
*/
#define GNRC_NETIF_FLAGS_6LO_HC (0x00000100U)
/**
* @brief This interface acts as a 6Lo border router to the LLN
*/
#define GNRC_NETIF_FLAGS_6LO_ABR (0x00000200U)
/**
* @brief This interface acts as a mesh-under node (route-over topology when
* unset)
*/
#define GNRC_NETIF_FLAGS_6LO_MESH (0x00000400U)
/**
* @brief Interface supports 6LoWPAN general header compression
*
* @attention 6CIO (which propagates this flag throughout) not implemented yet
* @see [RFC 7400, section 3.3](https://tools.ietf.org/html/rfc7400#section-3.3)
* @see [draft-ietf-6lo-rfc6775-update-09, section 6.3]
* (https://tools.ietf.org/html/draft-ietf-6lo-rfc6775-update-09#section-6.3)
*/
#define GNRC_NETIF_FLAGS_6LO_BACKBONE (0x00000800U)
/**
* @brief Marks if the addresses of the interface were already registered
* to an interface or not
*/
#define GNRC_NETIF_FLAGS_6LO_ADDRS_REG (0x00001000U)
/**
* @brief Mask for @ref gnrc_mac_tx_feedback_t
*/
#define GNRC_NETIF_FLAGS_MAC_TX_FEEDBACK_MASK (0x00006000U)
/**
* @brief Flag to track if a transmission might have corrupted a received
* packet
*/
#define GNRC_NETIF_FLAGS_MAC_RX_STARTED (0x00008000U)
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* NET_GNRC_NETIF_FLAGS_H */
/** @} */