Bug #1952 » 0001-gtp-use-IPv6-address-64-prefix-for-UE-MS.patch
drivers/net/gtp.c | ||
---|---|---|
196 | 196 | |
197 | 197 |
head = >p->addr_hash[ipv6_hashfn(ms_addr) % gtp->hash_size]; |
198 | 198 | |
199 |
/* 3GPP TS 29.060: PDN Connection: the association between a MS |
|
200 |
* represented by [...] one IPv6 *prefix* and a PDN represented by an |
|
201 |
* APN. |
|
202 |
* |
|
203 |
* Then, 3GPP TS 29.061, Section 11.2.1.3 says: The size of the prefix |
|
204 |
* shall be according to the maximum prefix length for a global IPv6 |
|
205 |
* address as specified in the IPv6 Addressing Architecture, see RFC 4291. |
|
206 |
* |
|
207 |
* Finally, RFC 4291 section 2.5.4 states: All Global Unicast addresses |
|
208 |
* other than those that start with binary 000 have a 64-bit interface |
|
209 |
* ID field (i.e., n + m = 64). |
|
210 |
*/ |
|
199 | 211 |
hlist_for_each_entry_rcu(pdp, head, hlist_addr) { |
200 | 212 |
if (pdp->af == AF_INET6 && |
201 |
memcmp(&pdp->ms.addr6, ms_addr, sizeof(struct in6_addr)) == 0) |
|
213 |
pdp->ms.addr6.s6_addr32[0] == ms_addr->s6_addr32[0] && |
|
214 |
pdp->ms.addr6.s6_addr32[1] == ms_addr->s6_addr32[1]) |
|
202 | 215 |
return pdp; |
203 | 216 |
} |
204 | 217 |