diff options
author | YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> | 2012-09-10 14:16:49 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-09-13 16:34:03 -0400 |
commit | 417962a02ba283c8532d61474dc08e0a966cd269 (patch) | |
tree | 0738dbd58c992955b64524bf467d495707bd88b4 /net/ipv6/addrlabel.c | |
parent | 8289bab1daf9768c20114051a99c1bd5f48d4420 (diff) |
ipv6: Add labels for site-local and 6bone testing addresses (RFC6724)
Added labels for site-local addresses (fec0::/10) and 6bone testing
addresses (3ffe::/16) in order to depreference them.
Note that the RFC introduced new rows for Teredo, ULA and 6to4 addresses
in the default policy table. Some of them have different labels from ours.
For backward compatibility, we do not change the "default" labels.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/addrlabel.c')
-rw-r--r-- | net/ipv6/addrlabel.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/net/ipv6/addrlabel.c b/net/ipv6/addrlabel.c index 0b0171570d17..4be23da32b89 100644 --- a/net/ipv6/addrlabel.c +++ b/net/ipv6/addrlabel.c | |||
@@ -57,7 +57,7 @@ struct net *ip6addrlbl_net(const struct ip6addrlbl_entry *lbl) | |||
57 | } | 57 | } |
58 | 58 | ||
59 | /* | 59 | /* |
60 | * Default policy table (RFC3484 + extensions) | 60 | * Default policy table (RFC6724 + extensions) |
61 | * | 61 | * |
62 | * prefix addr_type label | 62 | * prefix addr_type label |
63 | * ------------------------------------------------------------------------- | 63 | * ------------------------------------------------------------------------- |
@@ -69,8 +69,12 @@ struct net *ip6addrlbl_net(const struct ip6addrlbl_entry *lbl) | |||
69 | * fc00::/7 N/A 5 ULA (RFC 4193) | 69 | * fc00::/7 N/A 5 ULA (RFC 4193) |
70 | * 2001::/32 N/A 6 Teredo (RFC 4380) | 70 | * 2001::/32 N/A 6 Teredo (RFC 4380) |
71 | * 2001:10::/28 N/A 7 ORCHID (RFC 4843) | 71 | * 2001:10::/28 N/A 7 ORCHID (RFC 4843) |
72 | * fec0::/10 N/A 11 Site-local | ||
73 | * (deprecated by RFC3879) | ||
74 | * 3ffe::/16 N/A 12 6bone | ||
72 | * | 75 | * |
73 | * Note: 0xffffffff is used if we do not have any policies. | 76 | * Note: 0xffffffff is used if we do not have any policies. |
77 | * Note: Labels for ULA and 6to4 are different from labels listed in RFC6724. | ||
74 | */ | 78 | */ |
75 | 79 | ||
76 | #define IPV6_ADDR_LABEL_DEFAULT 0xffffffffUL | 80 | #define IPV6_ADDR_LABEL_DEFAULT 0xffffffffUL |
@@ -88,10 +92,18 @@ static const __net_initdata struct ip6addrlbl_init_table | |||
88 | .prefix = &(struct in6_addr){{{ 0xfc }}}, | 92 | .prefix = &(struct in6_addr){{{ 0xfc }}}, |
89 | .prefixlen = 7, | 93 | .prefixlen = 7, |
90 | .label = 5, | 94 | .label = 5, |
95 | },{ /* fec0::/10 */ | ||
96 | .prefix = &(struct in6_addr){{{ 0xfe, 0xc0 }}}, | ||
97 | .prefixlen = 10, | ||
98 | .label = 11, | ||
91 | },{ /* 2002::/16 */ | 99 | },{ /* 2002::/16 */ |
92 | .prefix = &(struct in6_addr){{{ 0x20, 0x02 }}}, | 100 | .prefix = &(struct in6_addr){{{ 0x20, 0x02 }}}, |
93 | .prefixlen = 16, | 101 | .prefixlen = 16, |
94 | .label = 2, | 102 | .label = 2, |
103 | },{ /* 3ffe::/16 */ | ||
104 | .prefix = &(struct in6_addr){{{ 0x3f, 0xfe }}}, | ||
105 | .prefixlen = 16, | ||
106 | .label = 12, | ||
95 | },{ /* 2001::/32 */ | 107 | },{ /* 2001::/32 */ |
96 | .prefix = &(struct in6_addr){{{ 0x20, 0x01 }}}, | 108 | .prefix = &(struct in6_addr){{{ 0x20, 0x01 }}}, |
97 | .prefixlen = 32, | 109 | .prefixlen = 32, |