Purely cosmetic changes resulting from last review IPv6 UDP change

This commit is contained in:
Gregory Nutt
2015-02-16 15:23:02 -06:00
parent 3f5ff4b210
commit eb8f5e548f
4 changed files with 103 additions and 49 deletions
+6 -4
View File
@@ -977,12 +977,14 @@ static inline void recvfrom_udpsender(struct net_driver_s *dev, struct recvfrom_
infrom6->sin6_port = udp->srcport;
*fromlen = sizeof(struct sockaddr_in6);
memset(infrom6->sin6_addr.s6_addr, 0, sizeof(infrom6->sin6_addr.s6_addr) - sizeof(in_addr_t));
memset(infrom6->sin6_addr.s6_addr, 0,
sizeof(infrom6->sin6_addr.s6_addr) - sizeof(in_addr_t));
infrom6->sin6_addr.s6_addr[10] = 0xFF;
infrom6->sin6_addr.s6_addr[11] = 0xFF;
infrom6->sin6_addr.s6_addr[10] = 0xff;
infrom6->sin6_addr.s6_addr[11] = 0xff;
memcpy(&infrom6->sin6_addr.s6_addr[12], ipv4->srcipaddr, sizeof(in_addr_t));
memcpy(&infrom6->sin6_addr.s6_addr[12], ipv4->srcipaddr
sizeof(in_addr_t));
}
else
#endif
+6 -4
View File
@@ -138,12 +138,14 @@ static uint16_t udp_datahandler(FAR struct net_driver_s *dev, FAR struct udp_con
src_addr6.sin6_family = AF_INET6;
src_addr6.sin6_port = udp->srcport;
memset(src_addr6.sin6_addr.s6_addr, 0, sizeof(src_addr6.sin6_addr.s6_addr) - sizeof(in_addr_t));
memset(src_addr6.sin6_addr.s6_addr, 0,
sizeof(src_addr6.sin6_addr.s6_addr) - sizeof(in_addr_t));
src_addr6.sin6_addr.s6_addr[10] = 0xFF;
src_addr6.sin6_addr.s6_addr[11] = 0xFF;
src_addr6.sin6_addr.s6_addr[10] = 0xff;
src_addr6.sin6_addr.s6_addr[11] = 0xff;
memcpy(&src_addr6.sin6_addr.s6_addr[12], ipv4->srcipaddr, sizeof(in_addr_t));
memcpy(&src_addr6.sin6_addr.s6_addr[12], ipv4->srcipaddr,
sizeof(in_addr_t));
src_addr_size = sizeof(src_addr6);
src_addr = &src_addr6;
+24 -12
View File
@@ -63,18 +63,27 @@
* Pre-processor Definitions
****************************************************************************/
#define IPv4BUF ((struct ipv4_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev)])
#define IPv6BUF ((struct ipv6_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev)])
#define IPv4BUF \
((struct ipv4_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev)])
#define IPv6BUF \
((struct ipv6_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev)])
#define UDPIPv4BUF ((struct udp_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev) + IPv4_HDRLEN])
#define UDPIPv6BUF ((struct udp_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev) + IPv6_HDRLEN])
#define UDPIPv4BUF \
((struct udp_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev) + IPv4_HDRLEN])
#define UDPIPv6BUF \
((struct udp_hdr_s *)&dev->d_buf[NET_LL_HDRLEN(dev) + IPv6_HDRLEN])
#define IN6_IS_ADDR_IPV4(a) ((a)->s6_addr32[0] == 0 && (a)->s6_addr32[1] == 0 && \
(a)->s6_addr16[4] == 0 && (a)->s6_addr16[5] == 0xFFFF)
#define IN6_GET_ADDR_IPV4(a) (((in_addr_t)(a)->s6_addr[12]) | ((in_addr_t)(a)->s6_addr[13] << 8) | \
((in_addr_t)(a)->s6_addr[14] << 16) | ((in_addr_t)(a)->s6_addr[15] << 24))
#define IN6_IS_ADDR_IPV4(a) \
((a)->s6_addr32[0] == 0 && \
(a)->s6_addr32[1] == 0 && \
(a)->s6_addr16[4] == 0 && \
(a)->s6_addr16[5] == 0xffff)
#define IN6_GET_ADDR_IPV4(a) \
(((in_addr_t)(a)->s6_addr[12]) | \
((in_addr_t)(a)->s6_addr[13] << 8) | \
((in_addr_t)(a)->s6_addr[14] << 16) | \
((in_addr_t)(a)->s6_addr[15] << 24))
/****************************************************************************
* Public Variables
@@ -123,7 +132,8 @@ void udp_send(FAR struct net_driver_s *dev, FAR struct udp_conn_s *conn)
#ifdef CONFIG_NET_IPv4
#ifdef CONFIG_NET_IPv6
if (conn->domain == PF_INET ||
(conn->domain == PF_INET6 && IN6_IS_ADDR_IPV4((FAR struct in6_addr*)conn->u.ipv6.raddr)))
(conn->domain == PF_INET6 &&
IN6_IS_ADDR_IPV4((FAR struct in6_addr*)conn->u.ipv6.raddr)))
#endif
{
/* Get pointers to the IPv4 header and the offset TCP header */
@@ -148,7 +158,8 @@ void udp_send(FAR struct net_driver_s *dev, FAR struct udp_conn_s *conn)
net_ipv4addr_hdrcopy(ipv4->srcipaddr, &dev->d_ipaddr);
#ifdef CONFIG_NET_IPv6
if (conn->domain == PF_INET6 && IN6_IS_ADDR_IPV4((FAR struct in6_addr*)conn->u.ipv6.raddr))
if (conn->domain == PF_INET6 &&
IN6_IS_ADDR_IPV4((FAR struct in6_addr*)conn->u.ipv6.raddr))
{
in_addr_t raddr = IN6_GET_ADDR_IPV4((FAR struct in6_addr*)conn->u.ipv6.raddr);
net_ipv4addr_hdrcopy(ipv4->destipaddr, &raddr);
@@ -241,7 +252,8 @@ void udp_send(FAR struct net_driver_s *dev, FAR struct udp_conn_s *conn)
#ifdef CONFIG_NET_IPv4
#ifdef CONFIG_NET_IPv6
if (conn->domain == PF_INET ||
(conn->domain == PF_INET6 && IN6_IS_ADDR_IPV4((FAR struct in6_addr*)conn->u.ipv6.raddr)))
(conn->domain == PF_INET6 &&
IN6_IS_ADDR_IPV4((FAR struct in6_addr*)conn->u.ipv6.raddr)))
#endif
{
udp->udpchksum = ~udp_ipv4_chksum(dev);