From dda71313741e8fe7d67bd4e8305ecd6827d618c5 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Thu, 6 Dec 2018 21:45:41 +0100 Subject: [PATCH 1/5] ethertype: define 6LoWPAN encapsulation ethertype --- sys/include/net/ethertype.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/include/net/ethertype.h b/sys/include/net/ethertype.h index 7368b6bde5..5fb7b727b4 100644 --- a/sys/include/net/ethertype.h +++ b/sys/include/net/ethertype.h @@ -37,6 +37,7 @@ extern "C" { #define ETHERTYPE_CCNX (0x0801) /**< Parc CCNX */ #define ETHERTYPE_NDN (0x8624) /**< NDN Protocol (http://named-data.net/) */ #define ETHERTYPE_IPV6 (0x86dd) /**< Internet protocol version 6 */ +#define ETHERTYPE_6LOENC (0xa0ed) /**< 6LoWPAN encapsulation */ #define ETHERTYPE_UNKNOWN (0xffff) /**< Reserved (no protocol specified) */ #ifdef __cplusplus From fcc57ddd0449f56cdd3a17220deaa7ef70fecb89 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Thu, 6 Dec 2018 21:46:02 +0100 Subject: [PATCH 2/5] gnrc_sixloenc: introduce pseudo-module --- makefiles/pseudomodules.inc.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/makefiles/pseudomodules.inc.mk b/makefiles/pseudomodules.inc.mk index 3de942f165..7f05cc9ff5 100644 --- a/makefiles/pseudomodules.inc.mk +++ b/makefiles/pseudomodules.inc.mk @@ -25,6 +25,7 @@ PSEUDOMODULES += gnrc_neterr PSEUDOMODULES += gnrc_netapi_callbacks PSEUDOMODULES += gnrc_netapi_mbox PSEUDOMODULES += gnrc_pktbuf_cmd +PSEUDOMODULES += gnrc_sixloenc PSEUDOMODULES += gnrc_sixlowpan_border_router_default PSEUDOMODULES += gnrc_sixlowpan_default PSEUDOMODULES += gnrc_sixlowpan_iphc_nhc From 941bcc142dfae873aaf8db7ec06f3f59029c057a Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Thu, 6 Dec 2018 21:46:36 +0100 Subject: [PATCH 3/5] make: make gnrc_sixloenc dependent on gnrc_sixlowpan --- Makefile.dep | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.dep b/Makefile.dep index 8e1a798200..3cecda907e 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -154,7 +154,7 @@ ifneq (,$(filter gnrc_netif,$(USEMODULE))) endif endif -ifneq (,$(filter ieee802154 nrfmin esp_now,$(USEMODULE))) +ifneq (,$(filter ieee802154 nrfmin esp_now gnrc_sixloenc,$(USEMODULE))) ifneq (,$(filter gnrc_ipv6, $(USEMODULE))) USEMODULE += gnrc_sixlowpan endif From 45b95e86cd6a1c668a48466dab8ef28e6e75d2f8 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Thu, 6 Dec 2018 21:47:11 +0100 Subject: [PATCH 4/5] gnrc_nettype: provide ethertype to nettype for 6LoEnc --- sys/include/net/gnrc/nettype.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/include/net/gnrc/nettype.h b/sys/include/net/gnrc/nettype.h index b50d69cc97..70b58aafaf 100644 --- a/sys/include/net/gnrc/nettype.h +++ b/sys/include/net/gnrc/nettype.h @@ -158,6 +158,10 @@ static inline gnrc_nettype_t gnrc_nettype_from_ethertype(uint16_t type) #elif defined(MODULE_NDN_RIOT) return GNRC_NETTYPE_NDN; #endif +#endif +#ifdef MODULE_GNRC_SIXLOENC + case ETHERTYPE_6LOENC: + return GNRC_NETTYPE_SIXLOWPAN; #endif default: return GNRC_NETTYPE_UNDEF; @@ -178,6 +182,10 @@ static inline gnrc_nettype_t gnrc_nettype_from_ethertype(uint16_t type) static inline uint16_t gnrc_nettype_to_ethertype(gnrc_nettype_t type) { switch (type) { +#ifdef MODULE_GNRC_SIXLOENC + case GNRC_NETTYPE_SIXLOWPAN: + return ETHERTYPE_6LOENC; +#endif #ifdef MODULE_GNRC_IPV6 case GNRC_NETTYPE_IPV6: return ETHERTYPE_IPV6; From 481f742c71222d5d2393ab96a7fb25cb1329b2b3 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Thu, 6 Dec 2018 21:47:44 +0100 Subject: [PATCH 5/5] gnrc_netif: interface configuration for 6LoENC --- sys/net/gnrc/netif/gnrc_netif.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sys/net/gnrc/netif/gnrc_netif.c b/sys/net/gnrc/netif/gnrc_netif.c index 74845ae7ff..cda15210f9 100644 --- a/sys/net/gnrc/netif/gnrc_netif.c +++ b/sys/net/gnrc/netif/gnrc_netif.c @@ -1114,6 +1114,9 @@ static ipv6_addr_t *_src_addr_selection(gnrc_netif_t *netif, bool gnrc_netif_is_6ln(const gnrc_netif_t *netif) { switch (netif->device_type) { +#ifdef MODULE_GNRC_SIXLOENC + case NETDEV_TYPE_ETHERNET: +#endif case NETDEV_TYPE_IEEE802154: case NETDEV_TYPE_CC110X: case NETDEV_TYPE_BLE: @@ -1177,7 +1180,9 @@ static void _init_from_device(gnrc_netif_t *netif) assert(res == sizeof(tmp)); netif->device_type = (uint8_t)tmp; switch (netif->device_type) { -#if defined(MODULE_NETDEV_IEEE802154) || defined(MODULE_NRFMIN) || defined(MODULE_XBEE) || defined(MODULE_ESP_NOW) +#if defined(MODULE_NETDEV_IEEE802154) || defined(MODULE_NRFMIN) || \ + defined(MODULE_XBEE) || defined(MODULE_ESP_NOW) || \ + defined(MODULE_GNRC_SIXLOENC) case NETDEV_TYPE_IEEE802154: case NETDEV_TYPE_NRFMIN: #ifdef MODULE_GNRC_SIXLOWPAN_IPHC @@ -1201,6 +1206,9 @@ static void _init_from_device(gnrc_netif_t *netif) case NETDEV_TYPE_ETHERNET: #ifdef MODULE_GNRC_IPV6 netif->ipv6.mtu = ETHERNET_DATA_LEN; +#endif +#if defined(MODULE_GNRC_SIXLOWPAN_IPHC) && defined(MODULE_GNRC_SIXLOENC) + netif->flags |= GNRC_NETIF_FLAGS_6LO_HC; #endif break; #endif