This broke socket splicing between inet and inet6 sockets.
sosplice() has this check:

        if (sosp->so_proto->pr_usrreqs != so->so_proto->pr_usrreqs) {
                error = EPROTONOSUPPORT;
                goto frele;
        }

That does not work anymore after splitting {tcp,udp}6_usrreqs.

bluhm

On Fri, Sep 02, 2022 at 07:12:32AM -0600, Vitaliy Makkoveev wrote:
> CVSROOT:      /cvs
> Module name:  src
> Changes by:   m...@cvs.openbsd.org    2022/09/02 07:12:32
>
> Modified files:
>       sys/kern       : sys_socket.c uipc_usrreq.c
>       sys/net        : if.c pfkeyv2.c rtsock.c
>       sys/netinet    : ip_divert.c ip_gre.c raw_ip.c tcp_usrreq.c
>                        tcp_var.h udp_usrreq.c udp_var.h
>       sys/netinet6   : in6_proto.c ip6_divert.c raw_ip6.c
>       sys/sys        : protosw.h
>
> Log message:
> Move PRU_CONTROL request to (*pru_control)().
>
> The 'proc *' arg is not used for PRU_CONTROL request, so remove it from
> pru_control() wrapper.
>
> Split out {tcp,udp}6_usrreqs from {tcp,udp}_usrreqs and use them for
> inet6 case.
>
> ok guenther@ bluhm@

Reply via email to