diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2015-04-13 13:53:13 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2015-04-13 13:53:13 -0600 |
commit | a00f14a60a8ec54fbcf63e44d00f7101ec7cb5a3 (patch) | |
tree | 695673fb65c0bfcc3d32ca4de064ca13a0b6484e | |
parent | dac105b64ee0c2544d14cbb7733c6861fb53a314 (diff) | |
download | px4-nuttx-a00f14a60a8ec54fbcf63e44d00f7101ec7cb5a3.tar.gz px4-nuttx-a00f14a60a8ec54fbcf63e44d00f7101ec7cb5a3.tar.bz2 px4-nuttx-a00f14a60a8ec54fbcf63e44d00f7101ec7cb5a3.zip |
Use common macro(s) for calculating link layer header length. From Brennan Ashton.
-rw-r--r-- | nuttx/include/nuttx/net/netdev.h | 43 | ||||
-rw-r--r-- | nuttx/libc/Kconfig | 2 | ||||
-rw-r--r-- | nuttx/net/devif/ipv6_input.c | 9 | ||||
-rw-r--r-- | nuttx/net/icmpv6/icmpv6_rsolicit.c | 10 | ||||
-rw-r--r-- | nuttx/net/icmpv6/icmpv6_solicit.c | 10 | ||||
-rw-r--r-- | nuttx/net/neighbor/neighbor_out.c | 9 |
6 files changed, 50 insertions, 33 deletions
diff --git a/nuttx/include/nuttx/net/netdev.h b/nuttx/include/nuttx/net/netdev.h index a759eac4d..1b6a10bd5 100644 --- a/nuttx/include/nuttx/net/netdev.h +++ b/nuttx/include/nuttx/net/netdev.h @@ -481,4 +481,47 @@ uint16_t ipv4_chksum(FAR struct net_driver_s *dev); #ifdef CONFIG_NET_IPv6 uint16_t ipv6_chksum(FAR struct net_driver_s *dev); #endif + +/**************************************************************************** + * Function: netdev_ipv4_hdrlen + * + * Description: + * Provide header length for interface based on device + * + * Input Parameters: + * dev Device structure pointer + * + ****************************************************************************/ + +#ifdef CONFIG_NET_IPv4 +#if defined(CONFIG_NET_MULTILINK) +# define netdev_ipv4_hdrlen(dev) (dev->d_llhdrlen) +#elif defined(CONFIG_NET_ETHERNET) +# define netdev_ipv4_hdrlen(dev) ETH_HDRLEN +#else /* if defined(CONFIG_NET_SLIP) */ +# define netdev_ipv4_hdrlen(dev) 0 +#endif +#endif /* CONFIG_NET_IPv4 */ + +/**************************************************************************** + * Function: netdev_ipv6_hdrlen + * + * Description: + * Provide header lenght for interface based on device + * + * Input Parameters: + * dev Device structure pointer + * + ****************************************************************************/ + +#ifdef CONFIG_NET_IPv6 +#if defined(CONFIG_NET_MULTILINK) +# define netdev_ipv6_hdrlen(dev) dev->d_llhdrlen +#elif defined(CONFIG_NET_ETHERNET) +# define netdev_ipv6_hdrlen(dev) ETH_HDRLEN +#else /* if defined(CONFIG_NET_SLIP) */ +# define netdev_ipv6_hdrlen(dev) 0 +#endif +#endif /* CONFIG_NET_IPv6 */ + #endif /* __INCLUDE_NUTTX_NET_NETDEV_H */ diff --git a/nuttx/libc/Kconfig b/nuttx/libc/Kconfig index e4da4d61d..ec20c5911 100644 --- a/nuttx/libc/Kconfig +++ b/nuttx/libc/Kconfig @@ -274,6 +274,8 @@ config LIBC_LOCALTIME timezone file is required for any another time zone and the environment variable TZ must be set to the name of that file. + See https://www.iana.org/time-zones + if LIBC_LOCALTIME config LIBC_TZ_MAX_TIMES diff --git a/nuttx/net/devif/ipv6_input.c b/nuttx/net/devif/ipv6_input.c index 680a54371..fa155202c 100644 --- a/nuttx/net/devif/ipv6_input.c +++ b/nuttx/net/devif/ipv6_input.c @@ -178,13 +178,8 @@ int ipv6_input(FAR struct net_driver_s *dev) * headers. */ -#if defined(CONFIG_NET_MULTILINK) - pktlen = (ipv6->len[0] << 8) + ipv6->len[1] + IPv6_HDRLEN + dev->d_llhdrlen; -#elif defined(CONFIG_NET_ETHERNET) - pktlen = (ipv6->len[0] << 8) + ipv6->len[1] + IPv6_HDRLEN + ETH_HDRLEN; -#else /* if defined(CONFIG_NET_SLIP) */ - pktlen = (ipv6->len[0] << 8) + ipv6->len[1] + IPv6_HDRLEN; -#endif + pktlen = (ipv6->len[0] << 8) + ipv6->len[1] + IPv6_HDRLEN + netdev_ip + + netdev_ipv6_hdrlen(dev); if (pktlen <= dev->d_len) { diff --git a/nuttx/net/icmpv6/icmpv6_rsolicit.c b/nuttx/net/icmpv6/icmpv6_rsolicit.c index 03198759e..58e60fdd3 100644 --- a/nuttx/net/icmpv6/icmpv6_rsolicit.c +++ b/nuttx/net/icmpv6/icmpv6_rsolicit.c @@ -182,15 +182,7 @@ void icmpv6_rsolicit(FAR struct net_driver_s *dev) /* Add the size of the layer layer header to the total size of the * outgoing packet. */ - -#if defined(CONFIG_NET_MULTILINK) - dev->d_len += dev->d_llhdrlen; -#elif defined(CONFIG_NET_ETHERNET) - dev->d_len += ETH_HDRLEN; -#else /* if defined(CONFIG_NET_SLIP) */ - /* SLIP has no link layer header */ -#endif - + dev->d_len += netdev_ipv6_hdrlen(dev); nllvdbg("Outgoing ICMPv6 Router Solicitation length: %d (%d)\n", dev->d_len, (icmp->len[0] << 8) | icmp->len[1]); diff --git a/nuttx/net/icmpv6/icmpv6_solicit.c b/nuttx/net/icmpv6/icmpv6_solicit.c index a6fe35205..054862002 100644 --- a/nuttx/net/icmpv6/icmpv6_solicit.c +++ b/nuttx/net/icmpv6/icmpv6_solicit.c @@ -210,15 +210,7 @@ void icmpv6_solicit(FAR struct net_driver_s *dev, /* Add the size of the layer layer header to the total size of the * outgoing packet. */ - -#if defined(CONFIG_NET_MULTILINK) - dev->d_len += dev->d_llhdrlen; -#elif defined(CONFIG_NET_ETHERNET) - dev->d_len += ETH_HDRLEN; -#else /* if defined(CONFIG_NET_SLIP) */ - /* SLIP has no link layer header */ -#endif - + dev->d_len += netdev_ipv6_hdrlen(dev); nllvdbg("Outgoing ICMPv6 Neighbor Solicitation length: %d (%d)\n", dev->d_len, (icmp->len[0] << 8) | icmp->len[1]); diff --git a/nuttx/net/neighbor/neighbor_out.c b/nuttx/net/neighbor/neighbor_out.c index 615f2c6ad..f8d3a80d5 100644 --- a/nuttx/net/neighbor/neighbor_out.c +++ b/nuttx/net/neighbor/neighbor_out.c @@ -245,14 +245,7 @@ void neighbor_out(FAR struct net_driver_s *dev) * outgoing packet. */ -#if defined(CONFIG_NET_MULTILINK) - dev->d_len += dev->d_llhdrlen; -#elif defined(CONFIG_NET_ETHERNET) - dev->d_len += ETH_HDRLEN; -#else /* if defined(CONFIG_NET_SLIP) */ - /* SLIP has no link layer header */ -#endif - + dev_d_len += netdev_ipv6_hdrlen(dev); nllvdbg("Outgoing IPv6 Packet length: %d (%d)\n", dev->d_len, (ip->len[0] << 8) | ip->len[1]); } |