summaryrefslogtreecommitdiff
path: root/nuttx/include
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-01-15 08:03:56 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-01-15 08:03:56 -0600
commitd01102573821393af9572e96cb4edd0c8f01af84 (patch)
treeb46c182ec342e351f0dc17534dd101ac93684b50 /nuttx/include
parent475bd20ef9ae32104f844eb015ad685e2b8ccd99 (diff)
downloadpx4-nuttx-d01102573821393af9572e96cb4edd0c8f01af84.tar.gz
px4-nuttx-d01102573821393af9572e96cb4edd0c8f01af84.tar.bz2
px4-nuttx-d01102573821393af9572e96cb4edd0c8f01af84.zip
- Rename devif_input() ipv4_input()
- Copy net/devif/devif_input.c to ipv6_input.c. Remove all IPv4-specific logic. - Rename net/devif/devif_input.c to ipv4_input.c. Remove all IPv6-specific logic - Split IPv4 header structure out as net_ipv4hdr_s from net_iphdr_s
Diffstat (limited to 'nuttx/include')
-rw-r--r--nuttx/include/nuttx/net/ip.h55
-rw-r--r--nuttx/include/nuttx/net/netdev.h14
2 files changed, 37 insertions, 32 deletions
diff --git a/nuttx/include/nuttx/net/ip.h b/nuttx/include/nuttx/net/ip.h
index d2deb8f41..160e00fa6 100644
--- a/nuttx/include/nuttx/net/ip.h
+++ b/nuttx/include/nuttx/net/ip.h
@@ -101,27 +101,11 @@ typedef net_ip6addr_t net_ipaddr_t;
typedef net_ip4addr_t net_ipaddr_t;
#endif
+#ifdef CONFIG_NET_IPv4
/* The IPv4 header */
struct net_iphdr_s
{
-#ifdef CONFIG_NET_IPv6
-
- /* IPv6 Ip header */
-
- uint8_t vtc; /* Bits 0-3: version, bits 4-7: traffic class (MS) */
- uint8_t tcf; /* Bits 0-3: traffic class (LS), 4-bits: flow label (MS) */
- uint16_t flow; /* 16-bit flow label (LS) */
- uint8_t len[2]; /* 16-bit Payload length */
- uint8_t proto; /* 8-bit Next header (same as IPv4 protocol field) */
- uint8_t ttl; /* 8-bit Hop limit (like IPv4 TTL field) */
- net_ip6addr_t srcipaddr; /* 128-bit Source address */
- net_ip6addr_t destipaddr; /* 128-bit Destination address */
-
-#else /* CONFIG_NET_IPv6 */
-
- /* IPv4 IP header */
-
uint8_t vhl; /* 8-bit Version (4) and header length (5 or 6) */
uint8_t tos; /* 8-bit Type of service (e.g., 6=TCP) */
uint8_t len[2]; /* 16-bit Total length */
@@ -132,9 +116,24 @@ struct net_iphdr_s
uint16_t ipchksum; /* 16-bit Header checksum */
uint16_t srcipaddr[2]; /* 32-bit Source IP address */
uint16_t destipaddr[2]; /* 32-bit Destination IP address */
+};
+#endif
+
+#ifdef CONFIG_NET_IPv6
+/* The IPv6 header */
-#endif /* CONFIG_NET_IPv6 */
+struct net_ipv6hdr_s
+{
+ uint8_t vtc; /* Bits 0-3: version, bits 4-7: traffic class (MS) */
+ uint8_t tcf; /* Bits 0-3: traffic class (LS), 4-bits: flow label (MS) */
+ uint16_t flow; /* 16-bit flow label (LS) */
+ uint8_t len[2]; /* 16-bit Payload length */
+ uint8_t proto; /* 8-bit Next header (same as IPv4 protocol field) */
+ uint8_t ttl; /* 8-bit Hop limit (like IPv4 TTL field) */
+ net_ip6addr_t srcipaddr; /* 128-bit Source address */
+ net_ip6addr_t destipaddr; /* 128-bit Destination address */
};
+#endif
/****************************************************************************
* Public Data
@@ -257,22 +256,22 @@ struct net_iphdr_s
* addr2 The second IP address.
*/
-#define net_ipv6addr_cmp(addr1, addr2) \
+#define net_ipv4addr_cmp(addr1, addr2) \
(addr1 == addr2)
-#define net_ipv6addr_hdrcmp(addr1, addr2) \
- net_ipv6addr_cmp(net_ip4addr_conv32(addr1), net_ip4addr_conv32(addr2))
+#define net_ipv4addr_hdrcmp(addr1, addr2) \
+ net_ipv4addr_cmp(net_ip4addr_conv32(addr1), net_ip4addr_conv32(addr2))
-#define net_ipv4addr_cmp(addr1, addr2) \
+#define net_ipv6addr_cmp(addr1, addr2) \
(memcmp(&addr1, &addr2, sizeof(net_ip6addr_t)) == 0)
-#define net_ipv4addr_hdrcmp(addr1, addr2) \
- net_ipv4addr_cmp(addr1, addr2)
+#define net_ipv6addr_hdrcmp(addr1, addr2) \
+ net_ipv6addr_cmp(addr1, addr2)
-#ifndef CONFIG_NET_IPv6
+#if defined(CONFIG_NET_IPv4)
+# define net_ipaddr_cmp(addr1, addr2) net_ipv4addr_cmp(addr1, addr2)
+# define net_ipaddr_hdrcmp(addr1, addr2) net_ipv4addr_hdrcmp(addr1, addr2)
+#elif defined(CONFIG_NET_IPv6)
# define net_ipaddr_cmp(addr1, addr2) net_ipv6addr_cmp(addr1, addr2)
# define net_ipaddr_hdrcmp(addr1, addr2) net_ipv6addr_hdrcmp(addr1, addr2)
-#else
-# define net_ipaddr_cmp(addr1, addr2) net_ipv4addr_cmp(addr1, addr2)
-# define net_ipaddr_hdrcmp(addr1, addr2) net_ipv4addr_hdrcmp(addr1, addr2
#endif
/* Compare two IP addresses under a netmask. The mask is used to mask
diff --git a/nuttx/include/nuttx/net/netdev.h b/nuttx/include/nuttx/net/netdev.h
index 56e2686e4..4a51f0e44 100644
--- a/nuttx/include/nuttx/net/netdev.h
+++ b/nuttx/include/nuttx/net/netdev.h
@@ -225,7 +225,7 @@ typedef int (*devif_poll_callback_t)(FAR struct net_driver_s *dev);
* These functions are used by a network device driver for interacting
* with uIP.
*
- * Process an incoming packet.
+ * Process an incoming IP packet.
*
* This function should be called when the device driver has received
* a packet from the network. The packet from the device driver must
@@ -243,7 +243,7 @@ typedef int (*devif_poll_callback_t)(FAR struct net_driver_s *dev);
* dev->d_len = devicedriver_poll();
* if (dev->d_len > 0)
* {
- * devif_input(dev);
+ * ipv4_input(dev);
* if (dev->d_len > 0)
* {
* devicedriver_send();
@@ -262,7 +262,7 @@ typedef int (*devif_poll_callback_t)(FAR struct net_driver_s *dev);
* if (BUF->type == HTONS(ETHTYPE_IP))
* {
* arp_ipin();
- * devif_input(dev);
+ * ipv4_input(dev);
* if (dev->d_len > 0)
* {
* arp_out();
@@ -280,7 +280,13 @@ typedef int (*devif_poll_callback_t)(FAR struct net_driver_s *dev);
*
****************************************************************************/
-int devif_input(FAR struct net_driver_s *dev);
+#ifdef CONFIG_NET_IPv4
+int ipv4_input(FAR struct net_driver_s *dev);
+#endif
+
+#ifdef CONFIG_NET_IPv6
+int ipv6_input(FAR struct net_driver_s *dev);
+#endif
/****************************************************************************
* Polling of connections