|
@@ -1136,6 +1136,15 @@ static void l2cap_sock_resume_cb(struct l2cap_chan *chan)
|
|
|
sk->sk_state_change(sk);
|
|
|
}
|
|
|
|
|
|
+static void l2cap_sock_set_shutdown_cb(struct l2cap_chan *chan)
|
|
|
+{
|
|
|
+ struct sock *sk = chan->data;
|
|
|
+
|
|
|
+ lock_sock(sk);
|
|
|
+ sk->sk_shutdown = SHUTDOWN_MASK;
|
|
|
+ release_sock(sk);
|
|
|
+}
|
|
|
+
|
|
|
static long l2cap_sock_get_sndtimeo_cb(struct l2cap_chan *chan)
|
|
|
{
|
|
|
struct sock *sk = chan->data;
|
|
@@ -1153,6 +1162,7 @@ static struct l2cap_ops l2cap_chan_ops = {
|
|
|
.ready = l2cap_sock_ready_cb,
|
|
|
.defer = l2cap_sock_defer_cb,
|
|
|
.resume = l2cap_sock_resume_cb,
|
|
|
+ .set_shutdown = l2cap_sock_set_shutdown_cb,
|
|
|
.get_sndtimeo = l2cap_sock_get_sndtimeo_cb,
|
|
|
.alloc_skb = l2cap_sock_alloc_skb_cb,
|
|
|
};
|