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>
This commit is contained in:
YOSHIFUJI Hideaki / 吉藤英明 2012-09-10 18:16:49 +00:00 committed by David S. Miller
parent 8289bab1da
commit 417962a02b
1 changed files with 13 additions and 1 deletions

View File

@ -57,7 +57,7 @@ struct net *ip6addrlbl_net(const struct ip6addrlbl_entry *lbl)
} }
/* /*
* Default policy table (RFC3484 + extensions) * Default policy table (RFC6724 + extensions)
* *
* prefix addr_type label * prefix addr_type label
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
@ -69,8 +69,12 @@ struct net *ip6addrlbl_net(const struct ip6addrlbl_entry *lbl)
* fc00::/7 N/A 5 ULA (RFC 4193) * fc00::/7 N/A 5 ULA (RFC 4193)
* 2001::/32 N/A 6 Teredo (RFC 4380) * 2001::/32 N/A 6 Teredo (RFC 4380)
* 2001:10::/28 N/A 7 ORCHID (RFC 4843) * 2001:10::/28 N/A 7 ORCHID (RFC 4843)
* fec0::/10 N/A 11 Site-local
* (deprecated by RFC3879)
* 3ffe::/16 N/A 12 6bone
* *
* Note: 0xffffffff is used if we do not have any policies. * Note: 0xffffffff is used if we do not have any policies.
* Note: Labels for ULA and 6to4 are different from labels listed in RFC6724.
*/ */
#define IPV6_ADDR_LABEL_DEFAULT 0xffffffffUL #define IPV6_ADDR_LABEL_DEFAULT 0xffffffffUL
@ -88,10 +92,18 @@ static const __net_initdata struct ip6addrlbl_init_table
.prefix = &(struct in6_addr){{{ 0xfc }}}, .prefix = &(struct in6_addr){{{ 0xfc }}},
.prefixlen = 7, .prefixlen = 7,
.label = 5, .label = 5,
},{ /* fec0::/10 */
.prefix = &(struct in6_addr){{{ 0xfe, 0xc0 }}},
.prefixlen = 10,
.label = 11,
},{ /* 2002::/16 */ },{ /* 2002::/16 */
.prefix = &(struct in6_addr){{{ 0x20, 0x02 }}}, .prefix = &(struct in6_addr){{{ 0x20, 0x02 }}},
.prefixlen = 16, .prefixlen = 16,
.label = 2, .label = 2,
},{ /* 3ffe::/16 */
.prefix = &(struct in6_addr){{{ 0x3f, 0xfe }}},
.prefixlen = 16,
.label = 12,
},{ /* 2001::/32 */ },{ /* 2001::/32 */
.prefix = &(struct in6_addr){{{ 0x20, 0x01 }}}, .prefix = &(struct in6_addr){{{ 0x20, 0x01 }}},
.prefixlen = 32, .prefixlen = 32,