diff options
-rw-r--r-- | include/net/inetpeer.h | 16 | ||||
-rw-r--r-- | net/ipv4/inetpeer.c | 6 | ||||
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 2 | ||||
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 2 |
4 files changed, 15 insertions, 11 deletions
diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h index ead2cb2de18c..60e2cd8d1319 100644 --- a/include/net/inetpeer.h +++ b/include/net/inetpeer.h | |||
@@ -15,12 +15,16 @@ | |||
15 | #include <net/ipv6.h> | 15 | #include <net/ipv6.h> |
16 | #include <asm/atomic.h> | 16 | #include <asm/atomic.h> |
17 | 17 | ||
18 | struct inetpeer_addr { | 18 | struct inetpeer_addr_base { |
19 | union { | 19 | union { |
20 | __be32 a4; | 20 | __be32 a4; |
21 | __be32 a6[4]; | 21 | __be32 a6[4]; |
22 | }; | 22 | }; |
23 | __u16 family; | 23 | }; |
24 | |||
25 | struct inetpeer_addr { | ||
26 | struct inetpeer_addr_base addr; | ||
27 | __u16 family; | ||
24 | }; | 28 | }; |
25 | 29 | ||
26 | struct inet_peer { | 30 | struct inet_peer { |
@@ -67,7 +71,7 @@ static inline struct inet_peer *inet_getpeer_v4(__be32 v4daddr, int create) | |||
67 | { | 71 | { |
68 | struct inetpeer_addr daddr; | 72 | struct inetpeer_addr daddr; |
69 | 73 | ||
70 | daddr.a4 = v4daddr; | 74 | daddr.addr.a4 = v4daddr; |
71 | daddr.family = AF_INET; | 75 | daddr.family = AF_INET; |
72 | return inet_getpeer(&daddr, create); | 76 | return inet_getpeer(&daddr, create); |
73 | } | 77 | } |
@@ -76,7 +80,7 @@ static inline struct inet_peer *inet_getpeer_v6(struct in6_addr *v6daddr, int cr | |||
76 | { | 80 | { |
77 | struct inetpeer_addr daddr; | 81 | struct inetpeer_addr daddr; |
78 | 82 | ||
79 | ipv6_addr_copy((struct in6_addr *)daddr.a6, v6daddr); | 83 | ipv6_addr_copy((struct in6_addr *)daddr.addr.a6, v6daddr); |
80 | daddr.family = AF_INET6; | 84 | daddr.family = AF_INET6; |
81 | return inet_getpeer(&daddr, create); | 85 | return inet_getpeer(&daddr, create); |
82 | } | 86 | } |
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index 709fbb4132d7..4346c38763ae 100644 --- a/net/ipv4/inetpeer.c +++ b/net/ipv4/inetpeer.c | |||
@@ -167,9 +167,9 @@ static int addr_compare(const struct inetpeer_addr *a, | |||
167 | int i, n = (a->family == AF_INET ? 1 : 4); | 167 | int i, n = (a->family == AF_INET ? 1 : 4); |
168 | 168 | ||
169 | for (i = 0; i < n; i++) { | 169 | for (i = 0; i < n; i++) { |
170 | if (a->a6[i] == b->a6[i]) | 170 | if (a->addr.a6[i] == b->addr.a6[i]) |
171 | continue; | 171 | continue; |
172 | if (a->a6[i] < b->a6[i]) | 172 | if (a->addr.a6[i] < b->addr.a6[i]) |
173 | return -1; | 173 | return -1; |
174 | return 1; | 174 | return 1; |
175 | } | 175 | } |
@@ -510,7 +510,7 @@ struct inet_peer *inet_getpeer(struct inetpeer_addr *daddr, int create) | |||
510 | p->daddr = *daddr; | 510 | p->daddr = *daddr; |
511 | atomic_set(&p->refcnt, 1); | 511 | atomic_set(&p->refcnt, 1); |
512 | atomic_set(&p->rid, 0); | 512 | atomic_set(&p->rid, 0); |
513 | atomic_set(&p->ip_id_count, secure_ip_id(daddr->a4)); | 513 | atomic_set(&p->ip_id_count, secure_ip_id(daddr->addr.a4)); |
514 | p->tcp_ts_stamp = 0; | 514 | p->tcp_ts_stamp = 0; |
515 | p->metrics[RTAX_LOCK-1] = INETPEER_METRICS_NEW; | 515 | p->metrics[RTAX_LOCK-1] = INETPEER_METRICS_NEW; |
516 | p->rate_tokens = 0; | 516 | p->rate_tokens = 0; |
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 02f583b3744a..e2b9be27f226 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -1341,7 +1341,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) | |||
1341 | tcp_death_row.sysctl_tw_recycle && | 1341 | tcp_death_row.sysctl_tw_recycle && |
1342 | (dst = inet_csk_route_req(sk, req)) != NULL && | 1342 | (dst = inet_csk_route_req(sk, req)) != NULL && |
1343 | (peer = rt_get_peer((struct rtable *)dst)) != NULL && | 1343 | (peer = rt_get_peer((struct rtable *)dst)) != NULL && |
1344 | peer->daddr.a4 == saddr) { | 1344 | peer->daddr.addr.a4 == saddr) { |
1345 | inet_peer_refcheck(peer); | 1345 | inet_peer_refcheck(peer); |
1346 | if ((u32)get_seconds() - peer->tcp_ts_stamp < TCP_PAWS_MSL && | 1346 | if ((u32)get_seconds() - peer->tcp_ts_stamp < TCP_PAWS_MSL && |
1347 | (s32)(peer->tcp_ts - req->ts_recent) > | 1347 | (s32)(peer->tcp_ts - req->ts_recent) > |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 20aa95e37359..d6954e318324 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
@@ -1323,7 +1323,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb) | |||
1323 | tcp_death_row.sysctl_tw_recycle && | 1323 | tcp_death_row.sysctl_tw_recycle && |
1324 | (dst = inet6_csk_route_req(sk, req)) != NULL && | 1324 | (dst = inet6_csk_route_req(sk, req)) != NULL && |
1325 | (peer = rt6_get_peer((struct rt6_info *)dst)) != NULL && | 1325 | (peer = rt6_get_peer((struct rt6_info *)dst)) != NULL && |
1326 | ipv6_addr_equal((struct in6_addr *)peer->daddr.a6, | 1326 | ipv6_addr_equal((struct in6_addr *)peer->daddr.addr.a6, |
1327 | &treq->rmt_addr)) { | 1327 | &treq->rmt_addr)) { |
1328 | inet_peer_refcheck(peer); | 1328 | inet_peer_refcheck(peer); |
1329 | if ((u32)get_seconds() - peer->tcp_ts_stamp < TCP_PAWS_MSL && | 1329 | if ((u32)get_seconds() - peer->tcp_ts_stamp < TCP_PAWS_MSL && |