]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv6/raw.c
Merge branch 'for-rmk' of git://aeryn.fluff.org.uk/bjdooks/linux
[linux-2.6-omap-h63xx.git] / net / ipv6 / raw.c
index 603df76e052267f5882952e59e51296912143653..01d47674f7e5c802214565108e14a820ef7963fc 100644 (file)
@@ -7,8 +7,6 @@
  *
  *     Adapted from linux/net/ipv4/raw.c
  *
- *     $Id: raw.c,v 1.51 2002/02/01 22:01:04 davem Exp $
- *
  *     Fixes:
  *     Hideaki YOSHIFUJI       :       sin6_scope_id support
  *     YOSHIFUJI,H.@USAGI      :       raw checksum (RFC2292(bis) compliance)
@@ -1159,11 +1157,20 @@ static int rawv6_ioctl(struct sock *sk, int cmd, unsigned long arg)
 static void rawv6_close(struct sock *sk, long timeout)
 {
        if (inet_sk(sk)->num == IPPROTO_RAW)
-               ip6_ra_control(sk, -1, NULL);
+               ip6_ra_control(sk, -1);
        ip6mr_sk_done(sk);
        sk_common_release(sk);
 }
 
+static void raw6_destroy(struct sock *sk)
+{
+       lock_sock(sk);
+       ip6_flush_pending_frames(sk);
+       release_sock(sk);
+
+       inet6_destroy_sock(sk);
+}
+
 static int rawv6_init_sk(struct sock *sk)
 {
        struct raw6_sock *rp = raw6_sk(sk);
@@ -1187,11 +1194,11 @@ struct proto rawv6_prot = {
        .name              = "RAWv6",
        .owner             = THIS_MODULE,
        .close             = rawv6_close,
+       .destroy           = raw6_destroy,
        .connect           = ip6_datagram_connect,
        .disconnect        = udp_disconnect,
        .ioctl             = rawv6_ioctl,
        .init              = rawv6_init_sk,
-       .destroy           = inet6_destroy_sock,
        .setsockopt        = rawv6_setsockopt,
        .getsockopt        = rawv6_getsockopt,
        .sendmsg           = rawv6_sendmsg,
@@ -1244,7 +1251,7 @@ static int raw6_seq_show(struct seq_file *seq, void *v)
                           "local_address                         "
                           "remote_address                        "
                           "st tx_queue rx_queue tr tm->when retrnsmt"
-                          "   uid  timeout inode  drops\n");
+                          "   uid  timeout inode ref pointer drops\n");
        else
                raw6_sock_seq_show(seq, v, raw_seq_private(seq)->bucket);
        return 0;