]> git.pld-linux.org Git - packages/kernel.git/blame - linux-ipv6-glibc2.2.patch
9cdd694a797623b3d0f76ee69304dd85 linux-loop-hvr-2.4.16.0.patch
[packages/kernel.git] / linux-ipv6-glibc2.2.patch
CommitLineData
2f6ced96 1diff -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 12diff -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 24diff -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 }
44diff -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 {
70diff -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 99diff -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 119diff -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)
This page took 0.060634 seconds and 4 git commands to generate.