Changeset f94e799e in rtems


Ignore:
Timestamp:
Mar 29, 2007, 7:50:03 AM (13 years ago)
Author:
Ralf Corsepius <ralf.corsepius@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
88e05619
Parents:
8f48f2bf
Message:

Preps to eliminate _IP_VHL (Abandoned in FreeBSD). Misc mergers from upstream FreeBSD.

Location:
cpukit/libnetworking/netinet
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libnetworking/netinet/ip_input.c

    r8f48f2bf rf94e799e  
    4040#include <sys/param.h>
    4141#include <sys/systm.h>
     42#include <sys/mbuf.h>
    4243#include <sys/malloc.h>
    43 #include <sys/mbuf.h>
    4444#include <sys/domain.h>
    4545#include <sys/protosw.h>
     
    6161#include <netinet/ip.h>
    6262#include <netinet/in_pcb.h>
    63 #include <netinet/in_var.h>
    6463#include <netinet/ip_var.h>
    6564#include <netinet/ip_icmp.h>
     
    7877int     ipforwarding = 0;
    7978SYSCTL_INT(_net_inet_ip, IPCTL_FORWARDING, forwarding, CTLFLAG_RW,
    80         &ipforwarding, 0, "");
     79    &ipforwarding, 0, "Enable IP forwarding between interfaces");
    8180
    8281static int      ipsendredirects = 1; /* XXX */
    8382SYSCTL_INT(_net_inet_ip, IPCTL_SENDREDIRECTS, redirect, CTLFLAG_RW,
    84         &ipsendredirects, 0, "");
     83    &ipsendredirects, 0, "Enable sending IP redirects");
    8584
    8685int     ip_defttl = IPDEFTTL;
    8786SYSCTL_INT(_net_inet_ip, IPCTL_DEFTTL, ttl, CTLFLAG_RW,
    88         &ip_defttl, 0, "");
     87    &ip_defttl, 0, "Maximum TTL on IP packets");
    8988
    9089static int      ip_dosourceroute = 0;
     
    108107        &ipintrq.ifq_maxlen, 0, "");
    109108SYSCTL_INT(_net_inet_ip, IPCTL_INTRQDROPS, intr_queue_drops, CTLFLAG_RD,
    110         &ipintrq.ifq_drops, 0, "");
     109    &ipintrq.ifq_drops, 0,
     110    "Number of packets dropped from the IP input queue");
    111111
    112112struct ipstat ipstat;
     
    125125#ifdef IPCTL_DEFMTU
    126126SYSCTL_INT(_net_inet_ip, IPCTL_DEFMTU, mtu, CTLFLAG_RW,
    127         &ip_mtu, 0, "");
     127    &ip_mtu, 0, "Default MTU");
    128128#endif
    129129
     
    191191
    192192        pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW);
    193         if (pr == 0)
    194                 panic("ip_init");
     193        if (pr == NULL)
     194                panic("ip_init: PF_INET not found");
     195
     196        /* Initialize the entire ip_protox[] array to IPPROTO_RAW. */
    195197        for (i = 0; i < IPPROTO_MAX; i++)
    196198                ip_protox[i] = pr - inetsw;
     199        /*
     200         * Cycle through IP protocols and put them into the appropriate place
     201         * in ip_protox[].
     202         */
    197203        for (pr = inetdomain.dom_protosw;
    198204            pr < inetdomain.dom_protoswNPROTOSW; pr++)
    199205                if (pr->pr_domain->dom_family == PF_INET &&
    200                     pr->pr_protocol && pr->pr_protocol != IPPROTO_RAW)
     206                    pr->pr_protocol && pr->pr_protocol != IPPROTO_RAW) {
    201207                        ip_protox[pr->pr_protocol] = pr - inetsw;
     208                }
    202209
    203210        for (i = 0; i < IPREASS_NHASH; i++)
     
    206213        maxnipq = nmbclusters/4;
    207214
     215        /* Initialize various other remaining things. */
    208216        ip_id = rtems_bsdnet_seconds_since_boot() & 0xffff;
    209217        ipintrq.ifq_maxlen = ipqmaxlen;
     
    260268        ip = mtod(m, struct ip *);
    261269
     270#ifdef _IP_VHL
    262271        if (IP_VHL_V(ip->ip_vhl) != IPVERSION) {
     272#else
     273        if (ip->ip_v != IPVERSION) {
     274#endif
    263275                ipstat.ips_badvers++;
    264276                goto bad;
    265277        }
    266278
     279#ifdef _IP_VHL
    267280        hlen = IP_VHL_HL(ip->ip_vhl) << 2;
     281#else
     282        hlen = ip->ip_hl << 2;
     283#endif
    268284        if (hlen < sizeof(struct ip)) { /* minimum header length */
    269285                ipstat.ips_badhlen++;
     
    290306         * Convert fields to host representation.
    291307         */
    292         NTOHS(ip->ip_len);
     308        ip->ip_len = ntohs(ip->ip_len);
    293309        if (ip->ip_len < hlen) {
    294310                ipstat.ips_badlen++;
     
    296312        }
    297313        NTOHS(ip->ip_id);
    298         NTOHS(ip->ip_off);
     314        ip->ip_off = ntohs(ip->ip_off);
    299315
    300316        /*
     
    569585         */
    570586        ipstat.ips_delivered++;
     587
    571588        (*inetsw[ip_protox[ip->ip_p]].pr_input)(m, hlen);
    572589        return;
     
    625642         * If first fragment to arrive, create a reassembly queue.
    626643         */
    627         if (fp == 0) {
     644        if (fp == NULL) {
    628645                if ((t = m_get(M_DONTWAIT, MT_FTABLE)) == NULL)
    629646                        goto dropfrag;
     
    715732         * Reassembly is complete.  Make sure the packet is a sane size.
    716733         */
     734#ifdef _IP_VHL
    717735        if (next + (IP_VHL_HL(((struct ip *)fp->ipq_next)->ip_vhl) << 2)
     736#else
     737        if (next + (((struct ip *)fp->ipq_next)->ip_hl) << 2)
     738#endif
    718739                                                        > IP_MAXPACKET) {
    719740                ipstat.ips_toolong++;
     
    728749        m = dtom(q);
    729750        t = m->m_next;
    730         m->m_next = 0;
     751        m->m_next = NULL;
    731752        m_cat(m, t);
    732753        q = q->ipf_next;
     
    888909        dst = ip->ip_dst;
    889910        cp = (u_char *)(ip + 1);
     911#ifdef _IP_VHL
    890912        cnt = (IP_VHL_HL(ip->ip_vhl) << 2) - sizeof (struct ip);
     913#else
     914        cnt = (ip->ip_hl << 2) - sizeof (struct ip);
     915#endif
    891916        for (; cnt > 0; cnt -= optlen, cp += optlen) {
    892917                opt = cp[IPOPT_OPTVAL];
     
    10751100        return (0);
    10761101bad:
     1102#ifdef _IP_VHL
    10771103        ip->ip_len -= IP_VHL_HL(ip->ip_vhl) << 2;   /* XXX icmp_error adds in hdr length */
     1104#else
     1105        ip->ip_len -= ip->ip_hl << 2;   /* XXX icmp_error adds in hdr length */
     1106#endif
    10781107        icmp_error(m, type, code, 0, 0);
    10791108        ipstat.ips_badoptions++;
     
    10891118         struct in_addr dst;
    10901119{
    1091         register struct sockaddr_in *sin;
     1120        struct sockaddr_in *sin;
    10921121
    10931122        sin = (struct sockaddr_in *) &ipforward_rt.ro_dst;
     
    12181247        int olen;
    12191248
     1249#ifdef _IP_VHL
    12201250        olen = (IP_VHL_HL(ip->ip_vhl) << 2) - sizeof (struct ip);
     1251#else
     1252        olen = (ip->ip_hl << 2) - sizeof (struct ip);
     1253#endif
    12211254        opts = (caddr_t)(ip + 1);
    12221255        i = m->m_len - (sizeof (struct ip) + olen);
     
    12251258        if (m->m_flags & M_PKTHDR)
    12261259                m->m_pkthdr.len -= olen;
     1260#ifdef _IP_VHL
    12271261        ip->ip_vhl = IP_MAKE_VHL(IPVERSION, sizeof(struct ip) >> 2);
     1262#else
     1263        ip->ip_v = IPVERSION;
     1264        ip->ip_hl = (sizeof(struct ip) >> 2);
     1265#endif
    12281266}
    12291267
     
    13321370                    type = ICMP_REDIRECT;
    13331371                    code = ICMP_REDIRECT_HOST;
    1334 #ifdef DIAGNOSTIC
    1335                     if (ipprintfs)
    1336                         printf("redirect (%d) to %lx\n", code, (u_long)dest);
    1337 #endif
    13381372                }
    13391373        }
     
    14241458        /* ip_srcroute doesn't do what we want here, need to fix */
    14251459        if (inp->inp_flags & INP_RECVRETOPTS) {
    1426                 *mp = sbcreatecontrol((caddr_t) ip_srcroute(),
     1460                *mp = sbcreatecontrol((caddr_t) ip_srcroute(m),
    14271461                    sizeof(struct in_addr), IP_RECVRETOPTS, IPPROTO_IP);
    14281462                if (*mp)
  • cpukit/libnetworking/netinet/ip_output.c

    r8f48f2bf rf94e799e  
    119119         */
    120120        if ((flags & (IP_FORWARDING|IP_RAWOUTPUT)) == 0) {
     121#ifdef _IP_VHL
    121122                ip->ip_vhl = IP_MAKE_VHL(IPVERSION, hlen >> 2);
     123#else
     124                ip->ip_v = IPVERSION;
     125                ip->ip_hl = hlen >> 2;
     126#endif
    122127                ip->ip_off &= IP_DF;
    123128                ip->ip_id = htons(ip_id++);
     
    319324                }
    320325                /* don't allow broadcast messages to be fragmented */
    321                 if ((u_short)ip->ip_len > ifp->if_mtu) {
     326                if (ip->ip_len > ifp->if_mtu) {
    322327                        error = EMSGSIZE;
    323328                        goto bad;
     
    12811286                ip->ip_off = htons(ip->ip_off);
    12821287                ip->ip_sum = 0;
     1288#ifdef _IP_VHL
    12831289                if (ip->ip_vhl == IP_VHL_BORING) {
    12841290                        ip->ip_sum = in_cksum_hdr(ip);
     
    12861292                        ip->ip_sum = in_cksum(copym, hlen);
    12871293                }
     1294#else
     1295                ip->ip_sum = in_cksum(copym, hlen);
     1296#endif
    12881297                /*
    12891298                 * NB:
     
    12991308#ifdef notdef
    13001309                copym->m_pkthdr.rcvif = ifp;
    1301                 ip_input(copym)
     1310                ip_input(copym);
    13021311#else
    13031312                (void) looutput(ifp, copym, (struct sockaddr *)dst, NULL);
Note: See TracChangeset for help on using the changeset viewer.