summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-04-13 13:53:13 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-04-13 13:53:13 -0600
commita00f14a60a8ec54fbcf63e44d00f7101ec7cb5a3 (patch)
tree695673fb65c0bfcc3d32ca4de064ca13a0b6484e /nuttx
parentdac105b64ee0c2544d14cbb7733c6861fb53a314 (diff)
downloadpx4-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.
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/include/nuttx/net/netdev.h43
-rw-r--r--nuttx/libc/Kconfig2
-rw-r--r--nuttx/net/devif/ipv6_input.c9
-rw-r--r--nuttx/net/icmpv6/icmpv6_rsolicit.c10
-rw-r--r--nuttx/net/icmpv6/icmpv6_solicit.c10
-rw-r--r--nuttx/net/neighbor/neighbor_out.c9
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]);
}