> On 28 Aug 2022, at 20:48, Alexander Bluhm <[email protected]> wrote:
>
> Hi,
>
> Since we have no raw_usrreq anymore, we can retire pr_output.
> pfkeyv2 and route can call ther output functions directly.
>
> ok?
>
ok mvs@
> bluhm
>
> Index: net/pfkeyv2.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/net/pfkeyv2.c,v
> retrieving revision 1.243
> diff -u -p -r1.243 pfkeyv2.c
> --- net/pfkeyv2.c 27 Aug 2022 20:28:01 -0000 1.243
> +++ net/pfkeyv2.c 28 Aug 2022 16:50:24 -0000
> @@ -177,8 +177,7 @@ int pfkeyv2_send(struct socket *, struct
> struct mbuf *);
> int pfkeyv2_usrreq(struct socket *, int, struct mbuf *, struct mbuf *,
> struct mbuf *, struct proc *);
> -int pfkeyv2_output(struct mbuf *, struct socket *, struct sockaddr *,
> - struct mbuf *);
> +int pfkeyv2_output(struct mbuf *, struct socket *);
> int pfkey_sendup(struct pkpcb *, struct mbuf *, int);
> int pfkeyv2_sa_flush(struct tdb *, void *, int);
> int pfkeyv2_policy_flush(struct ipsec_policy *, void *, unsigned int);
> @@ -218,7 +217,6 @@ const struct protosw pfkeysw[] = {
> .pr_domain = &pfkeydomain,
> .pr_protocol = PF_KEY_V2,
> .pr_flags = PR_ATOMIC | PR_ADDR,
> - .pr_output = pfkeyv2_output,
> .pr_usrreqs = &pfkeyv2_usrreqs,
> .pr_sysctl = pfkeyv2_sysctl,
> }
> @@ -371,7 +369,7 @@ pfkeyv2_send(struct socket *so, struct m
> goto out;
> }
>
> - error = (*so->so_proto->pr_output)(m, so, NULL, NULL);
> + error = pfkeyv2_output(m, so);
> m = NULL;
>
> out:
> @@ -443,8 +441,7 @@ pfkeyv2_usrreq(struct socket *so, int re
> }
>
> int
> -pfkeyv2_output(struct mbuf *mbuf, struct socket *so,
> - struct sockaddr *dstaddr, struct mbuf *control)
> +pfkeyv2_output(struct mbuf *mbuf, struct socket *so)
> {
> void *message;
> int error = 0;
> Index: net/rtsock.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/net/rtsock.c,v
> retrieving revision 1.343
> diff -u -p -r1.343 rtsock.c
> --- net/rtsock.c 27 Aug 2022 20:28:01 -0000 1.343
> +++ net/rtsock.c 28 Aug 2022 16:50:51 -0000
> @@ -109,8 +109,7 @@ struct walkarg {
> void route_prinit(void);
> void rcb_ref(void *, void *);
> void rcb_unref(void *, void *);
> -int route_output(struct mbuf *, struct socket *, struct sockaddr *,
> - struct mbuf *);
> +int route_output(struct mbuf *, struct socket *);
> int route_ctloutput(int, struct socket *, int, int, struct mbuf *);
> int route_usrreq(struct socket *, int, struct mbuf *, struct mbuf *,
> struct mbuf *, struct proc *);
> @@ -395,7 +394,7 @@ route_send(struct socket *so, struct mbu
> goto out;
> }
>
> - error = (*so->so_proto->pr_output)(m, so, NULL, NULL);
> + error = route_output(m, so);
> m = NULL;
>
> out:
> @@ -722,8 +721,7 @@ rtm_report(struct rtentry *rt, u_char ty
> }
>
> int
> -route_output(struct mbuf *m, struct socket *so, struct sockaddr *dstaddr,
> - struct mbuf *control)
> +route_output(struct mbuf *m, struct socket *so)
> {
> struct rt_msghdr *rtm = NULL;
> struct rtentry *rt = NULL;
> @@ -2455,7 +2453,6 @@ const struct protosw routesw[] = {
> .pr_type = SOCK_RAW,
> .pr_domain = &routedomain,
> .pr_flags = PR_ATOMIC|PR_ADDR|PR_WANTRCVD,
> - .pr_output = route_output,
> .pr_ctloutput = route_ctloutput,
> .pr_usrreqs = &route_usrreqs,
> .pr_init = route_prinit,
> Index: sys/protosw.h
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/sys/protosw.h,v
> retrieving revision 1.45
> diff -u -p -r1.45 protosw.h
> --- sys/protosw.h 27 Aug 2022 20:28:01 -0000 1.45
> +++ sys/protosw.h 28 Aug 2022 16:52:02 -0000
> @@ -43,8 +43,8 @@
> * every 500ms through the pr_slowtimo for timer based actions.
> *
> * Protocols pass data between themselves as chains of mbufs using
> - * the pr_input and pr_output hooks. Pr_input passes data up (towards
> - * UNIX) and pr_output passes it down (towards the imps); control
> + * the pr_input and pr_send hooks. Pr_input passes data up (towards
> + * UNIX) and pr_send passes it down (towards the imps); control
> * information passes up and down on pr_ctlinput and pr_ctloutput.
> * The protocol is responsible for the space occupied by any the
> * arguments to these entries and must dispose it.
> @@ -86,9 +86,6 @@ struct protosw {
> /* protocol-protocol hooks */
> /* input to protocol (from below) */
> int (*pr_input)(struct mbuf **, int *, int, int);
> - /* output to protocol (from above) */
> - int (*pr_output)(struct mbuf *, struct socket *, struct sockaddr *,
> - struct mbuf *);
> /* control input (from below) */
> void (*pr_ctlinput)(int, struct sockaddr *, u_int, void *);
> /* control output (from above) */
>