The branch main has been updated by glebius:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=32920f038a3a0f6778983e15228103e4da9c3007

commit 32920f038a3a0f6778983e15228103e4da9c3007
Author:     Gleb Smirnoff <[email protected]>
AuthorDate: 2022-12-07 19:51:48 +0000
Commit:     Gleb Smirnoff <[email protected]>
CommitDate: 2022-12-07 19:51:48 +0000

    udp: inline udp_output() into udp_send()
---
 sys/netinet/udp_usrreq.c | 59 ++++++++++++++++++++----------------------------
 1 file changed, 24 insertions(+), 35 deletions(-)

diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 44f7b949c140..011e20692935 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -164,8 +164,6 @@ VNET_PCPUSTAT_SYSUNINIT(udpstat);
 #endif /* VIMAGE */
 #ifdef INET
 static void    udp_detach(struct socket *so);
-static int     udp_output(struct inpcb *, struct mbuf *, struct sockaddr *,
-                   struct mbuf *, struct thread *, int);
 #endif
 
 INPCBSTORAGE_DEFINE(udpcbstor, udpcb, "udpinp", "udp_inpcb", "udp", "udphash");
@@ -1037,21 +1035,22 @@ udp_v4mapped_pktinfo(struct cmsghdr *cm, struct 
sockaddr_in * src,
 
        return (0);
 }
-#endif
+#endif /* INET6 */
 
-static int
-udp_output(struct inpcb *inp, struct mbuf *m, struct sockaddr *addr,
-    struct mbuf *control, struct thread *td, int flags)
+pr_send_t udp_send;                    /* shared with udp6_usrreq.c */
+int
+udp_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
+    struct mbuf *control, struct thread *td)
 {
+       struct inpcb *inp;
        struct udpiphdr *ui;
-       int len = m->m_pkthdr.len;
+       int len, error = 0;
        struct in_addr faddr, laddr;
        struct cmsghdr *cm;
        struct inpcbinfo *pcbinfo;
        struct sockaddr_in *sin, src;
        struct epoch_tracker et;
        int cscov_partial = 0;
-       int error = 0;
        int ipflags = 0;
        u_short fport, lport;
        u_char tos;
@@ -1060,6 +1059,22 @@ udp_output(struct inpcb *inp, struct mbuf *m, struct 
sockaddr *addr,
        uint32_t flowid = 0;
        uint8_t flowtype = M_HASHTYPE_NONE;
 
+       inp = sotoinpcb(so);
+       KASSERT(inp != NULL, ("udp_send: inp == NULL"));
+
+       if (addr != NULL) {
+               if (addr->sa_family != AF_INET)
+                       error = EAFNOSUPPORT;
+               else if (addr->sa_len != sizeof(struct sockaddr_in))
+                       error = EINVAL;
+               if (__predict_false(error != 0)) {
+                       m_freem(control);
+                       m_freem(m);
+                       return (error);
+               }
+       }
+
+       len = m->m_pkthdr.len;
        if (len + sizeof(struct udpiphdr) > IP_MAXPACKET) {
                if (control)
                        m_freem(control);
@@ -1071,7 +1086,7 @@ udp_output(struct inpcb *inp, struct mbuf *m, struct 
sockaddr *addr,
        sin = (struct sockaddr_in *)addr;
 
        /*
-        * udp_output() may need to temporarily bind or connect the current
+        * udp_send() may need to temporarily bind or connect the current
         * inpcb.  As such, we don't know up front whether we will need the
         * pcbinfo lock or not.  Do any work to decide what is needed up
         * front before acquiring any locks.
@@ -1640,32 +1655,6 @@ udp_disconnect(struct socket *so)
        INP_WUNLOCK(inp);
        return (0);
 }
-
-pr_send_t udp_send;                    /* shared with udp6_usrreq.c */
-int
-udp_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
-    struct mbuf *control, struct thread *td)
-{
-       struct inpcb *inp;
-       int error;
-
-       inp = sotoinpcb(so);
-       KASSERT(inp != NULL, ("udp_send: inp == NULL"));
-
-       if (addr != NULL) {
-               error = 0;
-               if (addr->sa_family != AF_INET)
-                       error = EAFNOSUPPORT;
-               else if (addr->sa_len != sizeof(struct sockaddr_in))
-                       error = EINVAL;
-               if (__predict_false(error != 0)) {
-                       m_freem(control);
-                       m_freem(m);
-                       return (error);
-               }
-       }
-       return (udp_output(inp, m, addr, control, td, flags));
-}
 #endif /* INET */
 
 int

Reply via email to