diff options
author | Ulrich Weber <uweber@astaro.com> | 2010-02-25 18:28:58 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-26 06:59:07 -0500 |
commit | 45bb00609022ecf1d97e083666c68c74d237b799 (patch) | |
tree | 9d8d632a9c2671ab9487ed1d73b8dc45de48b90b /net/ipv6 | |
parent | 1d9cfc4e354cd619d92bb938657dec3c533e6929 (diff) |
ipv6: Remove IPV6_ADDR_RESERVED
RFC 4291 section 2.4 states that all uncategorized addresses
should be considered as Global Unicast.
This will remove IPV6_ADDR_RESERVED completely
and return IPV6_ADDR_UNICAST in ipv6_addr_type() instead.
Signed-off-by: Ulrich Weber <uweber@astaro.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/addrconf.c | 3 | ||||
-rw-r--r-- | net/ipv6/addrconf_core.c | 2 | ||||
-rw-r--r-- | net/ipv6/route.c | 2 |
3 files changed, 3 insertions, 4 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 1b327f15e7e7..88fd8c5877ee 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -992,8 +992,7 @@ struct ipv6_saddr_dst { | |||
992 | 992 | ||
993 | static inline int ipv6_saddr_preferred(int type) | 993 | static inline int ipv6_saddr_preferred(int type) |
994 | { | 994 | { |
995 | if (type & (IPV6_ADDR_MAPPED|IPV6_ADDR_COMPATv4| | 995 | if (type & (IPV6_ADDR_MAPPED|IPV6_ADDR_COMPATv4|IPV6_ADDR_LOOPBACK)) |
996 | IPV6_ADDR_LOOPBACK|IPV6_ADDR_RESERVED)) | ||
997 | return 1; | 996 | return 1; |
998 | return 0; | 997 | return 0; |
999 | } | 998 | } |
diff --git a/net/ipv6/addrconf_core.c b/net/ipv6/addrconf_core.c index 3f82e9542eda..6b03826552e1 100644 --- a/net/ipv6/addrconf_core.c +++ b/net/ipv6/addrconf_core.c | |||
@@ -72,7 +72,7 @@ int __ipv6_addr_type(const struct in6_addr *addr) | |||
72 | IPV6_ADDR_SCOPE_TYPE(IPV6_ADDR_SCOPE_GLOBAL)); /* addr-select 3.3 */ | 72 | IPV6_ADDR_SCOPE_TYPE(IPV6_ADDR_SCOPE_GLOBAL)); /* addr-select 3.3 */ |
73 | } | 73 | } |
74 | 74 | ||
75 | return (IPV6_ADDR_RESERVED | | 75 | return (IPV6_ADDR_UNICAST | |
76 | IPV6_ADDR_SCOPE_TYPE(IPV6_ADDR_SCOPE_GLOBAL)); /* addr-select 3.4 */ | 76 | IPV6_ADDR_SCOPE_TYPE(IPV6_ADDR_SCOPE_GLOBAL)); /* addr-select 3.4 */ |
77 | } | 77 | } |
78 | EXPORT_SYMBOL(__ipv6_addr_type); | 78 | EXPORT_SYMBOL(__ipv6_addr_type); |
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 88c0a5c49ae8..b08879e97f22 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -1873,7 +1873,7 @@ static int ip6_pkt_drop(struct sk_buff *skb, u8 code, int ipstats_mib_noroutes) | |||
1873 | switch (ipstats_mib_noroutes) { | 1873 | switch (ipstats_mib_noroutes) { |
1874 | case IPSTATS_MIB_INNOROUTES: | 1874 | case IPSTATS_MIB_INNOROUTES: |
1875 | type = ipv6_addr_type(&ipv6_hdr(skb)->daddr); | 1875 | type = ipv6_addr_type(&ipv6_hdr(skb)->daddr); |
1876 | if (type == IPV6_ADDR_ANY || type == IPV6_ADDR_RESERVED) { | 1876 | if (type == IPV6_ADDR_ANY) { |
1877 | IP6_INC_STATS(dev_net(dst->dev), ip6_dst_idev(dst), | 1877 | IP6_INC_STATS(dev_net(dst->dev), ip6_dst_idev(dst), |
1878 | IPSTATS_MIB_INADDRERRORS); | 1878 | IPSTATS_MIB_INADDRERRORS); |
1879 | break; | 1879 | break; |