diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-02-05 06:47:02 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-02-05 06:47:02 +0000 |
commit | 99a7e12f34b3661a0d1354eef83a0eef4df5e34c (patch) | |
tree | 3560aca9ca86792f9ab7bd87861ea143a1b3c7a3 /net/ipv6 | |
parent | e73a04659c0b8cdee4dd40e58630e2cf63afb316 (diff) |
Merge with Linux 2.3.38.
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/Config.in | 2 | ||||
-rw-r--r-- | net/ipv6/addrconf.c | 2 | ||||
-rw-r--r-- | net/ipv6/af_inet6.c | 2 | ||||
-rw-r--r-- | net/ipv6/ip6_output.c | 16 | ||||
-rw-r--r-- | net/ipv6/mcast.c | 2 | ||||
-rw-r--r-- | net/ipv6/proc.c | 2 | ||||
-rw-r--r-- | net/ipv6/raw.c | 2 | ||||
-rw-r--r-- | net/ipv6/route.c | 5 | ||||
-rw-r--r-- | net/ipv6/sit.c | 4 | ||||
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 32 | ||||
-rw-r--r-- | net/ipv6/udp.c | 6 |
11 files changed, 40 insertions, 35 deletions
diff --git a/net/ipv6/Config.in b/net/ipv6/Config.in index 6bf46e4e8..80498a9fe 100644 --- a/net/ipv6/Config.in +++ b/net/ipv6/Config.in @@ -3,7 +3,7 @@ # bool ' IPv6: enable EUI-64 token format' CONFIG_IPV6_EUI64 if [ "$CONFIG_IPV6_EUI64" = "y" ]; then - bool ' IPv6: disable provider based addresses' CONFIG_IPV6_NO_PB + bool ' IPv6: disable provider based addresses' CONFIG_IPV6_NO_PB fi if [ "$CONFIG_NETLINK" = "y" ]; then if [ "$CONFIG_RTNETLINK" = "n" ]; then diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index d7192096b..d82ef3846 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -6,7 +6,7 @@ * Pedro Roque <roque@di.fc.ul.pt> * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> * - * $Id: addrconf.c,v 1.53 1999/08/31 07:03:54 davem Exp $ + * $Id: addrconf.c,v 1.55 1999/12/15 22:39:40 davem Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 638c1e79d..68badee52 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c @@ -7,7 +7,7 @@ * * Adapted from linux/net/ipv4/af_inet.c * - * $Id: af_inet6.c,v 1.47 1999/08/31 07:03:58 davem Exp $ + * $Id: af_inet6.c,v 1.49 1999/12/15 22:39:43 davem Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index bfeff3dc9..2f1d8800e 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: ip6_output.c,v 1.22 1999/08/20 11:06:21 davem Exp $ + * $Id: ip6_output.c,v 1.23 2000/01/06 00:42:07 davem Exp $ * * Based on linux/net/ipv4/ip_output.c * @@ -45,7 +45,17 @@ #include <net/rawv6.h> #include <net/icmp.h> -static u32 ipv6_fragmentation_id = 1; +static __inline__ void ipv6_select_ident(struct sk_buff *skb, struct frag_hdr *fhdr) +{ + static u32 ipv6_fragmentation_id = 1; + static spinlock_t ip6_id_lock = SPIN_LOCK_UNLOCKED; + + spin_lock_bh(&ip6_id_lock); + fhdr->identification = ipv6_fragmentation_id; + if (++ipv6_fragmentation_id == 0) + ipv6_fragmentation_id = 1; + spin_unlock_bh(&ip6_id_lock); +} int ip6_output(struct sk_buff *skb) { @@ -224,7 +234,7 @@ static __inline__ u8 * ipv6_build_fraghdr(struct sk_buff *skb, u8* prev_hdr, uns fhdr->reserved = 0; fhdr->frag_off = htons(offset); - fhdr->identification = ipv6_fragmentation_id++; + ipv6_select_ident(skb, fhdr); return &fhdr->nexthdr; } diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 1abc90346..f8be2fb92 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: mcast.c,v 1.26 1999/08/31 07:04:08 davem Exp $ + * $Id: mcast.c,v 1.27 1999/12/09 00:52:49 davem Exp $ * * Based on linux/ipv4/igmp.c and linux/ipv4/ip_sockglue.c * diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c index 2e2603668..999ac75fe 100644 --- a/net/ipv6/proc.c +++ b/net/ipv6/proc.c @@ -7,7 +7,7 @@ * PROC file system. This is very similar to the IPv4 version, * except it reports the sockets in the INET6 address family. * - * Version: $Id: proc.c,v 1.11 1999/07/02 11:26:45 davem Exp $ + * Version: $Id: proc.c,v 1.12 1999/12/15 22:39:48 davem Exp $ * * Authors: David S. Miller (davem@caip.rutgers.edu) * diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index d52c6a129..baa6611b4 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -7,7 +7,7 @@ * * Adapted from linux/net/ipv4/raw.c * - * $Id: raw.c,v 1.29 1999/08/20 11:06:26 davem Exp $ + * $Id: raw.c,v 1.30 1999/12/15 22:39:51 davem Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/net/ipv6/route.c b/net/ipv6/route.c index dddc12bc9..b39959f4f 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: route.c,v 1.40 1999/08/31 07:04:13 davem Exp $ + * $Id: route.c,v 1.43 2000/01/06 00:42:08 davem Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -1544,6 +1544,9 @@ static int rt6_fill_node(struct sk_buff *skb, struct rt6_info *rt, ci.rta_used = rt->u.dst.__use; ci.rta_clntref = atomic_read(&rt->u.dst.__refcnt); ci.rta_error = rt->u.dst.error; + ci.rta_id = 0; + ci.rta_ts = 0; + ci.rta_tsage = 0; RTA_PUT(skb, RTA_CACHEINFO, sizeof(ci), &ci); nlh->nlmsg_len = skb->tail - b; return skb->len; diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 8691d5de7..818ad66ca 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -6,7 +6,7 @@ * Pedro Roque <roque@di.fc.ul.pt> * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> * - * $Id: sit.c,v 1.34 1999/08/31 07:04:16 davem Exp $ + * $Id: sit.c,v 1.35 2000/01/06 00:42:08 davem Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -544,7 +544,7 @@ static int ipip6_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) iph->ttl = iph6->hop_limit; iph->tot_len = htons(skb->len); - iph->id = htons(ip_id_count++); + ip_select_ident(iph, &rt->u.dst); ip_send_check(iph); stats->tx_bytes += skb->len; diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 8f7fbb7ba..6e71f5479 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: tcp_ipv6.c,v 1.112 1999/08/31 07:04:19 davem Exp $ + * $Id: tcp_ipv6.c,v 1.115 2000/01/06 00:42:09 davem Exp $ * * Based on: * linux/net/ipv4/tcp.c @@ -273,8 +273,8 @@ static struct sock *tcp_v6_lookup_listener(struct in6_addr *daddr, unsigned shor } } } - if (sk) - sock_hold(sk); + if (result) + sock_hold(result); read_unlock(&tcp_lhash_lock); return result; } @@ -343,20 +343,17 @@ static __inline__ u16 tcp_v6_check(struct tcphdr *th, int len, static __u32 tcp_v6_init_sequence(struct sock *sk, struct sk_buff *skb) { - __u32 si; - __u32 di; - if (skb->protocol == __constant_htons(ETH_P_IPV6)) { - si = skb->nh.ipv6h->saddr.s6_addr32[3]; - di = skb->nh.ipv6h->daddr.s6_addr32[3]; + return secure_tcpv6_sequence_number(skb->nh.ipv6h->daddr.s6_addr32, + skb->nh.ipv6h->saddr.s6_addr32, + skb->h.th->dest, + skb->h.th->source); } else { - si = skb->nh.iph->saddr; - di = skb->nh.iph->daddr; + return secure_tcp_sequence_number(skb->nh.iph->daddr, + skb->nh.iph->saddr, + skb->h.th->dest, + skb->h.th->source); } - - return secure_tcp_sequence_number(di, si, - skb->h.th->dest, - skb->h.th->source); } static int tcp_v6_check_established(struct sock *sk) @@ -622,9 +619,9 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, */ if (!tp->write_seq) - tp->write_seq = secure_tcp_sequence_number(np->saddr.s6_addr32[3], - np->daddr.s6_addr32[3], - sk->sport, sk->dport); + tp->write_seq = secure_tcpv6_sequence_number(np->saddr.s6_addr32, + np->daddr.s6_addr32, + sk->sport, sk->dport); err = tcp_connect(sk, buff); if (err == 0) @@ -730,7 +727,6 @@ void tcp_v6_err(struct sk_buff *skb, struct ipv6hdr *hdr, if (dst == NULL) { struct flowi fl; - struct dst_entry *dst; /* BUGGG_FUTURE: Again, it is not clear how to handle rthdr case. Ignore this complexity diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 6c2777b32..7bc3a3914 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -7,7 +7,7 @@ * * Based on linux/ipv4/udp.c * - * $Id: udp.c,v 1.45 1999/08/20 11:06:32 davem Exp $ + * $Id: udp.c,v 1.47 2000/01/05 21:27:54 davem Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -341,10 +341,6 @@ static void udpv6_close(struct sock *sk, long timeout) inet_sock_release(sk); } -#ifndef HAVE_CSUM_COPY_USER -#undef CONFIG_UDP_DELAY_CSUM -#endif - /* * This should be easy, if there is something there we * return it, otherwise we block. |