]> git.pld-linux.org Git - packages/kernel.git/blob - linux-ipv6-pld.patch
- ported from linux-2.4.25-atmdd.patch
[packages/kernel.git] / linux-ipv6-pld.patch
1 diff -urN linux.orig/include/linux/in6.h linux/include/linux/in6.h
2 --- linux.orig/include/linux/in6.h      Sun Mar 25 18:31:04 2001
3 +++ linux/include/linux/in6.h   Thu May  9 18:31:33 2002
4 @@ -45,6 +45,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  };
10  
11  
12 diff -urN linux.orig/include/net/ipv6.h linux/include/net/ipv6.h
13 --- linux.orig/include/net/ipv6.h       Sun Mar 25 18:31:08 2001
14 +++ linux/include/net/ipv6.h    Thu May  9 18:31:33 2002
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   */
24 diff -urN linux.orig/net/ipv6/addrconf.c linux/net/ipv6/addrconf.c
25 --- linux.orig/net/ipv6/addrconf.c      Sun Mar 25 18:31:13 2001
26 +++ linux/net/ipv6/addrconf.c   Thu May  9 18:31:30 2002
27 @@ -255,8 +255,6 @@
28                 idev = ipv6_add_dev(dev);
29                 if (idev == NULL)
30                         return NULL;
31 -               if (dev->flags&IFF_UP)
32 -                       ipv6_mc_up(idev);
33         }
34         return idev;
35  }
36 @@ -1045,6 +1043,8 @@
37                 return;
38         }
39  
40 +       ipv6_mc_up(idev);
41 +               
42         addrconf_lock();
43         ifp = ipv6_add_addr(idev, &addr, IFA_HOST);
44  
45 @@ -1084,6 +1084,8 @@
46         if (idev == NULL)
47                 return;
48  
49 +       ipv6_mc_up(idev);
50 +       
51  #ifdef CONFIG_IPV6_EUI64
52         memset(&addr, 0, sizeof(struct in6_addr));
53  
54 @@ -1121,6 +1123,8 @@
55                 return;
56         }
57  
58 +       ipv6_mc_up(idev);
59 +
60         sit_add_v4_addrs(idev);
61  
62         if (dev->flags&IFF_POINTOPOINT) {
63 diff -urN linux.orig/net/ipv6/af_inet6.c linux/net/ipv6/af_inet6.c
64 --- linux.orig/net/ipv6/af_inet6.c      Sun Mar 25 18:31:13 2001
65 +++ linux/net/ipv6/af_inet6.c   Thu May  9 18:31:33 2002
66 @@ -199,7 +199,7 @@
67                 
68         /* Check these errors (active socket, bad address length, double bind). */
69         if ((sk->state != TCP_CLOSE)                    ||
70 -           (addr_len < sizeof(struct sockaddr_in6))    ||
71 +           (addr_len < SIN6_LEN_RFC2133)               ||
72             (sk->num != 0))
73                 return -EINVAL;
74                 
75 @@ -334,6 +334,7 @@
76  
77                 sin->sin6_port = sk->sport;
78         }
79 +       sin->sin6_scope_id = 0;
80         *uaddr_len = sizeof(*sin);      
81         return(0);
82  }
83 diff -urN linux.orig/net/ipv6/datagram.c linux/net/ipv6/datagram.c
84 --- linux.orig/net/ipv6/datagram.c      Sun Mar 25 18:31:13 2001
85 +++ linux/net/ipv6/datagram.c   Thu May  9 18:31:33 2002
86 @@ -133,9 +133,11 @@
87         if (sin) {
88                 sin->sin6_family = AF_INET6;
89                 sin->sin6_flowinfo = 0;
90 +               sin->sin6_scope_id = 0;
91                 sin->sin6_port = serr->port; 
92                 if (serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6) {
93                         memcpy(&sin->sin6_addr, skb->nh.raw + serr->addr_offset, 16);
94 +                       sin->sin6_scope_id = 0;
95                         if (sk->net_pinfo.af_inet6.sndflow)
96                                 sin->sin6_flowinfo = *(u32*)(skb->nh.raw + serr->addr_offset - 24) & IPV6_FLOWINFO_MASK;
97                 } else
98 @@ -150,8 +152,10 @@
99         if (serr->ee.ee_origin != SO_EE_ORIGIN_LOCAL) {
100                 sin->sin6_family = AF_INET6;
101                 sin->sin6_flowinfo = 0;
102 +               sin->sin6_scope_id = 0;
103                 if (serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6) {
104                         memcpy(&sin->sin6_addr, &skb->nh.ipv6h->saddr, 16);
105 +                       sin->sin6_scope_id = 0;
106                         if (sk->net_pinfo.af_inet6.rxopt.all)
107                                 datagram_recv_ctl(sk, msg, skb);
108                 } else {
109 diff -urN linux.orig/net/ipv6/raw.c linux/net/ipv6/raw.c
110 --- linux.orig/net/ipv6/raw.c   Fri Nov  2 17:39:16 2001
111 +++ linux/net/ipv6/raw.c        Thu May  9 18:31:33 2002
112 @@ -117,7 +117,7 @@
113         int addr_type;
114  
115         /* Check these errors. */
116 -       if (sk->state != TCP_CLOSE || (addr_len < sizeof(struct sockaddr_in6)))
117 +       if (sk->state != TCP_CLOSE || (addr_len < SIN6_LEN_RFC2133))
118                 return -EINVAL;
119  
120         addr_type = ipv6_addr_type(&addr->sin6_addr);
121 @@ -252,6 +252,7 @@
122                 memcpy(&sin6->sin6_addr, &skb->nh.ipv6h->saddr, 
123                        sizeof(struct in6_addr));
124                 sin6->sin6_flowinfo = 0;
125 +               sin6->sin6_scope_id = 0;
126         }
127  
128         if (sk->net_pinfo.af_inet6.rxopt.all)
129 @@ -360,7 +361,7 @@
130         fl.fl6_flowlabel = 0;
131  
132         if (sin6) {
133 -               if (addr_len < sizeof(struct sockaddr_in6)) 
134 +               if (addr_len < SIN6_LEN_RFC2133) 
135                         return(-EINVAL);
136  
137                 if (sin6->sin6_family && sin6->sin6_family != AF_INET6) 
138 diff -urN linux.orig/net/ipv6/tcp_ipv6.c linux/net/ipv6/tcp_ipv6.c
139 --- linux.orig/net/ipv6/tcp_ipv6.c      Sun Mar 25 18:31:13 2001
140 +++ linux/net/ipv6/tcp_ipv6.c   Thu May  9 18:31:33 2002
141 @@ -387,7 +387,7 @@
142         if(!ipv6_addr_any(&np->daddr))
143                 return -EINVAL;
144         
145 -       if (addr_len < sizeof(struct sockaddr_in6)) 
146 +       if (addr_len < SIN6_LEN_RFC2133) 
147                 return(-EINVAL);
148  
149         if (usin->sin6_family && usin->sin6_family != AF_INET6) 
150 @@ -1583,6 +1583,7 @@
151         sin6->sin6_port = sk->dport;
152         /* We do not store received flowlabel for TCP */
153         sin6->sin6_flowinfo = 0;
154 +       sin6->sin6_scope_id = 0;
155  }
156  
157  static struct tcp_func ipv6_specific = {
158 diff -urN linux.orig/net/ipv6/udp.c linux/net/ipv6/udp.c
159 --- linux.orig/net/ipv6/udp.c   Sun Mar 25 18:31:13 2001
160 +++ linux/net/ipv6/udp.c        Thu May  9 18:31:33 2002
161 @@ -210,7 +210,7 @@
162                 goto ipv4_connected;
163         }
164  
165 -       if (addr_len < sizeof(*usin)) 
166 +       if (addr_len < SIN6_LEN_RFC2133) 
167                 return(-EINVAL);
168  
169         if (usin->sin6_family && usin->sin6_family != AF_INET6) 
170 @@ -414,6 +414,7 @@
171                 sin6->sin6_family = AF_INET6;
172                 sin6->sin6_port = skb->h.uh->source;
173                 sin6->sin6_flowinfo = 0;
174 +               sin6->sin6_scope_id = 0;
175  
176                 if (skb->protocol == __constant_htons(ETH_P_IP)) {
177                         ipv6_addr_set(&sin6->sin6_addr, 0, 0,
178 @@ -424,6 +425,7 @@
179                         memcpy(&sin6->sin6_addr, &skb->nh.ipv6h->saddr,
180                                sizeof(struct in6_addr));
181  
182 +                       sin6->sin6_scope_id = 0;
183                         if (sk->net_pinfo.af_inet6.rxopt.all)
184                                 datagram_recv_ctl(sk, msg, skb);
185                 }
186 @@ -777,7 +779,7 @@
187                 if (sin6->sin6_family == AF_INET)
188                         return udp_sendmsg(sk, msg, ulen);
189  
190 -               if (addr_len < sizeof(*sin6))
191 +               if (addr_len < SIN6_LEN_RFC2133)
192                         return(-EINVAL);
193  
194                 if (sin6->sin6_family && sin6->sin6_family != AF_INET6)
195 diff -urN linux.orig/net/netsyms.c linux/net/netsyms.c
196 --- linux.orig/net/netsyms.c    Sun Mar 25 18:37:41 2001
197 +++ linux/net/netsyms.c Thu May  9 18:31:20 2002
198 @@ -101,8 +101,9 @@
199  #include <net/sock.h>
200  #endif
201  
202 -#ifdef CONFIG_SYSCTL
203  extern int sysctl_max_syn_backlog;
204 +
205 +#ifdef CONFIG_SYSCTL
206  extern int sysctl_ip_always_defrag;
207  #endif
208  
209 @@ -365,8 +366,9 @@
210  EXPORT_SYMBOL(dev_loopback_xmit);
211  EXPORT_SYMBOL(tcp_regs);
212  
213 -#ifdef CONFIG_SYSCTL
214  EXPORT_SYMBOL(sysctl_max_syn_backlog);
215 +
216 +#ifdef CONFIG_SYSCTL
217  EXPORT_SYMBOL(sysctl_ip_always_defrag);
218  #endif
219  #endif
This page took 0.053783 seconds and 3 git commands to generate.