aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Benc <jbenc@redhat.com>2015-03-29 10:59:24 -0400
committerDavid S. Miller <davem@davemloft.net>2015-03-31 13:58:35 -0400
commit15e318bdc6dfb82914c82fb7ad00badaa8387d8e (patch)
treeb032216e906107641f907389ce3d5f68a0139ab1
parent8f55db48608b109ad8c7ff4b946ad39b3189a540 (diff)
xfrm: simplify xfrm_address_t use
In many places, the a6 field is typecasted to struct in6_addr. As the fields are in union anyway, just add in6_addr type to the union and get rid of the typecasting. Modifying the uapi header is okay, the union has still the same size. Signed-off-by: Jiri Benc <jbenc@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/xfrm.h6
-rw-r--r--include/uapi/linux/xfrm.h2
-rw-r--r--net/ipv6/xfrm6_mode_beet.c4
-rw-r--r--net/ipv6/xfrm6_policy.c4
-rw-r--r--net/key/af_key.c2
-rw-r--r--net/xfrm/xfrm_state.c8
6 files changed, 13 insertions, 13 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index d0ac7d7be8a7..461f83539493 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1025,7 +1025,7 @@ xfrm_addr_any(const xfrm_address_t *addr, unsigned short family)
1025 case AF_INET: 1025 case AF_INET:
1026 return addr->a4 == 0; 1026 return addr->a4 == 0;
1027 case AF_INET6: 1027 case AF_INET6:
1028 return ipv6_addr_any((struct in6_addr *)&addr->a6); 1028 return ipv6_addr_any(&addr->in6);
1029 } 1029 }
1030 return 0; 1030 return 0;
1031} 1031}
@@ -1238,8 +1238,8 @@ void xfrm_flowi_addr_get(const struct flowi *fl,
1238 memcpy(&daddr->a4, &fl->u.ip4.daddr, sizeof(daddr->a4)); 1238 memcpy(&daddr->a4, &fl->u.ip4.daddr, sizeof(daddr->a4));
1239 break; 1239 break;
1240 case AF_INET6: 1240 case AF_INET6:
1241 *(struct in6_addr *)saddr->a6 = fl->u.ip6.saddr; 1241 saddr->in6 = fl->u.ip6.saddr;
1242 *(struct in6_addr *)daddr->a6 = fl->u.ip6.daddr; 1242 daddr->in6 = fl->u.ip6.daddr;
1243 break; 1243 break;
1244 } 1244 }
1245} 1245}
diff --git a/include/uapi/linux/xfrm.h b/include/uapi/linux/xfrm.h
index 02d5125a5ee8..2cd9e608d0d1 100644
--- a/include/uapi/linux/xfrm.h
+++ b/include/uapi/linux/xfrm.h
@@ -1,6 +1,7 @@
1#ifndef _LINUX_XFRM_H 1#ifndef _LINUX_XFRM_H
2#define _LINUX_XFRM_H 2#define _LINUX_XFRM_H
3 3
4#include <linux/in6.h>
4#include <linux/types.h> 5#include <linux/types.h>
5 6
6/* All of the structures in this file may not change size as they are 7/* All of the structures in this file may not change size as they are
@@ -13,6 +14,7 @@
13typedef union { 14typedef union {
14 __be32 a4; 15 __be32 a4;
15 __be32 a6[4]; 16 __be32 a6[4];
17 struct in6_addr in6;
16} xfrm_address_t; 18} xfrm_address_t;
17 19
18/* Ident of a specific xfrm_state. It is used on input to lookup 20/* Ident of a specific xfrm_state. It is used on input to lookup
diff --git a/net/ipv6/xfrm6_mode_beet.c b/net/ipv6/xfrm6_mode_beet.c
index 9949a356d62c..1e205c3253ac 100644
--- a/net/ipv6/xfrm6_mode_beet.c
+++ b/net/ipv6/xfrm6_mode_beet.c
@@ -95,8 +95,8 @@ static int xfrm6_beet_input(struct xfrm_state *x, struct sk_buff *skb)
95 95
96 ip6h = ipv6_hdr(skb); 96 ip6h = ipv6_hdr(skb);
97 ip6h->payload_len = htons(skb->len - size); 97 ip6h->payload_len = htons(skb->len - size);
98 ip6h->daddr = *(struct in6_addr *)&x->sel.daddr.a6; 98 ip6h->daddr = x->sel.daddr.in6;
99 ip6h->saddr = *(struct in6_addr *)&x->sel.saddr.a6; 99 ip6h->saddr = x->sel.saddr.in6;
100 err = 0; 100 err = 0;
101out: 101out:
102 return err; 102 return err;
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
index 91d934c22a2a..f337a908a76a 100644
--- a/net/ipv6/xfrm6_policy.c
+++ b/net/ipv6/xfrm6_policy.c
@@ -61,9 +61,7 @@ static int xfrm6_get_saddr(struct net *net,
61 return -EHOSTUNREACH; 61 return -EHOSTUNREACH;
62 62
63 dev = ip6_dst_idev(dst)->dev; 63 dev = ip6_dst_idev(dst)->dev;
64 ipv6_dev_get_saddr(dev_net(dev), dev, 64 ipv6_dev_get_saddr(dev_net(dev), dev, &daddr->in6, 0, &saddr->in6);
65 (struct in6_addr *)&daddr->a6, 0,
66 (struct in6_addr *)&saddr->a6);
67 dst_release(dst); 65 dst_release(dst);
68 return 0; 66 return 0;
69} 67}
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 9255fd9d94bc..f0d52d721b3a 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -709,7 +709,7 @@ static unsigned int pfkey_sockaddr_fill(const xfrm_address_t *xaddr, __be16 port
709 sin6->sin6_family = AF_INET6; 709 sin6->sin6_family = AF_INET6;
710 sin6->sin6_port = port; 710 sin6->sin6_port = port;
711 sin6->sin6_flowinfo = 0; 711 sin6->sin6_flowinfo = 0;
712 sin6->sin6_addr = *(struct in6_addr *)xaddr->a6; 712 sin6->sin6_addr = xaddr->in6;
713 sin6->sin6_scope_id = 0; 713 sin6->sin6_scope_id = 0;
714 return 128; 714 return 128;
715 } 715 }
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index de971b6d38c5..f5e39e35d73a 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -1043,12 +1043,12 @@ static struct xfrm_state *__find_acq_core(struct net *net,
1043 break; 1043 break;
1044 1044
1045 case AF_INET6: 1045 case AF_INET6:
1046 *(struct in6_addr *)x->sel.daddr.a6 = *(struct in6_addr *)daddr; 1046 x->sel.daddr.in6 = daddr->in6;
1047 *(struct in6_addr *)x->sel.saddr.a6 = *(struct in6_addr *)saddr; 1047 x->sel.saddr.in6 = saddr->in6;
1048 x->sel.prefixlen_d = 128; 1048 x->sel.prefixlen_d = 128;
1049 x->sel.prefixlen_s = 128; 1049 x->sel.prefixlen_s = 128;
1050 *(struct in6_addr *)x->props.saddr.a6 = *(struct in6_addr *)saddr; 1050 x->props.saddr.in6 = saddr->in6;
1051 *(struct in6_addr *)x->id.daddr.a6 = *(struct in6_addr *)daddr; 1051 x->id.daddr.in6 = daddr->in6;
1052 break; 1052 break;
1053 } 1053 }
1054 1054