]>
Commit | Line | Data |
---|---|---|
2f6ced96 | 1 | diff -urN linux-2.2.17.org/include/linux/in6.h linux-2.2.17/include/linux/in6.h |
a32fbeb3 AM |
2 | --- linux-2.2.17.org/include/linux/in6.h Wed Dec 6 18:06:51 2000 |
3 | +++ linux-2.2.17/include/linux/in6.h Wed Dec 6 18:09:01 2000 | |
de514888 JR |
4 | @@ -56,6 +56,7 @@ |
5 | __u16 sin6_port; /* Transport layer port # */ | |
6 | __u32 sin6_flowinfo; /* IPv6 flow information */ | |
7 | struct in6_addr sin6_addr; /* IPv6 address */ | |
8 | + __u32 sin6_scope_id; /* scope id (new in RFC2553) */ | |
9 | }; | |
8d5fcfed JR |
10 | |
11 | ||
2f6ced96 | 12 | diff -urN linux-2.2.17.org/include/net/ipv6.h linux-2.2.17/include/net/ipv6.h |
a32fbeb3 AM |
13 | --- linux-2.2.17.org/include/net/ipv6.h Wed Dec 6 18:06:51 2000 |
14 | +++ linux-2.2.17/include/net/ipv6.h Wed Dec 6 18:09:01 2000 | |
8d5fcfed JR |
15 | @@ -20,6 +20,8 @@ |
16 | #include <net/ndisc.h> | |
17 | #include <net/flow.h> | |
18 | ||
19 | +#define SIN6_LEN_RFC2133 24 | |
20 | + | |
21 | /* | |
22 | * NextHeader field of IPv6 header | |
23 | */ | |
2f6ced96 | 24 | diff -urN linux-2.2.17.org/net/ipv6/af_inet6.c linux-2.2.17/net/ipv6/af_inet6.c |
a32fbeb3 AM |
25 | --- linux-2.2.17.org/net/ipv6/af_inet6.c Wed Dec 6 18:06:51 2000 |
26 | +++ linux-2.2.17/net/ipv6/af_inet6.c Wed Dec 6 18:09:01 2000 | |
8d5fcfed JR |
27 | @@ -199,7 +199,7 @@ |
28 | ||
29 | /* Check these errors (active socket, bad address length, double bind). */ | |
30 | if ((sk->state != TCP_CLOSE) || | |
31 | - (addr_len < sizeof(struct sockaddr_in6)) || | |
32 | + (addr_len < SIN6_LEN_RFC2133) || | |
33 | (sk->num != 0)) | |
34 | return -EINVAL; | |
35 | ||
2f6ced96 AM |
36 | @@ -334,6 +334,7 @@ |
37 | ||
38 | sin->sin6_port = sk->sport; | |
39 | } | |
0944c93d | 40 | + sin->sin6_scope_id = 0; |
2f6ced96 AM |
41 | *uaddr_len = sizeof(*sin); |
42 | return(0); | |
43 | } | |
44 | diff -urN linux-2.2.17.org/net/ipv6/datagram.c linux-2.2.17/net/ipv6/datagram.c | |
a32fbeb3 AM |
45 | --- linux-2.2.17.org/net/ipv6/datagram.c Wed Dec 6 18:06:51 2000 |
46 | +++ linux-2.2.17/net/ipv6/datagram.c Wed Dec 6 18:10:00 2000 | |
47 | @@ -133,9 +133,11 @@ | |
48 | if (sin) { | |
49 | sin->sin6_family = AF_INET6; | |
50 | sin->sin6_flowinfo = 0; | |
51 | + sin->sin6_scope_id = 0; | |
52 | sin->sin6_port = serr->port; | |
53 | if (serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6) { | |
54 | memcpy(&sin->sin6_addr, skb->nh.raw + serr->addr_offset, 16); | |
55 | + sin->sin6_scope_id = 0; | |
56 | if (sk->net_pinfo.af_inet6.sndflow) | |
57 | sin->sin6_flowinfo = *(u32*)(skb->nh.raw + serr->addr_offset - 24) & IPV6_FLOWINFO_MASK; | |
58 | } else | |
59 | @@ -150,8 +152,10 @@ | |
0944c93d AM |
60 | if (serr->ee.ee_origin != SO_EE_ORIGIN_LOCAL) { |
61 | sin->sin6_family = AF_INET6; | |
62 | sin->sin6_flowinfo = 0; | |
63 | + sin->sin6_scope_id = 0; | |
64 | if (serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6) { | |
65 | memcpy(&sin->sin6_addr, &skb->nh.ipv6h->saddr, 16); | |
2f6ced96 | 66 | + sin->sin6_scope_id = 0; |
0944c93d | 67 | if (sk->net_pinfo.af_inet6.rxopt.all) |
2f6ced96 AM |
68 | datagram_recv_ctl(sk, msg, skb); |
69 | } else { | |
70 | diff -urN linux-2.2.17.org/net/ipv6/raw.c linux-2.2.17/net/ipv6/raw.c | |
a32fbeb3 AM |
71 | --- linux-2.2.17.org/net/ipv6/raw.c Wed Dec 6 18:06:51 2000 |
72 | +++ linux-2.2.17/net/ipv6/raw.c Wed Dec 6 18:09:01 2000 | |
8d5fcfed JR |
73 | @@ -117,7 +117,7 @@ |
74 | int addr_type; | |
75 | ||
76 | /* Check these errors. */ | |
77 | - if (sk->state != TCP_CLOSE || (addr_len < sizeof(struct sockaddr_in6))) | |
78 | + if (sk->state != TCP_CLOSE || (addr_len < SIN6_LEN_RFC2133)) | |
79 | return -EINVAL; | |
80 | ||
81 | addr_type = ipv6_addr_type(&addr->sin6_addr); | |
0944c93d AM |
82 | @@ -252,6 +252,7 @@ |
83 | memcpy(&sin6->sin6_addr, &skb->nh.ipv6h->saddr, | |
84 | sizeof(struct in6_addr)); | |
85 | sin6->sin6_flowinfo = 0; | |
86 | + sin6->sin6_scope_id = 0; | |
87 | } | |
88 | ||
89 | if (sk->net_pinfo.af_inet6.rxopt.all) | |
90 | @@ -360,7 +361,7 @@ | |
8d5fcfed JR |
91 | fl.fl6_flowlabel = 0; |
92 | ||
93 | if (sin6) { | |
94 | - if (addr_len < sizeof(struct sockaddr_in6)) | |
95 | + if (addr_len < SIN6_LEN_RFC2133) | |
96 | return(-EINVAL); | |
97 | ||
98 | if (sin6->sin6_family && sin6->sin6_family != AF_INET6) | |
2f6ced96 | 99 | diff -urN linux-2.2.17.org/net/ipv6/tcp_ipv6.c linux-2.2.17/net/ipv6/tcp_ipv6.c |
a32fbeb3 AM |
100 | --- linux-2.2.17.org/net/ipv6/tcp_ipv6.c Wed Dec 6 18:06:51 2000 |
101 | +++ linux-2.2.17/net/ipv6/tcp_ipv6.c Wed Dec 6 18:09:01 2000 | |
8d5fcfed JR |
102 | @@ -387,7 +387,7 @@ |
103 | if(!ipv6_addr_any(&np->daddr)) | |
104 | return -EINVAL; | |
105 | ||
106 | - if (addr_len < sizeof(struct sockaddr_in6)) | |
107 | + if (addr_len < SIN6_LEN_RFC2133) | |
108 | return(-EINVAL); | |
109 | ||
110 | if (usin->sin6_family && usin->sin6_family != AF_INET6) | |
0944c93d AM |
111 | @@ -1583,6 +1583,7 @@ |
112 | sin6->sin6_port = sk->dport; | |
113 | /* We do not store received flowlabel for TCP */ | |
114 | sin6->sin6_flowinfo = 0; | |
115 | + sin6->sin6_scope_id = 0; | |
116 | } | |
117 | ||
118 | static struct tcp_func ipv6_specific = { | |
2f6ced96 | 119 | diff -urN linux-2.2.17.org/net/ipv6/udp.c linux-2.2.17/net/ipv6/udp.c |
a32fbeb3 AM |
120 | --- linux-2.2.17.org/net/ipv6/udp.c Wed Dec 6 18:06:51 2000 |
121 | +++ linux-2.2.17/net/ipv6/udp.c Wed Dec 6 18:14:24 2000 | |
8d5fcfed JR |
122 | @@ -210,7 +210,7 @@ |
123 | goto ipv4_connected; | |
124 | } | |
125 | ||
126 | - if (addr_len < sizeof(*usin)) | |
127 | + if (addr_len < SIN6_LEN_RFC2133) | |
128 | return(-EINVAL); | |
129 | ||
130 | if (usin->sin6_family && usin->sin6_family != AF_INET6) | |
0944c93d AM |
131 | @@ -414,6 +414,7 @@ |
132 | sin6->sin6_family = AF_INET6; | |
133 | sin6->sin6_port = skb->h.uh->source; | |
134 | sin6->sin6_flowinfo = 0; | |
135 | + sin6->sin6_scope_id = 0; | |
136 | ||
137 | if (skb->protocol == __constant_htons(ETH_P_IP)) { | |
138 | ipv6_addr_set(&sin6->sin6_addr, 0, 0, | |
a32fbeb3 AM |
139 | @@ -424,6 +425,7 @@ |
140 | memcpy(&sin6->sin6_addr, &skb->nh.ipv6h->saddr, | |
141 | sizeof(struct in6_addr)); | |
2f6ced96 | 142 | |
a32fbeb3 | 143 | + sin6->sin6_scope_id = 0; |
2f6ced96 AM |
144 | if (sk->net_pinfo.af_inet6.rxopt.all) |
145 | datagram_recv_ctl(sk, msg, skb); | |
2f6ced96 | 146 | } |
2f6ced96 | 147 | @@ -777,7 +779,7 @@ |
8d5fcfed JR |
148 | if (sin6->sin6_family == AF_INET) |
149 | return udp_sendmsg(sk, msg, ulen); | |
150 | ||
151 | - if (addr_len < sizeof(*sin6)) | |
152 | + if (addr_len < SIN6_LEN_RFC2133) | |
153 | return(-EINVAL); | |
154 | ||
155 | if (sin6->sin6_family && sin6->sin6_family != AF_INET6) |