summaryrefslogtreecommitdiff
path: root/nuttx/include/nuttx/net/ip.h
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/include/nuttx/net/ip.h')
-rw-r--r--nuttx/include/nuttx/net/ip.h55
1 files changed, 27 insertions, 28 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