Clean up the networking code before I parallelize the routing code.
authorJeffrey Hsu <hsu@dragonflybsd.org>
Tue, 28 Dec 2004 08:09:59 +0000 (08:09 +0000)
committerJeffrey Hsu <hsu@dragonflybsd.org>
Tue, 28 Dec 2004 08:09:59 +0000 (08:09 +0000)
sys/kern/uipc_domain.c
sys/net/if_ethersubr.c
sys/net/if_var.h
sys/net/radix.c
sys/net/route.c
sys/net/rtsock.c
sys/netinet/if_ether.c
sys/netinet/ip_divert.c
sys/netinet/ip_input.c
sys/netinet/ip_output.c
sys/netinet/tcp_output.c

index a082cd1..21e3fd9 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)uipc_domain.c       8.2 (Berkeley) 10/18/93
  * $FreeBSD: src/sys/kern/uipc_domain.c,v 1.22.2.1 2001/07/03 11:01:37 ume Exp $
- * $DragonFly: src/sys/kern/uipc_domain.c,v 1.6 2004/12/21 02:42:41 hsu Exp $
+ * $DragonFly: src/sys/kern/uipc_domain.c,v 1.7 2004/12/28 08:09:59 hsu Exp $
  */
 
 #include <sys/param.h>
@@ -85,10 +85,9 @@ net_init_domain(struct domain *dp)
        if (dp->dom_init)
                (*dp->dom_init)();
        for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) {
-               if (pr->pr_usrreqs == 0)
+               if (pr->pr_usrreqs == NULL)
                        panic("domaininit: %ssw[%d] has no usrreqs!",
-                             dp->dom_name, 
-                             (int)(pr - dp->dom_protosw));
+                             dp->dom_name, pr - dp->dom_protosw);
                if (pr->pr_init)
                        (*pr->pr_init)();
        }
@@ -149,9 +148,7 @@ domaininit(void *dummy)
 
 
 struct protosw *
-pffindtype(family, type)
-       int family;
-       int type;
+pffindtype(int family, int type)
 {
        struct domain *dp;
        struct protosw *pr;
@@ -159,46 +156,43 @@ pffindtype(family, type)
        for (dp = domains; dp; dp = dp->dom_next)
                if (dp->dom_family == family)
                        goto found;
-       return (0);
+       return (NULL);
+
 found:
        for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
                if (pr->pr_type && pr->pr_type == type)
                        return (pr);
-       return (0);
+       return (NULL);
 }
 
 struct protosw *
-pffindproto(family, protocol, type)
-       int family;
-       int protocol;
-       int type;
+pffindproto(int family, int protocol, int type)
 {
        struct domain *dp;
        struct protosw *pr;
-       struct protosw *maybe = 0;
+       struct protosw *maybe = NULL;
 
        if (family == 0)
-               return (0);
+               return (NULL);
        for (dp = domains; dp; dp = dp->dom_next)
                if (dp->dom_family == family)
                        goto found;
-       return (0);
+       return (NULL);
+
 found:
        for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) {
                if ((pr->pr_protocol == protocol) && (pr->pr_type == type))
                        return (pr);
 
                if (type == SOCK_RAW && pr->pr_type == SOCK_RAW &&
-                   pr->pr_protocol == 0 && maybe == (struct protosw *)0)
+                   pr->pr_protocol == 0 && maybe == (struct protosw *)NULL)
                        maybe = pr;
        }
        return (maybe);
 }
 
 void
-pfctlinput(cmd, sa)
-       int cmd;
-       struct sockaddr *sa;
+pfctlinput(int cmd, struct sockaddr *sa)
 {
        struct domain *dp;
        struct protosw *pr;
@@ -206,14 +200,11 @@ pfctlinput(cmd, sa)
        for (dp = domains; dp; dp = dp->dom_next)
                for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
                        if (pr->pr_ctlinput)
-                               (*pr->pr_ctlinput)(cmd, sa, (void *)0);
+                               (*pr->pr_ctlinput)(cmd, sa, (void *)NULL);
 }
 
 void
-pfctlinput2(cmd, sa, ctlparam)
-       int cmd;
-       struct sockaddr *sa;
-       void *ctlparam;
+pfctlinput2(int cmd, struct sockaddr *sa, void *ctlparam)
 {
        struct domain *dp;
        struct protosw *pr;
@@ -236,8 +227,7 @@ pfctlinput2(cmd, sa, ctlparam)
 }
 
 static void
-pfslowtimo(arg)
-       void *arg;
+pfslowtimo(void *arg)
 {
        struct domain *dp;
        struct protosw *pr;
@@ -250,8 +240,7 @@ pfslowtimo(arg)
 }
 
 static void
-pffasttimo(arg)
-       void *arg;
+pffasttimo(void *arg)
 {
        struct domain *dp;
        struct protosw *pr;
index 1ebe67a..df184ea 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)if_ethersubr.c      8.1 (Berkeley) 6/10/93
  * $FreeBSD: src/sys/net/if_ethersubr.c,v 1.70.2.33 2003/04/28 15:45:53 archie Exp $
- * $DragonFly: src/sys/net/if_ethersubr.c,v 1.23 2004/12/24 04:54:49 dillon Exp $
+ * $DragonFly: src/sys/net/if_ethersubr.c,v 1.24 2004/12/28 08:09:59 hsu Exp $
  */
 
 #include "opt_atalk.h"
@@ -112,8 +112,8 @@ void        (*ng_ether_detach_p)(struct ifnet *ifp);
 int    (*vlan_input_p)(struct ether_header *eh, struct mbuf *m);
 int    (*vlan_input_tag_p)(struct mbuf *m, uint16_t t);
 
-static int     ether_output(struct ifnet *, struct mbuf *, struct sockaddr *,
-                            struct rtentry *);
+static int ether_output(struct ifnet *, struct mbuf *, struct sockaddr *,
+                       struct rtentry *);
 
 /*
  * bridge support
@@ -124,19 +124,25 @@ bdg_forward_t *bdg_forward_ptr;
 bdgtakeifaces_t *bdgtakeifaces_ptr;
 struct bdg_softc *ifp2sc;
 
-static int ether_resolvemulti(struct ifnet *, struct sockaddr **,
-               struct sockaddr *);
-const uint8_t  etherbroadcastaddr[ETHER_ADDR_LEN] = {
+static int ether_resolvemulti(struct ifnet *, struct sockaddr **,
+                             struct sockaddr *);
+
+const uint8_t etherbroadcastaddr[ETHER_ADDR_LEN] = {
        0xff, 0xff, 0xff, 0xff, 0xff, 0xff
 };
 
-#define gotoerr(e) do { error = (e); goto bad;} while (0)
+#define gotoerr(e) do { error = (e); goto bad; } while (0)
 #define IFP2AC(ifp) ((struct arpcom *)(ifp))
 
-int
-ether_ipfw_chk(struct mbuf **m0, struct ifnet *dst,
-       struct ip_fw **rule, struct ether_header *eh, int shared);
+static boolean_t ether_ipfw_chk(struct mbuf **m0, struct ifnet *dst,
+                               struct ip_fw **rule, struct ether_header *eh,
+                               boolean_t shared);
+
 static int ether_ipfw;
+SYSCTL_DECL(_net_link);
+SYSCTL_NODE(_net_link, IFT_ETHER, ether, CTLFLAG_RW, 0, "Ethernet");
+SYSCTL_INT(_net_link_ether, OID_AUTO, ipfw, CTLFLAG_RW,
+          &ether_ipfw, 0, "Pass ether pkts through firewall");
 
 /*
  * Ethernet output routine.
@@ -161,11 +167,13 @@ ether_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
 
        M_PREPEND(m, sizeof(struct ether_header), MB_DONTWAIT);
        if (m == NULL)
-               gotoerr(ENOBUFS);
+               return (ENOBUFS);
        eh = mtod(m, struct ether_header *);
        edst = eh->ether_dhost;
 
-       /* Fill in the destination ethernet address and frame type. */
+       /*
+        * Fill in the destination ethernet address and frame type.
+        */
        switch (dst->sa_family) {
 #ifdef INET
        case AF_INET:
@@ -177,7 +185,7 @@ ether_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
 #ifdef INET6
        case AF_INET6:
                if (!nd6_storelladdr(&ac->ac_if, rt, m, dst, edst))
-                       return (0);             /* Something bad happened. */
+                       return (0);             /* Something bad happenned. */
                eh->ether_type = htons(ETHERTYPE_IPV6);
                break;
 #endif
@@ -213,12 +221,16 @@ ether_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
                        struct llc llc;
 
                        M_PREPEND(m, sizeof(struct llc), MB_DONTWAIT);
+                       eh = mtod(m, struct ether_header *);
+                       edst = eh->ether_dhost;
                        llc.llc_dsap = llc.llc_ssap = LLC_SNAP_LSAP;
                        llc.llc_control = LLC_UI;
                        bcopy(at_org_code, llc.llc_snap_org_code,
                              sizeof at_org_code);
                        llc.llc_snap_ether_type = htons(ETHERTYPE_AT);
-                       bcopy(&llc, mtod(m, caddr_t), sizeof(struct llc));
+                       bcopy(&llc,
+                             mtod(m, caddr_t) + sizeof(struct ether_header),
+                             sizeof(struct llc));
                        eh->ether_type = htons(m->m_pkthdr.len);
                        hlen = sizeof(struct llc) + ETHER_HDR_LEN;
                } else {
@@ -228,7 +240,7 @@ ether_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
                        return (0);
                break;
          }
-#endif /* NETATALK */
+#endif
 #ifdef NS
        case AF_NS:
                switch(ns_nettype) {
@@ -241,8 +253,10 @@ ether_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
                        break;
                case 0xe0e0:    /* Novell 802.2 and Token-Ring */
                        M_PREPEND(m, 3, MB_DONTWAIT);
+                       eh = mtod(m, struct ether_header *);
+                       edst = eh->ether_dhost;
                        eh->ether_type = htons(m->m_pkthdr.len);
-                       cp = mtod(m, u_char *);
+                       cp = mtod(m, u_char *) + sizeof(struct ether_header);
                        *cp++ = 0xE0;
                        *cp++ = 0xE0;
                        *cp++ = 0x03;
@@ -264,7 +278,7 @@ ether_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
                if (bcmp(edst, &ns_broadhost, ETHER_ADDR_LEN) == 0)
                        m->m_flags |= M_BCAST;
                break;
-#endif /* NS */
+#endif
        case pseudo_AF_HDRCMPLT:
        case AF_UNSPEC:
                loop_copy = -1; /* if this is for us, don't do it */
@@ -351,15 +365,18 @@ ether_output_frame(struct ifnet *ifp, struct mbuf *m)
        int s;
 
        /* Extract info from dummynet tag, ignore others */
-       for (; m->m_type == MT_TAG; m = m->m_next)
-               if (m->m_flags == PACKET_TAG_DUMMYNET)
+       while (m->m_type == MT_TAG) {
+               if (m->m_flags == PACKET_TAG_DUMMYNET) {
                        rule = ((struct dn_pkt *)m)->rule;
-
-       if (rule)       /* packet was already bridged */
+                       break;
+               }
+               m = m->m_next;
+       }
+       if (rule != NULL)               /* packet was already bridged */
                goto no_bridge;
 
-       if (BDG_ACTIVE(ifp) ) {
-               struct ether_header *eh; /* a ptr suffices */
+       if (BDG_ACTIVE(ifp)) {
+               struct ether_header *eh;        /* a pointer suffices */
 
                m->m_pkthdr.rcvif = NULL;
                eh = mtod(m, struct ether_header *);
@@ -378,13 +395,14 @@ no_bridge:
                eh = mtod(m, struct ether_header *);
                save_eh = *eh;
                m_adj(m, ETHER_HDR_LEN);
-               if (ether_ipfw_chk(&m, ifp, &rule, eh, 0) == 0) {
-                       if (m) {
+               if (!ether_ipfw_chk(&m, ifp, &rule, eh, FALSE)) {
+                       if (m != NULL) {
                                m_freem(m);
                                return ENOBUFS; /* pkt dropped */
                        } else
                                return 0;       /* consumed e.g. in a pipe */
                }
+               eh = mtod(m, struct ether_header *);
                /* packet was ok, restore the ethernet header */
                if ((void *)(eh + 1) == (void *)m->m_data) {
                        m->m_data -= ETHER_HDR_LEN ;
@@ -395,7 +413,7 @@ no_bridge:
                        if (m == NULL) /* nope... */
                                return ENOBUFS;
                        bcopy(&save_eh, mtod(m, struct ether_header *),
-                           ETHER_HDR_LEN);
+                             ETHER_HDR_LEN);
                }
        }
 
@@ -411,35 +429,35 @@ no_bridge:
 
 /*
  * ipfw processing for ethernet packets (in and out).
- * The second parameter is NULL from ether_demux, and ifp from
- * ether_output_frame. This section of code could be used from
+ * The second parameter is NULL from ether_demux(), and ifp from
+ * ether_output_frame(). This section of code could be used from
  * bridge.c as well as long as we use some extra info
- * to distinguish that case from ether_output_frame();
+ * to distinguish that case from ether_output_frame().
  */
-int
+static boolean_t
 ether_ipfw_chk(
        struct mbuf **m0,
        struct ifnet *dst,
        struct ip_fw **rule,
        struct ether_header *eh,
-       int shared)
+       boolean_t shared)
 {
        struct ether_header save_eh = *eh;      /* might be a ptr in m */
        struct ip_fw_args args;
        int i;
 
        if (*rule != NULL && fw_one_pass)
-               return 1; /* dummynet packet, already partially processed */
+               return TRUE; /* dummynet packet, already partially processed */
 
        /*
-        * I need some amt of data to be contiguous, and in case others need
-        * the packet (shared==1) also better be in the first mbuf.
+        * I need some amount of data to be contiguous, and in case others
+        * need the packet (shared==TRUE), it also better be in the first mbuf.
         */
        i = min((*m0)->m_pkthdr.len, max_protohdr);
        if (shared || (*m0)->m_len < i) {
                *m0 = m_pullup(*m0, i);
                if (*m0 == NULL)
-                       return 0;
+                       return FALSE;
        }
 
        args.m = *m0;           /* the packet we are looking at         */
@@ -452,11 +470,11 @@ ether_ipfw_chk(
        *m0 = args.m;
        *rule = args.rule;
 
-       if ((i & IP_FW_PORT_DENY_FLAG) || *m0 == NULL) /* drop */
-               return 0;
+       if ((i & IP_FW_PORT_DENY_FLAG) || *m0 == NULL)  /* drop */
+               return FALSE;
 
-       if (i == 0) /* a PASS rule.  */
-               return 1;
+       if (i == 0)                                     /* a PASS rule.  */
+               return TRUE;
 
        if (DUMMYNET_LOADED && (i & IP_FW_PORT_DYNT_FLAG)) {
                /*
@@ -468,10 +486,10 @@ ether_ipfw_chk(
                if (shared) {
                        m = m_copypacket(*m0, MB_DONTWAIT);
                        if (m == NULL)
-                               return 0;
+                               return FALSE;
                } else {
-                       m = *m0 ; /* pass the original to dummynet */
-                       *m0 = NULL ; /* and nothing back to the caller */
+                       m = *m0 ;       /* pass the original to dummynet */
+                       *m0 = NULL ;    /* and nothing back to the caller */
                }
                /*
                 * Prepend the header, optimize for the common case of
@@ -483,20 +501,20 @@ ether_ipfw_chk(
                        m->m_pkthdr.len += ETHER_HDR_LEN ;
                } else {
                        M_PREPEND(m, ETHER_HDR_LEN, MB_DONTWAIT);
-                       if (m == NULL) /* nope... */
-                               return 0;
+                       if (m == NULL)
+                               return FALSE;
                        bcopy(&save_eh, mtod(m, struct ether_header *),
-                           ETHER_HDR_LEN);
+                             ETHER_HDR_LEN);
                }
                ip_dn_io_ptr(m, (i & 0xffff),
-                       dst ? DN_TO_ETH_OUT: DN_TO_ETH_DEMUX, &args);
-               return 0;
+                            dst ? DN_TO_ETH_OUT: DN_TO_ETH_DEMUX, &args);
+               return FALSE;
        }
        /*
         * XXX at some point add support for divert/forward actions.
         * If none of the above matches, we have to drop the pkt.
         */
-       return 0;
+       return FALSE;
 }
 
 /*
@@ -568,7 +586,7 @@ ether_input(struct ifnet *ifp, struct ether_header *eh, struct mbuf *m)
        }
 
        /* Check for bridging mode */
-       if (BDG_ACTIVE(ifp) ) {
+       if (BDG_ACTIVE(ifp)) {
                struct ifnet *bif;
 
                /* Check with bridging code */
@@ -613,18 +631,20 @@ ether_demux(struct ifnet *ifp, struct ether_header *eh, struct mbuf *m)
 {
        int isr;
        u_short ether_type;
-#if defined(NETATALK)
+       struct ip_fw *rule = NULL;
+#ifdef NETATALK
        struct llc *l;
 #endif
-       struct ip_fw *rule = NULL;
 
        /* Extract info from dummynet tag, ignore others */
-       for (;m->m_type == MT_TAG; m = m->m_next)
+       while (m->m_type == MT_TAG) {
                if (m->m_flags == PACKET_TAG_DUMMYNET) {
                        rule = ((struct dn_pkt *)m)->rule;
                        ifp = m->m_next->m_pkthdr.rcvif;
+                       break;
                }
-
+               m = m->m_next;
+       }
        if (rule)       /* packet was already bridged */
                goto post_stats;
 
@@ -652,17 +672,17 @@ ether_demux(struct ifnet *ifp, struct ether_header *eh, struct mbuf *m)
                        m->m_flags |= M_BCAST;
                else
                        m->m_flags |= M_MCAST;
-       }
-       if (m->m_flags & (M_BCAST|M_MCAST))
                ifp->if_imcasts++;
+       }
 
 post_stats:
        if (IPFW_LOADED && ether_ipfw != 0) {
-               if (ether_ipfw_chk(&m, NULL, &rule, eh, 0 ) == 0) {
-                       if (m)
+               if (!ether_ipfw_chk(&m, NULL, &rule, eh, FALSE)) {
+                       if (m != NULL)
                                m_freem(m);
                        return;
                }
+               eh = mtod(m, struct ether_header *);
        }
 
        ether_type = ntohs(eh->ether_type);
@@ -684,6 +704,13 @@ post_stats:
                isr = NETISR_ARP;
                break;
 #endif
+
+#ifdef INET6
+       case ETHERTYPE_IPV6:
+               isr = NETISR_IPV6;
+               break;
+#endif
+
 #ifdef IPX
        case ETHERTYPE_IPX:
                if (ef_inputp && ef_inputp(ifp, eh, m) == 0)
@@ -691,17 +718,14 @@ post_stats:
                isr = NETISR_IPX;
                break;
 #endif
-#ifdef INET6
-       case ETHERTYPE_IPV6:
-               isr = NETISR_IPV6;
-               break;
-#endif
+
 #ifdef NS
        case 0x8137: /* Novell Ethernet_II Ethernet TYPE II */
                isr = NETISR_NS;
                break;
 
-#endif /* NS */
+#endif
+
 #ifdef NETATALK
        case ETHERTYPE_AT:
                isr = NETISR_ATALK1;
@@ -709,22 +733,22 @@ post_stats:
        case ETHERTYPE_AARP:
                isr = NETISR_AARP;
                break;
-#endif /* NETATALK */
+#endif
+
        case ETHERTYPE_VLAN:
-               /* XXX lock ? */
                if (vlan_input_p != NULL)
                        (*vlan_input_p)(eh, m);
                else {
                        m->m_pkthdr.rcvif->if_noproto++;
                        m_freem(m);
                }
-               /* XXX unlock ? */
                return;
+
        default:
 #ifdef IPX
                if (ef_inputp && ef_inputp(ifp, eh, m) == 0)
                        return;
-#endif /* IPX */
+#endif
 #ifdef NS
                checksum = mtod(m, ushort *);
                /* Novell 802.3 */
@@ -738,7 +762,7 @@ post_stats:
                        isr = NETISR_NS;
                        break;
                }
-#endif /* NS */
+#endif
 #ifdef NETATALK
                if (ether_type > ETHERMTU)
                        goto dropanyway;
@@ -762,7 +786,7 @@ post_stats:
                        }
                }
 dropanyway:
-#endif /* NETATALK */
+#endif
                if (ng_ether_input_orphan_p != NULL)
                        (*ng_ether_input_orphan_p)(ifp, m, eh);
                else
@@ -788,17 +812,17 @@ ether_ifattach_bpf(struct ifnet *ifp, uint8_t *lla, u_int dlt, u_int hdrlen)
        struct ifaddr *ifa;
        struct sockaddr_dl *sdl;
 
-       ifp->if_output = ether_output;
-       ifp->if_input = ether_input_internal;
        ifp->if_type = IFT_ETHER;
        ifp->if_addrlen = ETHER_ADDR_LEN;
-       ifp->if_broadcastaddr = etherbroadcastaddr;
-       ifp->if_hdrlen = 14;
+       ifp->if_hdrlen = ETHER_HDR_LEN;
        if_attach(ifp);
        ifp->if_mtu = ETHERMTU;
-       ifp->if_resolvemulti = ether_resolvemulti;
        if (ifp->if_baudrate == 0)
                ifp->if_baudrate = 10000000;
+       ifp->if_output = ether_output;
+       ifp->if_input = ether_input_internal;
+       ifp->if_resolvemulti = ether_resolvemulti;
+       ifp->if_broadcastaddr = etherbroadcastaddr;
        ifa = ifnet_addrs[ifp->if_index - 1];
        KASSERT(ifa != NULL, ("%s: no lladdr!\n", __FUNCTION__));
        sdl = (struct sockaddr_dl *)ifa->ifa_addr;
@@ -840,11 +864,6 @@ ether_ifdetach(struct ifnet *ifp)
                bdgtakeifaces_ptr();
 }
 
-SYSCTL_DECL(_net_link);
-SYSCTL_NODE(_net_link, IFT_ETHER, ether, CTLFLAG_RW, 0, "Ethernet");
-SYSCTL_INT(_net_link_ether, OID_AUTO, ipfw, CTLFLAG_RW,
-           &ether_ipfw,0,"Pass ether pkts through firewall");
-
 int
 ether_ioctl(struct ifnet *ifp, int command, caddr_t data)
 {
@@ -964,7 +983,7 @@ ether_resolvemulti(
                if (!IN_MULTICAST(ntohl(sin->sin_addr.s_addr)))
                        return EADDRNOTAVAIL;
                MALLOC(sdl, struct sockaddr_dl *, sizeof *sdl, M_IFMADDR,
-                      M_WAITOK|M_ZERO);
+                      M_WAITOK | M_ZERO);
                sdl->sdl_len = sizeof *sdl;
                sdl->sdl_family = AF_LINK;
                sdl->sdl_index = ifp->if_index;
@@ -991,7 +1010,7 @@ ether_resolvemulti(
                if (!IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr))
                        return EADDRNOTAVAIL;
                MALLOC(sdl, struct sockaddr_dl *, sizeof *sdl, M_IFMADDR,
-                      M_WAITOK|M_ZERO);
+                      M_WAITOK | M_ZERO);
                sdl->sdl_len = sizeof *sdl;
                sdl->sdl_family = AF_LINK;
                sdl->sdl_index = ifp->if_index;
index 4e09ec6..6512c40 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     From: @(#)if.h  8.1 (Berkeley) 6/10/93
  * $FreeBSD: src/sys/net/if_var.h,v 1.18.2.16 2003/04/15 18:11:19 fjoe Exp $
- * $DragonFly: src/sys/net/if_var.h,v 1.19 2004/12/21 02:54:14 hsu Exp $
+ * $DragonFly: src/sys/net/if_var.h,v 1.20 2004/12/28 08:09:59 hsu Exp $
  */
 
 #ifndef        _NET_IF_VAR_H_
@@ -525,7 +525,6 @@ struct      ifaddr *ifa_ifwithdstaddr(struct sockaddr *);
 struct ifaddr *ifa_ifwithnet(struct sockaddr *);
 struct ifaddr *ifa_ifwithroute(int, struct sockaddr *, struct sockaddr *);
 struct ifaddr *ifaof_ifpforaddr(struct sockaddr *, struct ifnet *);
-void   ifafree(struct ifaddr *);
 
 struct ifmultiaddr *ifmaof_ifpforaddr(struct sockaddr *, struct ifnet *);
 int    if_simloop(struct ifnet *ifp, struct mbuf *m, int af, int hlen);
index 5a33bfd..7ae4100 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)radix.c     8.4 (Berkeley) 11/2/94
  * $FreeBSD: src/sys/net/radix.c,v 1.20.2.3 2002/04/28 05:40:25 suz Exp $
- * $DragonFly: src/sys/net/radix.c,v 1.8 2004/12/21 02:54:14 hsu Exp $
+ * $DragonFly: src/sys/net/radix.c,v 1.9 2004/12/28 08:09:59 hsu Exp $
  */
 
 /*
@@ -66,18 +66,17 @@ static struct radix_node
     *rn_search(const char *, struct radix_node *),
     *rn_search_m(const char *, struct radix_node *, const char *);
 
-static int max_keylen;
 static struct radix_mask *rn_mkfreelist;
 static struct radix_node_head *mask_rnhead;
-static char *addmask_key;
-static char *rn_zeros, *rn_ones;
 
-#define rn_masktop (mask_rnhead->rnh_treetop)
+static int max_keylen;
+static char *rn_zeros, *rn_ones;
+static char *addmask_key;
 
 static int rn_lexobetter(char *m, char *n);
 static struct radix_mask *
     rn_new_radix_mask(struct radix_node *tt, struct radix_mask *nextmask);
-static int
+static boolean_t
     rn_satisfies_leaf(char *trial, struct radix_node *leaf, int skip);
 
 static __inline struct radix_mask *
@@ -89,7 +88,7 @@ MKGet(struct radix_mask **l)
                m = *l;
                *l = m->rm_next;
        } else {
-               R_Malloc(m, struct radix_mask *, sizeof (*(m)));
+               R_Malloc(m, struct radix_mask *, sizeof *m);
        }
        return m;
 }
@@ -211,7 +210,7 @@ rn_lookup(char *key, char *mask, struct radix_node_head *head)
        return x;
 }
 
-static int
+static boolean_t
 rn_satisfies_leaf(char *trial, struct radix_node *leaf, int skip)
 {
        char *cp = trial, *cp2 = leaf->rn_key, *cp3 = leaf->rn_mask;
@@ -227,8 +226,8 @@ rn_satisfies_leaf(char *trial, struct radix_node *leaf, int skip)
        cp2 += skip;
        for (cp += skip; cp < cplim; cp++, cp2++, cp3++)
                if ((*cp ^ *cp2) & *cp3)
-                       return 0;
-       return 1;
+                       return FALSE;
+       return TRUE;
 }
 
 struct radix_node *
@@ -327,16 +326,16 @@ on1:
 }
 
 #ifdef RN_DEBUG
-int    rn_nodenum;
-struct radix_node *rn_clist;
-int    rn_saveinfo;
-int    rn_debug =  1;
+int rn_nodenum;
+struct radix_node *rn_clist;
+int rn_saveinfo;
+boolean_t rn_debug =  TRUE;
 #endif
 
 static struct radix_node *
 rn_newpair(char *key, int indexbit, struct radix_node nodes[2])
 {
-       struct radix_node *leaf = nodes, *interior = leaf + 1;
+       struct radix_node *leaf = &nodes[0], *interior = &nodes[1];
 
        interior->rn_bit = indexbit;
        interior->rn_bmask = 0x80 >> (indexbit & 0x7);
@@ -370,6 +369,7 @@ rn_insert(char *key, struct radix_node_head *head, boolean_t *dupentry,
        char *cp = key + head_off;
        int b;
        struct radix_node *tt;
+
        /*
         * Find first bit at which the key and t->rn_key differ
         */
@@ -460,15 +460,15 @@ rn_addmask(char *netmask, boolean_t search, int skip)
        if (m0 < last_zeroed)
                bzero(addmask_key + m0, last_zeroed - m0);
        *addmask_key = last_zeroed = mlen;
-       x = rn_search(addmask_key, rn_masktop);
+       x = rn_search(addmask_key, mask_rnhead->rnh_treetop);
        if (bcmp(addmask_key, x->rn_key, mlen) != 0)
                x = NULL;
        if (x != NULL || search)
                return (x);
-       R_Malloc(x, struct radix_node *, max_keylen + 2 * sizeof (*x));
+       R_Malloc(x, struct radix_node *, max_keylen + 2 * (sizeof *x));
        if ((saved_x = x) == NULL)
                return (NULL);
-       bzero(x, max_keylen + 2 * sizeof (*x));
+       bzero(x, max_keylen + 2 * (sizeof *x));
        netmask = cp = (char *)(x + 2);
        bcopy(addmask_key, cp, mlen);
        x = rn_insert(cp, mask_rnhead, &maskduplicated, x);
@@ -1009,16 +1009,17 @@ rn_inithead(void **head, int off)
        struct radix_node_head *rnh;
        struct radix_node *root, *left, *right;
 
-       if (*head)
+       if (*head != NULL)      /* already initialized */
                return (1);
-       R_Malloc(rnh, struct radix_node_head *, sizeof (*rnh));
+
+       R_Malloc(rnh, struct radix_node_head *, sizeof *rnh);
        if (rnh == NULL)
                return (0);
-       bzero(rnh, sizeof (*rnh));
+       bzero(rnh, sizeof *rnh);
        *head = rnh;
 
        root = rn_newpair(rn_zeros, off, rnh->rnh_nodes);
-       right = rnh->rnh_nodes + 2;
+       right = &rnh->rnh_nodes[2];
        root->rn_parent = root;
        root->rn_flags = RNF_ROOT | RNF_ACTIVE;
        root->rn_right = right;
index 6bf6803..99286d7 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)route.c     8.3 (Berkeley) 1/9/95
  * $FreeBSD: src/sys/net/route.c,v 1.59.2.10 2003/01/17 08:04:00 ru Exp $
- * $DragonFly: src/sys/net/route.c,v 1.10 2004/12/21 02:54:14 hsu Exp $
+ * $DragonFly: src/sys/net/route.c,v 1.11 2004/12/28 08:09:59 hsu Exp $
  */
 
 #include "opt_inet.h"
@@ -66,7 +66,7 @@ rtable_init(void **table)
        for (dom = domains; dom; dom = dom->dom_next)
                if (dom->dom_rtattach)
                        dom->dom_rtattach(&table[dom->dom_family],
-                           dom->dom_rtoffset);
+                                         dom->dom_rtoffset);
 }
 
 void
@@ -81,8 +81,9 @@ route_init()
  */
 
 /*
- * Lookup and fill in the ro_rt rtentry field in a route structure given
- * an address in the ro_dst field.
+ * Lookup and fill in the "ro_rt" rtentry field in a route structure given
+ * an address in the ro_dst field.  Always send a report and always
+ * clone routes.
  */
 void
 rtalloc(struct route *ro)
@@ -90,29 +91,30 @@ rtalloc(struct route *ro)
        rtalloc_ign(ro, 0UL);
 }
 
+/*
+ * Lookup and fill in the "ro_rt" rtentry field in a route structure given
+ * an address in the ro_dst field.  Always send a report and optionally
+ * clone routes when RTF_CLONING or RTF_PRCLONING are not being ignored.
+ */
 void
 rtalloc_ign(struct route *ro, u_long ignore)
 {
-       int s;
-
        if (ro->ro_rt != NULL) {
                if (ro->ro_rt->rt_ifp != NULL && ro->ro_rt->rt_flags & RTF_UP)
                        return;
-               s = splnet(); /* XXX probably always at splnet here already */
                rtfree(ro->ro_rt);
                ro->ro_rt = NULL;
-               splx(s);
        }
        ro->ro_rt = rtlookup(&ro->ro_dst, 1, ignore);
 }
 
 /*
- * Look up the route that matches the given 'dst' address.
+ * Look up the route that matches the given "dst" address.
  *
- * Create a cloned route if the route is a cloning route
- * and RTF_CLONING or RTF_PRCLONING are not being ignored.
+ * Create and return a cloned route if "dst" matches a cloning route
+ * and the RTF_CLONING and RTF_PRCLONING flags are not being ignored.
  *
- * In either case, the returned route has its refcnt incremented.
+ * Any route returned has its refcnt incremented.
  */
 struct rtentry *
 rtlookup(struct sockaddr *dst, int report, u_long ignflags)
@@ -135,17 +137,13 @@ rtlookup(struct sockaddr *dst, int report, u_long ignflags)
                        err = rtrequest(RTM_RESOLVE, dst, NULL, NULL, 0,
                                        &clonedroute);
                        if (err != 0) {
-                               /* use original route on clone failure */
+                               /* use master cloning route on clone failure */
                                rt->rt_refcnt++;
                                goto reportmiss;
-                       } else {
-                               rt = clonedroute;       /* use cloned route */
                        }
+                       rt = clonedroute;  /* return cloned route to caller */
                        if (clonedroute->rt_flags & RTF_XRESOLVE) {
-                               /*
-                                * The new cloned route needs external
-                                * resolution.
-                                */
+                               /* Cloned route needs external resolution. */
                                msgtype = RTM_RESOLVE;
                                goto reportmsg;
                        }
index a12ef88..2778f91 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)rtsock.c    8.7 (Berkeley) 10/12/95
  * $FreeBSD: src/sys/net/rtsock.c,v 1.44.2.11 2002/12/04 14:05:41 ru Exp $
- * $DragonFly: src/sys/net/rtsock.c,v 1.17 2004/12/21 02:54:14 hsu Exp $
+ * $DragonFly: src/sys/net/rtsock.c,v 1.18 2004/12/28 08:09:59 hsu Exp $
  */
 
 
@@ -66,7 +66,7 @@ static struct route_cb {
 
 static struct  sockaddr route_dst = { 2, PF_ROUTE, };
 static struct  sockaddr route_src = { 2, PF_ROUTE, };
-static struct  sockaddr sa_zero   = { sizeof(sa_zero), AF_INET, };
+static struct  sockaddr sa_zero   = { sizeof sa_zero, AF_INET, };
 static struct  sockproto route_proto = { PF_ROUTE, };
 
 struct walkarg {
@@ -306,7 +306,7 @@ route_output(struct mbuf *m, struct socket *so, ...)
        if (!(m->m_flags & M_PKTHDR))
                panic("route_output");
        len = m->m_pkthdr.len;
-       if (len < sizeof(*rtm) ||
+       if (len < sizeof *rtm ||
            len != mtod(m, struct rt_msghdr *)->rtm_msglen) {
                info.sa_dst = NULL;
                gotoerr(EINVAL);
@@ -322,7 +322,7 @@ route_output(struct mbuf *m, struct socket *so, ...)
                gotoerr(EPROTONOSUPPORT);
        }
        rtm->rtm_pid = oi->p_pid;
-       bzero(&info, sizeof(info));
+       bzero(&info, sizeof info);
        info.rti_addrs = rtm->rtm_addrs;
        if (rt_xaddrs((char *)(rtm + 1), len + (char *)rtm, &info)) {
                info.sa_dst = NULL;
@@ -763,7 +763,7 @@ rt_ifmsg(ifp)
 
        if (route_cb.any_count == 0)
                return;
-       bzero(&info, sizeof(info));
+       bzero(&info, sizeof info);
        m = rt_msg1(RTM_IFINFO, &info);
        if (m == NULL)
                return;
@@ -785,7 +785,7 @@ rt_ifamsg(int cmd, struct ifaddr *ifa)
        struct sockaddr *sa;
        struct ifnet *ifp = ifa->ifa_ifp;
 
-       bzero(&info, sizeof(info));
+       bzero(&info, sizeof info);
        info.sa_ifaaddr = sa = ifa->ifa_addr;
        info.sa_ifpaddr = TAILQ_FIRST(&ifp->if_addrhead)->ifa_addr;
        info.sa_netmask = ifa->ifa_netmask;
@@ -818,7 +818,7 @@ rt_rtmsg(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt)
        if (rt == NULL)
                return;
 
-       bzero(&info, sizeof(info));
+       bzero(&info, sizeof info);
        info.sa_netmask = rt_mask(rt);
        info.sa_dst = sa = rt_key(rt);
        info.sa_gateway = rt->rt_gateway;
@@ -883,7 +883,7 @@ rt_newmaddrmsg(cmd, ifma)
        if (route_cb.any_count == 0)
                return;
 
-       bzero(&info, sizeof(info));
+       bzero(&info, sizeof info);
        info.sa_ifaaddr = ifma->ifma_addr;
        if (ifp != NULL && TAILQ_FIRST(&ifp->if_addrhead) != NULL)
                info.sa_ifpaddr = TAILQ_FIRST(&ifp->if_addrhead)->ifa_addr;
@@ -923,7 +923,7 @@ rt_ifannouncemsg(ifp, what)
        if (route_cb.any_count == 0)
                return;
 
-       bzero(&info, sizeof(info));
+       bzero(&info, sizeof info);
 
        m = rt_msg1(RTM_IFANNOUNCE, &info);
        if (m == NULL)
@@ -931,7 +931,7 @@ rt_ifannouncemsg(ifp, what)
 
        ifan = mtod(m, struct if_announcemsghdr *);
        ifan->ifan_index = ifp->if_index;
-       strlcpy(ifan->ifan_name, ifp->if_xname, sizeof(ifan->ifan_name));
+       strlcpy(ifan->ifan_name, ifp->if_xname, sizeof ifan->ifan_name);
        ifan->ifan_what = what;
 
        route_proto.sp_protocol = 0;
@@ -955,7 +955,7 @@ sysctl_dumpentry(rn, vw)
        if (w->w_op == NET_RT_FLAGS && !(rt->rt_flags & w->w_arg))
                return 0;
 
-       bzero(&info, sizeof(info));
+       bzero(&info, sizeof info);
        info.sa_dst = rt_key(rt);
        info.sa_gateway = rt->rt_gateway;
        info.sa_netmask = rt_mask(rt);
@@ -977,7 +977,7 @@ sysctl_dumpentry(rn, vw)
                rtm->rtm_index = rt->rt_ifp->if_index;
                rtm->rtm_errno = rtm->rtm_pid = rtm->rtm_seq = 0;
                rtm->rtm_addrs = info.rti_addrs;
-               error = SYSCTL_OUT(w->w_req, (caddr_t)rtm, size);
+               error = SYSCTL_OUT(w->w_req, rtm, size);
                return (error);
        }
        return (error);
@@ -993,7 +993,7 @@ sysctl_iflist(af, w)
        struct  rt_addrinfo info;
        int     len, error = 0;
 
-       bzero(&info, sizeof(info));
+       bzero(&info, sizeof info);
        TAILQ_FOREACH(ifp, &ifnet, if_link) {
                if (w->w_arg && w->w_arg != ifp->if_index)
                        continue;
@@ -1009,7 +1009,7 @@ sysctl_iflist(af, w)
                        ifm->ifm_flags = (u_short)ifp->if_flags;
                        ifm->ifm_data = ifp->if_data;
                        ifm->ifm_addrs = info.rti_addrs;
-                       error = SYSCTL_OUT(w->w_req,(caddr_t)ifm, len);
+                       error = SYSCTL_OUT(w->w_req, ifm, len);
                        if (error)
                                return (error);
                }
@@ -1057,7 +1057,7 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS)
        if (namelen != 3)
                return (EINVAL);
        af = name[0];
-       bzero(&w, sizeof(w));
+       bzero(&w, sizeof w);
        w.w_op = name[1];
        w.w_arg = name[2];
        w.w_req = req;
@@ -1102,6 +1102,6 @@ static struct protosw routesw[] = {
 
 static struct domain routedomain =
     { PF_ROUTE, "route", 0, 0, 0,
-      routesw, &routesw[sizeof(routesw)/sizeof(routesw[0])] };
+      routesw, &routesw[(sizeof routesw)/(sizeof routesw[0])] };
 
 DOMAIN_SET(route);
index d45f2f3..e396f15 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)if_ether.c  8.1 (Berkeley) 6/10/93
  * $FreeBSD: src/sys/netinet/if_ether.c,v 1.64.2.23 2003/04/11 07:23:15 fjoe Exp $
- * $DragonFly: src/sys/netinet/if_ether.c,v 1.21 2004/12/21 02:54:15 hsu Exp $
+ * $DragonFly: src/sys/netinet/if_ether.c,v 1.22 2004/12/28 08:09:59 hsu Exp $
  */
 
 /*
@@ -157,7 +157,7 @@ arp_rtrequest(int req, struct rtentry *rt, struct rt_addrinfo *info)
        struct sockaddr *gate = rt->rt_gateway;
        struct llinfo_arp *la = rt->rt_llinfo;
 
-       struct sockaddr_dl null_sdl = { sizeof(null_sdl), AF_LINK };
+       struct sockaddr_dl null_sdl = { sizeof null_sdl, AF_LINK };
        static boolean_t arpinit_done;
        static int arp_inuse, arp_allocated;    /* for debugging only */
 
@@ -416,8 +416,8 @@ arpresolve(
        }
        if (la == NULL || rt == NULL) {
                log(LOG_DEBUG, "arpresolve: can't allocate llinfo for %s%s%s\n",
-                       inet_ntoa(SIN(dst)->sin_addr), la ? "la" : "",
-                               rt ? "rt" : "");
+                   inet_ntoa(SIN(dst)->sin_addr), la ? "la" : " ",
+                   rt ? "rt" : "");
                m_freem(m);
                return (0);
        }
@@ -560,9 +560,9 @@ in_arpinput(struct mbuf *m)
        struct ifnet *ifp = m->m_pkthdr.rcvif;
        struct ether_header *eh;
        struct arc_header *arh;
-       struct iso88025_header *th = (struct iso88025_header *)0;
+       struct iso88025_header *th = (struct iso88025_header *)NULL;
        struct iso88025_sockaddr_dl_data *trld;
-       struct llinfo_arp *la = 0;
+       struct llinfo_arp *la = NULL;
        struct rtentry *rt;
        struct ifaddr *ifa;
        struct in_ifaddr *ia;
@@ -843,8 +843,7 @@ reply:
  * to create an interface route to a (direct) destination.
  */
 static void
-arptfree(la)
-       struct llinfo_arp *la;
+arptfree(struct llinfo_arp *la)
 {
        struct rtentry *rt = la->la_rt;
        struct sockaddr_dl *sdl;
@@ -852,8 +851,9 @@ arptfree(la)
        if (rt == NULL)
                panic("arptfree");
        sdl = SDL(rt->rt_gateway);
-       if (sdl && ((rt->rt_refcnt > 0 && sdl->sdl_family == AF_LINK) ||
-           (rt->rt_flags & RTF_STATIC))) {
+       if (sdl != NULL &&
+           ((rt->rt_refcnt > 0 && sdl->sdl_family == AF_LINK) ||
+            (rt->rt_flags & RTF_STATIC))) {
                sdl->sdl_alen = 0;
                la->la_preempt = la->la_asked = 0;
                rt->rt_flags &= ~RTF_REJECT;
@@ -868,7 +868,7 @@ static struct llinfo_arp *
 arplookup(in_addr_t addr, boolean_t create, boolean_t proxy)
 {
        struct rtentry *rt;
-       static struct sockaddr_inarp sin = { sizeof(sin), AF_INET };
+       static struct sockaddr_inarp sin = { sizeof sin, AF_INET };
        const char *why = NULL;
 
        sin.sin_addr.s_addr = addr;
index ed8d435..6ca9a6a 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/netinet/ip_divert.c,v 1.42.2.6 2003/01/23 21:06:45 sam Exp $
- * $DragonFly: src/sys/netinet/ip_divert.c,v 1.16 2004/12/21 02:54:15 hsu Exp $
+ * $DragonFly: src/sys/netinet/ip_divert.c,v 1.17 2004/12/28 08:09:59 hsu Exp $
  */
 
 #include "opt_inet.h"
@@ -107,7 +107,7 @@ static u_long       div_sendspace = DIVSNDQ;        /* XXX sysctl ? */
 static u_long  div_recvspace = DIVRCVQ;        /* XXX sysctl ? */
 
 /* Optimization: have this preinitialized */
-static struct sockaddr_in divsrc = { sizeof(divsrc), AF_INET };
+static struct sockaddr_in divsrc = { sizeof divsrc, AF_INET };
 
 /*
  * Initialize divert connection block queue.
@@ -161,7 +161,7 @@ divert_packet(struct mbuf *m, int incoming, int port, int rule)
 
        /* Assure header */
        if (m->m_len < sizeof(struct ip) &&
-           (m = m_pullup(m, sizeof(struct ip))) == 0)
+           (m = m_pullup(m, sizeof(struct ip))) == NULL)
                return;
        ip = mtod(m, struct ip *);
 
@@ -190,7 +190,7 @@ divert_packet(struct mbuf *m, int incoming, int port, int rule)
        /*
         * Record the incoming interface name whenever we have one.
         */
-       bzero(&divsrc.sin_zero, sizeof(divsrc.sin_zero));
+       bzero(&divsrc.sin_zero, sizeof divsrc.sin_zero);
        if (m->m_pkthdr.rcvif) {
                /*
                 * Hide the actual interface name in there in the
@@ -210,7 +210,7 @@ divert_packet(struct mbuf *m, int incoming, int port, int rule)
                 * this iface name will come along for the ride.
                 * (see div_output for the other half of this.)
                 */
-               snprintf(divsrc.sin_zero, sizeof(divsrc.sin_zero),
+               snprintf(divsrc.sin_zero, sizeof divsrc.sin_zero,
                            m->m_pkthdr.rcvif->if_xname);
        }
 
@@ -225,7 +225,7 @@ divert_packet(struct mbuf *m, int incoming, int port, int rule)
        }
        if (sa) {
                if (sbappendaddr(&sa->so_rcv, (struct sockaddr *)&divsrc,
-                               m, (struct mbuf *)0) == 0)
+                               m, (struct mbuf *)NULL) == 0)
                        m_freem(m);
                else
                        sorwakeup(sa);
@@ -275,9 +275,9 @@ div_output(struct socket *so, struct mbuf *m,
                 * The name is user supplied data so don't trust its size
                 * or that it is zero terminated.
                 */
-               for (i = 0; sin->sin_zero[i] && i < sizeof(sin->sin_zero); i++)
+               for (i = 0; sin->sin_zero[i] && i < sizeof sin->sin_zero; i++)
                        ;
-               if ( i > 0 && i < sizeof(sin->sin_zero))
+               if ( i > 0 && i < sizeof sin->sin_zero)
                        m->m_pkthdr.rcvif = ifunit(sin->sin_zero);
        }
 
@@ -290,7 +290,7 @@ div_output(struct socket *so, struct mbuf *m,
                 * Don't allow both user specified and setsockopt options,
                 * and don't allow packet length sizes that will crash
                 */
-               if (((ip->ip_hl != (sizeof (*ip) >> 2)) && inp->inp_options) ||
+               if (((ip->ip_hl != (sizeof *ip) >> 2) && inp->inp_options) ||
                     ((u_short)ntohs(ip->ip_len) > m->m_pkthdr.len)) {
                        error = EINVAL;
                        goto cantsend;
@@ -316,7 +316,7 @@ div_output(struct socket *so, struct mbuf *m,
                         */
                        struct  ifaddr *ifa;
 
-                       bzero(sin->sin_zero, sizeof(sin->sin_zero));
+                       bzero(sin->sin_zero, sizeof sin->sin_zero);
                        sin->sin_port = 0;
                        ifa = ifa_ifwithaddr((struct sockaddr *) sin);
                        if (ifa == NULL) {
@@ -359,8 +359,10 @@ div_attach(struct socket *so, int proto, struct pru_attach_info *ai)
        inp->inp_ip_p = proto;
        inp->inp_vflag |= INP_IPV4;
        inp->inp_flags |= INP_HDRINCL;
-       /* The socket is always "connected" because
-          we always know "where" to send the packet */
+       /*
+        * The socket is always "connected" because
+        * we always know "where" to send the packet.
+        */
        so->so_state |= SS_ISCONNECTED;
        return 0;
 }
@@ -371,7 +373,7 @@ div_detach(struct socket *so)
        struct inpcb *inp;
 
        inp = sotoinpcb(so);
-       if (inp == 0)
+       if (inp == NULL)
                panic("div_detach");
        in_pcbdetach(inp);
        return 0;
@@ -387,7 +389,7 @@ div_abort(struct socket *so)
 static int
 div_disconnect(struct socket *so)
 {
-       if ((so->so_state & SS_ISCONNECTED) == 0)
+       if (!(so->so_state & SS_ISCONNECTED))
                return ENOTCONN;
        return div_abort(so);
 }
@@ -430,8 +432,8 @@ div_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *nam,
         struct mbuf *control, struct thread *td)
 {
        /* Packet must have a header (but that's about it) */
-       if (m->m_len < sizeof (struct ip) &&
-           (m = m_pullup(m, sizeof (struct ip))) == 0) {
+       if (m->m_len < sizeof(struct ip) &&
+           (m = m_pullup(m, sizeof(struct ip))) == NULL) {
                ipstat.ips_toosmall++;
                m_freem(m);
                return EINVAL;
index 7296b88..c934e48 100644 (file)
@@ -82,7 +82,7 @@
  *
  *     @(#)ip_input.c  8.2 (Berkeley) 1/4/94
  * $FreeBSD: src/sys/netinet/ip_input.c,v 1.130.2.52 2003/03/07 07:01:28 silby Exp $
- * $DragonFly: src/sys/netinet/ip_input.c,v 1.40 2004/12/21 02:54:15 hsu Exp $
+ * $DragonFly: src/sys/netinet/ip_input.c,v 1.41 2004/12/28 08:09:59 hsu Exp $
  */
 
 #define        _IP_VHL
@@ -490,31 +490,27 @@ ip_input(struct mbuf *m)
        args.next_hop = NULL;
 
        /* Grab info from MT_TAG mbufs prepended to the chain. */
-       for (; m && m->m_type == MT_TAG; m = m->m_next) {
+       while (m != NULL && m->m_type == MT_TAG) {
                switch(m->_m_tag_id) {
-               default:
-                       printf("ip_input: unrecognised MT_TAG tag %d\n",
-                           m->_m_tag_id);
-                       break;
-
                case PACKET_TAG_DUMMYNET:
                        args.rule = ((struct dn_pkt *)m)->rule;
                        break;
-
                case PACKET_TAG_DIVERT:
                        args.divert_rule = (int)m->m_hdr.mh_data & 0xffff;
                        break;
-
                case PACKET_TAG_IPFORWARD:
                        args.next_hop = (struct sockaddr_in *)m->m_hdr.mh_data;
                        break;
+               default:
+                       printf("ip_input: unrecognised MT_TAG tag %d\n",
+                           m->_m_tag_id);
+                       break;
                }
+               m = m->m_next;
        }
+       KASSERT(m != NULL && (m->m_flags & M_PKTHDR), ("ip_input: no HDR"));
 
-       KASSERT(m != NULL && (m->m_flags & M_PKTHDR) != 0,
-           ("ip_input: no HDR"));
-
-       if (args.rule) {        /* dummynet already filtered us */
+       if (args.rule != NULL) {        /* dummynet already filtered us */
                ip = mtod(m, struct ip *);
                hlen = IP_VHL_HL(ip->ip_vhl) << 2;
                goto iphack;
@@ -555,7 +551,7 @@ ip_input(struct mbuf *m)
                        sum = in_cksum(m, hlen);
                }
        }
-       if (sum) {
+       if (sum != 0) {
                ipstat.ips_badsum++;
                goto bad;
        }
@@ -633,19 +629,19 @@ iphack:
                 * If we've been forwarded from the output side, then
                 * skip the firewall a second time
                 */
-               if (args.next_hop)
+               if (args.next_hop != NULL)
                        goto ours;
 
                args.m = m;
                i = ip_fw_chk_ptr(&args);
                m = args.m;
 
-               if ( (i & IP_FW_PORT_DENY_FLAG) || m == NULL) { /* drop */
-                       if (m)
+               if ((i & IP_FW_PORT_DENY_FLAG) || m == NULL) {  /* drop */
+                       if (m != NULL)
                                m_freem(m);
                        return;
                }
-               ip = mtod(m, struct ip *); /* just in case m changed */
+               ip = mtod(m, struct ip *);      /* just in case m changed */
                if (i == 0 && args.next_hop == NULL)    /* common case */
                        goto pass;
                if (DUMMYNET_LOADED && (i & IP_FW_PORT_DYNT_FLAG)) {
@@ -765,7 +761,8 @@ pass:
        }
        if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
                struct in_multi *inm;
-               if (ip_mrouter) {
+
+               if (ip_mrouter != NULL) {
                        /*
                         * If we are acting as a multicast router, all
                         * incoming multicast packets are passed to the
@@ -774,7 +771,7 @@ pass:
                         * ip_mforward() returns a non-zero value, the packet
                         * must be discarded, else it may be accepted below.
                         */
-                       if (ip_mforward &&
+                       if (ip_mforward != NULL &&
                            ip_mforward(ip, m->m_pkthdr.rcvif, m, NULL) != 0) {
                                ipstat.ips_cantforward++;
                                m_freem(m);
@@ -1713,7 +1710,7 @@ ip_rtaddr(struct in_addr dst, struct route *rt)
                        rt->ro_rt = NULL;
                }
                sin->sin_family = AF_INET;
-               sin->sin_len = sizeof(*sin);
+               sin->sin_len = sizeof *sin;
                sin->sin_addr = dst;
                rtalloc_ign(rt, RTF_PRCLONING);
        }
@@ -1879,7 +1876,7 @@ ip_forward(struct mbuf *m, int using_srcrt, struct sockaddr_in *next_hop)
         * Cache the destination address of the packet; this may be
         * changed by use of 'ipfw fwd'.
         */
-       pkt_dst = next_hop ? next_hop->sin_addr : ip->ip_dst;
+       pkt_dst = (next_hop != NULL) ? next_hop->sin_addr : ip->ip_dst;
 
 #ifdef DIAGNOSTIC
        if (ipprintfs)
@@ -1988,7 +1985,7 @@ ip_forward(struct mbuf *m, int using_srcrt, struct sockaddr_in *next_hop)
                }
        }
 
-       if (next_hop) {
+       if (next_hop != NULL) {
                /* Pass IPFORWARD info if available */
                tag.mh_type = MT_TAG;
                tag.mh_flags = PACKET_TAG_IPFORWARD;
index d94226f..e783ba4 100644 (file)
@@ -28,7 +28,7 @@
  *
  *     @(#)ip_output.c 8.3 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/netinet/ip_output.c,v 1.99.2.37 2003/04/15 06:44:45 silby Exp $
- * $DragonFly: src/sys/netinet/ip_output.c,v 1.23 2004/12/21 02:54:15 hsu Exp $
+ * $DragonFly: src/sys/netinet/ip_output.c,v 1.24 2004/12/28 08:09:59 hsu Exp $
  */
 
 #define _IP_VHL
@@ -123,12 +123,12 @@ extern    struct protosw inetsw[];
  */
 int
 ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro,
-       int flags, struct ip_moptions *imo, struct inpcb *inp)
+         int flags, struct ip_moptions *imo, struct inpcb *inp)
 {
        struct ip *ip;
        struct ifnet *ifp = NULL;       /* keep compiler happy */
        struct mbuf *m;
-       int hlen = sizeof (struct ip);
+       int hlen = sizeof(struct ip);
        int len, off, error = 0;
        struct sockaddr_in *dst = NULL; /* keep compiler happy */
        struct in_ifaddr *ia = NULL;
@@ -154,13 +154,8 @@ ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro,
        args.divert_rule = 0;                   /* divert cookie */
 
        /* Grab info from MT_TAG mbufs prepended to the chain. */
-       for (; m0 && m0->m_type == MT_TAG; m0 = m0->m_next) {
+       while (m0 != NULL && m0->m_type == MT_TAG) {
                switch(m0->_m_tag_id) {
-               default:
-                       printf("ip_output: unrecognised MT_TAG tag %d\n",
-                           m0->_m_tag_id);
-                       break;
-
                case PACKET_TAG_DUMMYNET:
                        /*
                         * the packet was already tagged, so part of the
@@ -169,29 +164,31 @@ ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro,
                         */
                        args.rule = ((struct dn_pkt *)m0)->rule;
                        opt = NULL ;
-                       ro = & ( ((struct dn_pkt *)m0)->ro ) ;
+                       ro = &((struct dn_pkt *)m0)->ro;
                        imo = NULL ;
                        dst = ((struct dn_pkt *)m0)->dn_dst ;
                        ifp = ((struct dn_pkt *)m0)->ifp ;
                        flags = ((struct dn_pkt *)m0)->flags ;
                        break;
-
                case PACKET_TAG_DIVERT:
                        args.divert_rule = (int)m0->m_data & 0xffff;
                        break;
-
                case PACKET_TAG_IPFORWARD:
                        args.next_hop = (struct sockaddr_in *)m0->m_data;
                        break;
+               default:
+                       printf("ip_output: unrecognised MT_TAG tag %d\n",
+                           m0->_m_tag_id);
+                       break;
                }
+               m0 = m0->m_next;
        }
        m = m0;
-
-       KASSERT(!m || (m->m_flags & M_PKTHDR), ("ip_output: no HDR"));
+       KASSERT(m != NULL && (m->m_flags & M_PKTHDR), ("ip_output: no HDR"));
 
        if (ro == NULL) {
                ro = &iproute;
-               bzero(ro, sizeof(*ro));
+               bzero(ro, sizeof *ro);
        }
 
        if (args.rule != NULL) {        /* dummynet already saw us */
@@ -239,13 +236,13 @@ ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro,
            (!(ro->ro_rt->rt_flags & RTF_UP) ||
             dst->sin_family != AF_INET ||
             dst->sin_addr.s_addr != pkt_dst.s_addr)) {
-               RTFREE(ro->ro_rt);
+               rtfree(ro->ro_rt);
                ro->ro_rt = (struct rtentry *)NULL;
        }
        if (ro->ro_rt == NULL) {
-               bzero(dst, sizeof(*dst));
+               bzero(dst, sizeof *dst);
                dst->sin_family = AF_INET;
-               dst->sin_len = sizeof(*dst);
+               dst->sin_len = sizeof *dst;
                dst->sin_addr = pkt_dst;
        }
        /*
@@ -473,7 +470,7 @@ sendit:
        case IPSEC_POLICY_NONE:
                /* no need to do IPsec. */
                goto skip_ipsec;
-       
+
        case IPSEC_POLICY_IPSEC:
                if (sp->req == NULL) {
                        /* acquire a policy */
@@ -488,11 +485,11 @@ sendit:
        }
     {
        struct ipsec_output_state state;
-       bzero(&state, sizeof(state));
+       bzero(&state, sizeof state);
        state.m = m;
        if (flags & IP_ROUTETOIF) {
                state.ro = &iproute;
-               bzero(&iproute, sizeof(iproute));
+               bzero(&iproute, sizeof iproute);
        } else
                state.ro = ro;
        state.dst = (struct sockaddr *)dst;
@@ -623,7 +620,7 @@ skip_ipsec:
                        if (tdbi->spi == sp->req->sav->spi &&
                            tdbi->proto == sp->req->sav->sah->saidx.proto &&
                            bcmp(&tdbi->dst, &sp->req->sav->sah->saidx.dst,
-                                sizeof (union sockaddr_union)) == 0) {
+                                sizeof(union sockaddr_union)) == 0) {
                                /*
                                 * No IPsec processing is needed, free
                                 * reference to SP.
@@ -895,11 +892,10 @@ spd_done:
                         * This rewrites the cached route in a local PCB.
                         * Is this what we want to do?
                         */
-                       bcopy(dst, &ro_fwd->ro_dst, sizeof(*dst));
-
+                       bcopy(dst, &ro_fwd->ro_dst, sizeof *dst);
                        ro_fwd->ro_rt = NULL;
-                       rtalloc_ign(ro_fwd, RTF_PRCLONING);
 
+                       rtalloc_ign(ro_fwd, RTF_PRCLONING);
                        if (ro_fwd->ro_rt == NULL) {
                                ipstat.ips_noroute++;
                                error = EHOSTUNREACH;
@@ -911,14 +907,14 @@ spd_done:
                        ro_fwd->ro_rt->rt_use++;
                        if (ro_fwd->ro_rt->rt_flags & RTF_GATEWAY)
                                dst = (struct sockaddr_in *)
-                                       ro_fwd->ro_rt->rt_gateway;
+                                   ro_fwd->ro_rt->rt_gateway;
                        if (ro_fwd->ro_rt->rt_flags & RTF_HOST)
                                isbroadcast =
                                    (ro_fwd->ro_rt->rt_flags & RTF_BROADCAST);
                        else
                                isbroadcast = in_broadcast(dst->sin_addr, ifp);
-                       if (ro->ro_rt)
-                               RTFREE(ro->ro_rt);
+                       if (ro->ro_rt != NULL)
+                               rtfree(ro->ro_rt);
                        ro->ro_rt = ro_fwd->ro_rt;
                        dst = (struct sockaddr_in *)&ro_fwd->ro_dst;
 
@@ -1009,8 +1005,8 @@ pass:
                        m->m_pkthdr.len = tmp;
                }
 #endif
-               error = (*ifp->if_output)(ifp, m,
-                               (struct sockaddr *)dst, ro->ro_rt);
+               error = (*ifp->if_output)(ifp, m, (struct sockaddr *)dst,
+                                         ro->ro_rt);
                goto done;
        }
 
@@ -1052,9 +1048,9 @@ pass:
                                ia->ia_ifa.if_opackets++;
                                ia->ia_ifa.if_obytes += m->m_pkthdr.len;
                        }
-                       
                        error = (*ifp->if_output)(ifp, m,
-                           (struct sockaddr *)dst, ro->ro_rt);
+                                                 (struct sockaddr *)dst,
+                                                 ro->ro_rt);
                } else
                        m_freem(m);
        }
@@ -1063,7 +1059,7 @@ pass:
                ipstat.ips_fragmented++;
 
 done:
-       if (ro == &iproute && ro->ro_rt) {
+       if (ro == &iproute && ro->ro_rt != NULL) {
                RTFREE(ro->ro_rt);
                ro->ro_rt = NULL;
        }
@@ -1152,7 +1148,7 @@ ip_fragment(struct ip *ip, struct mbuf **m_frag, int mtu,
                        goto smart_frag_failure;
                off = ((off - hlen) & ~7) + hlen;
                newlen = (~PAGE_MASK) & mtu;
-               if ((newlen + sizeof (struct ip)) > mtu) {
+               if ((newlen + sizeof(struct ip)) > mtu) {
                        /* we failed, go back the default */
 smart_frag_failure:
                        newlen = len;
@@ -1177,7 +1173,7 @@ smart_frag_failure:
        for (nfrags = 1; off < ip->ip_len; off += len, nfrags++) {
                struct ip *mhip;        /* ip header on the fragment */
                struct mbuf *m;
-               int mhlen = sizeof (struct ip);
+               int mhlen = sizeof(struct ip);
 
                MGETHDR(m, MB_DONTWAIT, MT_HEADER);
                if (m == NULL) {
@@ -1194,8 +1190,8 @@ smart_frag_failure:
                m->m_data += max_linkhdr;
                mhip = mtod(m, struct ip *);
                *mhip = *ip;
-               if (hlen > sizeof (struct ip)) {
-                       mhlen = ip_optcopy(ip, mhip) + sizeof (struct ip);
+               if (hlen > sizeof(struct ip)) {
+                       mhlen = ip_optcopy(ip, mhip) + sizeof(struct ip);
                        mhip->ip_vhl = IP_MAKE_VHL(IPVERSION, mhlen >> 2);
                }
                m->m_len = mhlen;
@@ -1283,17 +1279,14 @@ in_delayed_cksum(struct mbuf *m)
  * XXX This routine assumes that the packet has no options in place.
  */
 static struct mbuf *
-ip_insertoptions(m, opt, phlen)
-       struct mbuf *m;
-       struct mbuf *opt;
-       int *phlen;
+ip_insertoptions(struct mbuf *m, struct mbuf *opt, int *phlen)
 {
        struct ipoption *p = mtod(opt, struct ipoption *);
        struct mbuf *n;
        struct ip *ip = mtod(m, struct ip *);
        unsigned optlen;
 
-       optlen = opt->m_len - sizeof(p->ipopt_dst);
+       optlen = opt->m_len - sizeof p->ipopt_dst;
        if (optlen + (u_short)ip->ip_len > IP_MAXPACKET) {
                *phlen = 0;
                return (m);             /* XXX should fail */
@@ -1334,15 +1327,14 @@ ip_insertoptions(m, opt, phlen)
  * omitting those not copied during fragmentation.
  */
 int
-ip_optcopy(ip, jp)
-       struct ip *ip, *jp;
+ip_optcopy(struct ip *ip, struct ip *jp)
 {
        u_char *cp, *dp;
        int opt, optlen, cnt;
 
        cp = (u_char *)(ip + 1);
        dp = (u_char *)(jp + 1);
-       cnt = (IP_VHL_HL(ip->ip_vhl) << 2) - sizeof (struct ip);
+       cnt = (IP_VHL_HL(ip->ip_vhl) << 2) - sizeof(struct ip);
        for (; cnt > 0; cnt -= optlen, cp += optlen) {
                opt = cp[0];
                if (opt == IPOPT_EOL)
@@ -1354,10 +1346,10 @@ ip_optcopy(ip, jp)
                        continue;
                }
 
-               KASSERT(cnt >= IPOPT_OLEN + sizeof(*cp),
+               KASSERT(cnt >= IPOPT_OLEN + sizeof *cp,
                    ("ip_optcopy: malformed ipv4 option"));
                optlen = cp[IPOPT_OLEN];
-               KASSERT(optlen >= IPOPT_OLEN + sizeof(*cp) && optlen <= cnt,
+               KASSERT(optlen >= IPOPT_OLEN + sizeof *cp && optlen <= cnt,
                    ("ip_optcopy: malformed ipv4 option"));
 
                /* bogus lengths should have been caught by ip_dooptions */
@@ -1377,9 +1369,7 @@ ip_optcopy(ip, jp)
  * IP socket option processing.
  */
 int
-ip_ctloutput(so, sopt)
-       struct socket *so;
-       struct sockopt *sopt;
+ip_ctloutput(struct socket *so, struct sockopt *sopt)
 {
        struct  inpcb *inp = sotoinpcb(so);
        int     error, optval;
@@ -1410,7 +1400,7 @@ ip_ctloutput(so, sopt)
                        m->m_len = sopt->sopt_valsize;
                        error = sooptcopyin(sopt, mtod(m, char *), m->m_len,
                                            m->m_len);
-                       
+
                        return (ip_pcbopts(sopt->sopt_name, &inp->inp_options,
                                           m));
                }
@@ -1681,10 +1671,10 @@ ip_pcbopts(int optname, struct mbuf **pcbopt, struct mbuf *m)
                if (opt == IPOPT_NOP)
                        optlen = 1;
                else {
-                       if (cnt < IPOPT_OLEN + sizeof(*cp))
+                       if (cnt < IPOPT_OLEN + sizeof *cp)
                                goto bad;
                        optlen = cp[IPOPT_OLEN];
-                       if (optlen < IPOPT_OLEN + sizeof(*cp) || optlen > cnt)
+                       if (optlen < IPOPT_OLEN + sizeof *cp || optlen > cnt)
                                goto bad;
                }
                switch (opt) {
@@ -1712,7 +1702,7 @@ ip_pcbopts(int optname, struct mbuf **pcbopt, struct mbuf *m)
                         * Move first hop before start of options.
                         */
                        bcopy(&cp[IPOPT_OFFSET+1], mtod(m, caddr_t),
-                           sizeof(struct in_addr));
+                             sizeof(struct in_addr));
                        /*
                         * Then copy rest of options back
                         * to close up the deleted entry.
@@ -1777,7 +1767,6 @@ ip_setmoptions(struct sockopt *sopt, struct ip_moptions **imop)
        struct ip_mreq mreq;
        struct ifnet *ifp;
        struct ip_moptions *imo = *imop;
-       struct route ro;
        struct sockaddr_in *dst;
        int ifindex;
        int s;
@@ -1787,8 +1776,7 @@ ip_setmoptions(struct sockopt *sopt, struct ip_moptions **imop)
                 * No multicast option buffer attached to the pcb;
                 * allocate one and initialize to default values.
                 */
-               imo = (struct ip_moptions*)malloc(sizeof(*imo), M_IPMOPTS,
-                   M_WAITOK);
+               imo = malloc(sizeof *imo, M_IPMOPTS, M_WAITOK);
 
                if (imo == NULL)
                        return (ENOBUFS);
@@ -1869,8 +1857,7 @@ ip_setmoptions(struct sockopt *sopt, struct ip_moptions **imop)
                        imo->imo_multicast_ttl = ttl;
                } else {
                        u_int ttl;
-                       error = sooptcopyin(sopt, &ttl, sizeof ttl,
-                                           sizeof ttl);
+                       error = sooptcopyin(sopt, &ttl, sizeof ttl, sizeof ttl);
                        if (error)
                                break;
                        if (ttl > 255)
@@ -1889,12 +1876,14 @@ ip_setmoptions(struct sockopt *sopt, struct ip_moptions **imop)
                 */
                if (sopt->sopt_valsize == 1) {
                        u_char loop;
+
                        error = sooptcopyin(sopt, &loop, 1, 1);
                        if (error)
                                break;
                        imo->imo_multicast_loop = !!loop;
                } else {
                        u_int loop;
+
                        error = sooptcopyin(sopt, &loop, sizeof loop,
                                            sizeof loop);
                        if (error)
@@ -1922,9 +1911,11 @@ ip_setmoptions(struct sockopt *sopt, struct ip_moptions **imop)
                 * the route to the given multicast address.
                 */
                if (mreq.imr_interface.s_addr == INADDR_ANY) {
-                       bzero(&ro, sizeof(ro));
+                       struct route ro;
+
+                       bzero(&ro, sizeof ro);
                        dst = (struct sockaddr_in *)&ro.ro_dst;
-                       dst->sin_len = sizeof(*dst);
+                       dst->sin_len = sizeof *dst;
                        dst->sin_family = AF_INET;
                        dst->sin_addr = mreq.imr_multiaddr;
                        rtalloc(&ro);
@@ -1933,8 +1924,8 @@ ip_setmoptions(struct sockopt *sopt, struct ip_moptions **imop)
                                splx(s);
                                break;
                        }
+                       --ro.ro_rt->rt_refcnt;
                        ifp = ro.ro_rt->rt_ifp;
-                       rtfree(ro.ro_rt);
                }
                else {
                        ifp = ip_multicast_if(&mreq.imr_interface, NULL);
@@ -1974,7 +1965,7 @@ ip_setmoptions(struct sockopt *sopt, struct ip_moptions **imop)
                 * address list for the given interface.
                 */
                if ((imo->imo_membership[i] =
-                   in_addmulti(&mreq.imr_multiaddr, ifp)) == NULL) {
+                    in_addmulti(&mreq.imr_multiaddr, ifp)) == NULL) {
                        error = ENOBUFS;
                        splx(s);
                        break;
@@ -2018,8 +2009,8 @@ ip_setmoptions(struct sockopt *sopt, struct ip_moptions **imop)
                for (i = 0; i < imo->imo_num_memberships; ++i) {
                        if ((ifp == NULL ||
                             imo->imo_membership[i]->inm_ifp == ifp) &&
-                            imo->imo_membership[i]->inm_addr.s_addr ==
-                            mreq.imr_multiaddr.s_addr)
+                           imo->imo_membership[i]->inm_addr.s_addr ==
+                           mreq.imr_multiaddr.s_addr)
                                break;
                }
                if (i == imo->imo_num_memberships) {
@@ -2148,11 +2139,8 @@ ip_freemoptions(struct ip_moptions *imo)
  * replicating that code here.
  */
 static void
-ip_mloopback(ifp, m, dst, hlen)
-       struct ifnet *ifp;
-       struct mbuf *m;
-       struct sockaddr_in *dst;
-       int hlen;
+ip_mloopback(struct ifnet *ifp, struct mbuf *m, struct sockaddr_in *dst,
+            int hlen)
 {
        struct ip *ip;
        struct mbuf *copym;
index c276be5..dd20438 100644 (file)
@@ -82,7 +82,7 @@
  *
  *     @(#)tcp_output.c        8.4 (Berkeley) 5/24/95
  * $FreeBSD: src/sys/netinet/tcp_output.c,v 1.39.2.20 2003/01/29 22:45:36 hsu Exp $
- * $DragonFly: src/sys/netinet/tcp_output.c,v 1.21 2004/12/21 02:54:15 hsu Exp $
+ * $DragonFly: src/sys/netinet/tcp_output.c,v 1.22 2004/12/28 08:09:59 hsu Exp $
  */
 
 #include "opt_inet6.h"
@@ -823,7 +823,7 @@ send:
        if (isipv6) {
                /*
                 * ip6_plen is not need to be filled now, and will be filled
-                * in ip6_output.
+                * in ip6_output().
                 */
                th->th_sum = in6_cksum(m, IPPROTO_TCP, sizeof(struct ip6_hdr),
                                       sizeof(struct tcphdr) + optlen + len);
@@ -935,7 +935,8 @@ send:
 
                /* TODO: IPv6 IP6TOS_ECT bit on */
                error = ip6_output(m, inp->in6p_outputopts, &inp->in6p_route,
-                   (so->so_options & SO_DONTROUTE), NULL, NULL, inp);
+                                  (so->so_options & SO_DONTROUTE), NULL, NULL,
+                                  inp);
        } else {
                struct rtentry *rt;
                ip->ip_len = m->m_pkthdr.len;
@@ -962,7 +963,7 @@ send:
                        ip->ip_off |= IP_DF;
 
                error = ip_output(m, inp->inp_options, &inp->inp_route,
-                   (so->so_options & SO_DONTROUTE), NULL, inp);
+                                 (so->so_options & SO_DONTROUTE), NULL, inp);
        }
        if (error) {
 
@@ -1043,8 +1044,8 @@ tcp_setpersist(tp)
        /*
         * Start/restart persistance timer.
         */
-       TCPT_RANGESET(tt, t * tcp_backoff[tp->t_rxtshift],
-                     TCPTV_PERSMIN, TCPTV_PERSMAX);
+       TCPT_RANGESET(tt, t * tcp_backoff[tp->t_rxtshift], TCPTV_PERSMIN,
+                     TCPTV_PERSMAX);
        callout_reset(tp->tt_persist, tt, tcp_timer_persist, tp);
        if (tp->t_rxtshift < TCP_MAXRXTSHIFT)
                tp->t_rxtshift++;