summaryrefslogtreecommitdiff
path: root/net/ipv6/ndisc.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 18:11:38 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 18:11:38 -0800
commit1a0153507ffae9cf3350e76c12d441788c0191e1 (patch)
treed05a502b4fc05202c84c1667019460c08ea088cd /net/ipv6/ndisc.c
parentb0683ac8928c4cf40646a6ce3eb6ffe94605acfa (diff)
v2.4.3.2 -> v2.4.3.3
- Hui-Fen Hsu: sis900 driver update - NIIBE Yutaka: Super-H update - Alan Cox: more resyncs (ARM down, but more to go) - David Miller: network zerocopy, Sparc sync, qlogic,FC fix, etc. - David Miller/me: get rid of various drivers hacks to do mmap alignment behind the back of the VM layer. Create a real protocol for it.
Diffstat (limited to 'net/ipv6/ndisc.c')
-rw-r--r--net/ipv6/ndisc.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index 7c3bfca37c4b..faab9ab107de 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -338,7 +338,7 @@ void ndisc_send_na(struct net_device *dev, struct neighbour *neigh,
}
skb = sock_alloc_send_skb(sk, MAX_HEADER + len + dev->hard_header_len + 15,
- 0, 0, &err);
+ 0, &err);
if (skb == NULL) {
ND_PRINTK1("send_na: alloc skb failed\n");
@@ -397,7 +397,7 @@ void ndisc_send_ns(struct net_device *dev, struct neighbour *neigh,
len += NDISC_OPT_SPACE(dev->addr_len);
skb = sock_alloc_send_skb(sk, MAX_HEADER + len + dev->hard_header_len + 15,
- 0, 0, &err);
+ 0, &err);
if (skb == NULL) {
ND_PRINTK1("send_ns: alloc skb failed\n");
return;
@@ -458,7 +458,7 @@ void ndisc_send_rs(struct net_device *dev, struct in6_addr *saddr,
len += NDISC_OPT_SPACE(dev->addr_len);
skb = sock_alloc_send_skb(sk, MAX_HEADER + len + dev->hard_header_len + 15,
- 0, 0, &err);
+ 0, &err);
if (skb == NULL) {
ND_PRINTK1("send_ns: alloc skb failed\n");
return;
@@ -869,7 +869,7 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh,
}
buff = sock_alloc_send_skb(sk, MAX_HEADER + len + dev->hard_header_len + 15,
- 0, 0, &err);
+ 0, &err);
if (buff == NULL) {
ND_PRINTK1("ndisc_send_redirect: alloc_skb failed\n");
return;
@@ -957,11 +957,11 @@ static __inline__ int ndisc_recv_na(struct neighbour *neigh, struct sk_buff *skb
static void pndisc_redo(struct sk_buff *skb)
{
- ndisc_rcv(skb, skb->len);
+ ndisc_rcv(skb);
kfree_skb(skb);
}
-int ndisc_rcv(struct sk_buff *skb, unsigned long len)
+int ndisc_rcv(struct sk_buff *skb)
{
struct net_device *dev = skb->dev;
struct in6_addr *saddr = &skb->nh.ipv6h->saddr;
@@ -970,6 +970,8 @@ int ndisc_rcv(struct sk_buff *skb, unsigned long len)
struct neighbour *neigh;
struct inet6_ifaddr *ifp;
+ __skb_push(skb, skb->data-skb->h.raw);
+
switch (msg->icmph.icmp6_type) {
case NDISC_NEIGHBOUR_SOLICITATION:
if ((ifp = ipv6_get_ifaddr(&msg->target, dev)) != NULL) {