trailing comment after #else or #endif
[unix-history] / usr / src / sys / netinet / udp_usrreq.c
index 6069cf3..c957a43 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)udp_usrreq.c        7.28 (Berkeley) %G%
+ *     @(#)udp_usrreq.c        7.31 (Berkeley) %G%
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -44,7 +44,6 @@ int   udpcksum = 1;
 #else
 int    udpcksum = 0;           /* XXX */
 #endif
 #else
 int    udpcksum = 0;           /* XXX */
 #endif
-int    udp_ttl = UDP_TTL;
 
 struct sockaddr_in udp_in = { sizeof(udp_in), AF_INET };
 
 
 struct sockaddr_in udp_in = { sizeof(udp_in), AF_INET };
 
@@ -120,7 +119,7 @@ udp_input(m, iphlen)
        }
 
        if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) ||
        }
 
        if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) ||
-           in_broadcast(ip->ip_dst)) {
+           in_broadcast(ip->ip_dst, m->m_pkthdr.rcvif)) {
                struct socket *last;
                /*
                 * Deliver a multicast or broadcast datagram to *all* sockets
                struct socket *last;
                /*
                 * Deliver a multicast or broadcast datagram to *all* sockets
@@ -465,7 +464,7 @@ udp_usrreq(so, req, m, addr, control)
                error = soreserve(so, udp_sendspace, udp_recvspace);
                if (error)
                        break;
                error = soreserve(so, udp_sendspace, udp_recvspace);
                if (error)
                        break;
-               ((struct inpcb *) so->so_pcb)->inp_ip.ip_ttl = udp_ttl;
+               ((struct inpcb *) so->so_pcb)->inp_ip.ip_ttl = ip_defttl;
                break;
 
        case PRU_DETACH:
                break;
 
        case PRU_DETACH:
@@ -576,3 +575,29 @@ udp_detach(inp)
        in_pcbdetach(inp);
        splx(s);
 }
        in_pcbdetach(inp);
        splx(s);
 }
+
+/*
+ * Sysctl for udp variables.
+ */
+udp_sysctl(name, namelen, oldp, oldlenp, newp, newlen)
+       int *name;
+       u_int namelen;
+       void *oldp;
+       size_t *oldlenp;
+       void *newp;
+       size_t newlen;
+{
+       extern int ip_ttl;
+
+       /* all sysctl names at this level are terminal */
+       if (namelen != 1)
+               return (ENOTDIR);
+
+       switch (name[0]) {
+       case UDPCTL_CHECKSUM:
+               return (sysctl_int(oldp, oldlenp, newp, newlen, &udpcksum));
+       default:
+               return (ENOPROTOOPT);
+       }
+       /* NOTREACHED */
+}