summaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-02-05 06:47:02 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-02-05 06:47:02 +0000
commit99a7e12f34b3661a0d1354eef83a0eef4df5e34c (patch)
tree3560aca9ca86792f9ab7bd87861ea143a1b3c7a3 /net/ipv6
parente73a04659c0b8cdee4dd40e58630e2cf63afb316 (diff)
Merge with Linux 2.3.38.
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/Config.in2
-rw-r--r--net/ipv6/addrconf.c2
-rw-r--r--net/ipv6/af_inet6.c2
-rw-r--r--net/ipv6/ip6_output.c16
-rw-r--r--net/ipv6/mcast.c2
-rw-r--r--net/ipv6/proc.c2
-rw-r--r--net/ipv6/raw.c2
-rw-r--r--net/ipv6/route.c5
-rw-r--r--net/ipv6/sit.c4
-rw-r--r--net/ipv6/tcp_ipv6.c32
-rw-r--r--net/ipv6/udp.c6
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.