On Thu, Feb 20, 2020 at 5:18 PM Leppanen, Jere (Nokia - FI/Espoo) <jere.leppanen@xxxxxxxxx> wrote: > > Hello All, > > According to the RFC, a peeled-off socket is a one-to-one socket. But in lksctp a peeled-off socket it not TCP style, it's UDP_HIGH_BANDWIDTH style. Because of this, shutdown() doesn't work, linger probably doesn't work, and so on. > > For example, in sctp_shutdown(): > > static void sctp_shutdown(struct sock *sk, int how) > { > struct net *net = sock_net(sk); > struct sctp_endpoint *ep; > > if (!sctp_style(sk, TCP)) > return; > > Here we just bail out, because a peeled-off socket is not TCP style. > > Is this just a bug, or am I missing something? Asking mostly out of personal curiosity. I would say, it's because .shutdown is tcp_prot thing and udp_prot doesn't have. sctp doesn't have to implement it for UDP style socket. But for TCP- style socket, sctp is trying to be compatible with TCP protocol user API. But even though, sctp's .shutdown is still not fully compatible with TCP protocol due to sctp's 3-way shakehands for finishing a connection.