diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2015-01-15 08:03:56 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2015-01-15 08:03:56 -0600 |
commit | d01102573821393af9572e96cb4edd0c8f01af84 (patch) | |
tree | b46c182ec342e351f0dc17534dd101ac93684b50 /nuttx/include | |
parent | 475bd20ef9ae32104f844eb015ad685e2b8ccd99 (diff) | |
download | px4-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.h | 55 | ||||
-rw-r--r-- | nuttx/include/nuttx/net/netdev.h | 14 |
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 |