delete OURFINNOTACKED
[unix-history] / usr / src / sys / netinet / udp_usrreq.c
index 5aa6684..3df037f 100644 (file)
@@ -1,4 +1,4 @@
-/*     udp_usrreq.c    4.15    81/12/09        */
+/*     udp_usrreq.c    4.17    81/12/12        */
 
 #include "../h/param.h"
 #include "../h/dir.h"
 
 #include "../h/param.h"
 #include "../h/dir.h"
@@ -39,7 +39,7 @@ udp_input(m0)
 
 COUNT(UDP_INPUT);
        /*
 
 COUNT(UDP_INPUT);
        /*
-        * Get ip and udp header together in first mbuf.
+        * Get IP and UDP header together in first mbuf.
         */
        m = m0;
        if (m->m_len < sizeof (struct udpiphdr) &&
         */
        m = m0;
        if (m->m_len < sizeof (struct udpiphdr) &&
@@ -48,17 +48,15 @@ COUNT(UDP_INPUT);
                goto bad;
        }
        ui = mtod(m, struct udpiphdr *);
                goto bad;
        }
        ui = mtod(m, struct udpiphdr *);
-       if (ui->ui_len > sizeof (struct ip))
+       if (((struct ip *)ui)->ip_hl > (sizeof (struct ip) >> 2))
                ip_stripoptions((struct ip *)ui, (struct mbuf *)0);
 
        /*
                ip_stripoptions((struct ip *)ui, (struct mbuf *)0);
 
        /*
-        * Make mbuf data length reflect udp length.
-        * If not enough data to reflect udp length, drop.
+        * Make mbuf data length reflect UDP length.
+        * If not enough data to reflect UDP length, drop.
         */
        ulen = ntohs((u_short)ui->ui_ulen);
        len = sizeof (struct udphdr) + ulen;
         */
        ulen = ntohs((u_short)ui->ui_ulen);
        len = sizeof (struct udphdr) + ulen;
-printf("len %d, ulen %d, ((struct ip *)ui)->ip_len %d\n",
-    len, ulen, ((struct ip *)ui)->ip_len);
        if (((struct ip *)ui)->ip_len != len) {
                if (len > ((struct ip *)ui)->ip_len) {
                        udpstat.udps_badlen++;
        if (((struct ip *)ui)->ip_len != len) {
                if (len > ((struct ip *)ui)->ip_len) {
                        udpstat.udps_badlen++;
@@ -69,7 +67,7 @@ printf("len %d, ulen %d, ((struct ip *)ui)->ip_len %d\n",
        }
 
        /*
        }
 
        /*
-        * Checksum extended udp header and data.
+        * Checksum extended UDP header and data.
         */
        if (udpcksum) {
                ui->ui_next = ui->ui_prev = 0;
         */
        if (udpcksum) {
                ui->ui_next = ui->ui_prev = 0;
@@ -99,9 +97,6 @@ printf("len %d, ulen %d, ((struct ip *)ui)->ip_len %d\n",
        udp_in.sin_addr = ui->ui_src;
        m->m_len -= sizeof (struct udpiphdr);
        m->m_off += sizeof (struct udpiphdr);
        udp_in.sin_addr = ui->ui_src;
        m->m_len -= sizeof (struct udpiphdr);
        m->m_off += sizeof (struct udpiphdr);
-printf("sbappendaddr called with m %x m->m_len %d m->m_off %d\n",
-m, m->m_len, m->m_off);
-printf("*mtod(m, char *) %x\n", *mtod(m, char *));
        if (sbappendaddr(&inp->inp_socket->so_rcv, (struct sockaddr *)&udp_in, m) == 0)
                goto bad;
        sorwakeup(inp->inp_socket);
        if (sbappendaddr(&inp->inp_socket->so_rcv, (struct sockaddr *)&udp_in, m) == 0)
                goto bad;
        sorwakeup(inp->inp_socket);
@@ -115,11 +110,9 @@ udp_ctlinput(m)
 {
 
 COUNT(UDP_CTLINPUT);
 {
 
 COUNT(UDP_CTLINPUT);
-       printf("udp_ctlinput\n");
        m_freem(m);
 }
 
        m_freem(m);
 }
 
-/*ARGSUSED*/
 udp_output(inp, m0)
        struct inpcb *inp;
        struct mbuf *m0;
 udp_output(inp, m0)
        struct inpcb *inp;
        struct mbuf *m0;
@@ -131,7 +124,7 @@ udp_output(inp, m0)
 COUNT(UDP_OUTPUT);
        /*
         * Calculate data length and get a mbuf
 COUNT(UDP_OUTPUT);
        /*
         * Calculate data length and get a mbuf
-        * for udp and ip headers.
+        * for UDP and IP headers.
         */
        for (m = m0; m; m = m->m_next)
                len += m->m_len;
         */
        for (m = m0; m; m = m->m_next)
                len += m->m_len;
@@ -140,7 +133,7 @@ COUNT(UDP_OUTPUT);
                goto bad;
 
        /*
                goto bad;
 
        /*
-        * Fill in mbuf with extended udp header
+        * Fill in mbuf with extended UDP header
         * and addresses and length put into network format.
         */
        m->m_off = MMAXOFF - sizeof (struct udpiphdr);
         * and addresses and length put into network format.
         */
        m->m_off = MMAXOFF - sizeof (struct udpiphdr);
@@ -170,7 +163,6 @@ bad:
        m_freem(m);
 }
 
        m_freem(m);
 }
 
-/*ARGSUSED*/
 udp_usrreq(so, req, m, addr)
        struct socket *so;
        int req;
 udp_usrreq(so, req, m, addr)
        struct socket *so;
        int req;
@@ -183,7 +175,6 @@ udp_usrreq(so, req, m, addr)
 COUNT(UDP_USRREQ);
        if (inp == 0 && req != PRU_ATTACH)
                return (EINVAL);
 COUNT(UDP_USRREQ);
        if (inp == 0 && req != PRU_ATTACH)
                return (EINVAL);
-printf("udp_usrreq %d\n", req);
        switch (req) {
 
        case PRU_ATTACH:
        switch (req) {
 
        case PRU_ATTACH:
@@ -225,20 +216,15 @@ printf("udp_usrreq %d\n", req);
 
        case PRU_SEND:
                if (addr) {
 
        case PRU_SEND:
                if (addr) {
-                       if (inp->inp_faddr.s_addr) {
-                               printf("EISCONN\n");
+                       if (inp->inp_faddr.s_addr)
                                return (EISCONN);
                                return (EISCONN);
-                       }
                        error = in_pcbconnect(inp, (struct sockaddr_in *)addr);
                        error = in_pcbconnect(inp, (struct sockaddr_in *)addr);
-                       if (error) {
-                               printf("pcbconnect error %d\n", error);
+                       if (error)
                                return (error);
                                return (error);
-                       }
                } else {
                        if (inp->inp_faddr.s_addr == 0)
                                return (ENOTCONN);
                }
                } else {
                        if (inp->inp_faddr.s_addr == 0)
                                return (ENOTCONN);
                }
-printf("to udp_output\n");
                udp_output(inp, m);
                if (addr)
                        in_pcbdisconnect(inp);
                udp_output(inp, m);
                if (addr)
                        in_pcbdisconnect(inp);