|
@@ -608,6 +608,14 @@ static void raw_close(struct sock *sk, long timeout)
|
|
sk_common_release(sk);
|
|
sk_common_release(sk);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int raw_destroy(struct sock *sk)
|
|
|
|
+{
|
|
|
|
+ lock_sock(sk);
|
|
|
|
+ ip_flush_pending_frames(sk);
|
|
|
|
+ release_sock(sk);
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
/* This gets rid of all the nasties in af_inet. -DaveM */
|
|
/* This gets rid of all the nasties in af_inet. -DaveM */
|
|
static int raw_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
|
static int raw_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
|
{
|
|
{
|
|
@@ -820,6 +828,7 @@ struct proto raw_prot = {
|
|
.name = "RAW",
|
|
.name = "RAW",
|
|
.owner = THIS_MODULE,
|
|
.owner = THIS_MODULE,
|
|
.close = raw_close,
|
|
.close = raw_close,
|
|
|
|
+ .destroy = raw_destroy,
|
|
.connect = ip4_datagram_connect,
|
|
.connect = ip4_datagram_connect,
|
|
.disconnect = udp_disconnect,
|
|
.disconnect = udp_disconnect,
|
|
.ioctl = raw_ioctl,
|
|
.ioctl = raw_ioctl,
|