Hi, Since we have no raw_usrreq anymore, we can retire pr_output. pfkeyv2 and route can call ther output functions directly.
ok? 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) */