Annotation of 42BSD/sys/netinet/in.c, revision 1.1

1.1     ! root        1: /*     in.c    6.1     83/07/29        */
        !             2: 
        !             3: #include "../h/param.h"
        !             4: #include "../h/mbuf.h"
        !             5: #include "../h/protosw.h"
        !             6: #include "../h/socket.h"
        !             7: #include "../h/socketvar.h"
        !             8: #include "../netinet/in.h"
        !             9: #include "../netinet/in_systm.h"
        !            10: #include "../net/if.h"
        !            11: #include "../net/route.h"
        !            12: #include "../net/af.h"
        !            13: 
        !            14: #ifdef INET
        !            15: inet_hash(sin, hp)
        !            16:        register struct sockaddr_in *sin;
        !            17:        struct afhash *hp;
        !            18: {
        !            19: 
        !            20:        hp->afh_nethash = in_netof(sin->sin_addr);
        !            21:        hp->afh_hosthash = ntohl(sin->sin_addr.s_addr);
        !            22: }
        !            23: 
        !            24: inet_netmatch(sin1, sin2)
        !            25:        struct sockaddr_in *sin1, *sin2;
        !            26: {
        !            27: 
        !            28:        return (in_netof(sin1->sin_addr) == in_netof(sin2->sin_addr));
        !            29: }
        !            30: 
        !            31: /*
        !            32:  * Formulate an Internet address from network + host.  Used in
        !            33:  * building addresses stored in the ifnet structure.
        !            34:  */
        !            35: struct in_addr
        !            36: if_makeaddr(net, host)
        !            37:        int net, host;
        !            38: {
        !            39:        u_long addr;
        !            40: 
        !            41:        if (net < 128)
        !            42:                addr = (net << IN_CLASSA_NSHIFT) | host;
        !            43:        else if (net < 65536)
        !            44:                addr = (net << IN_CLASSB_NSHIFT) | host;
        !            45:        else
        !            46:                addr = (net << IN_CLASSC_NSHIFT) | host;
        !            47:        addr = htonl(addr);
        !            48:        return (*(struct in_addr *)&addr);
        !            49: }
        !            50: 
        !            51: /*
        !            52:  * Return the network number from an internet address.
        !            53:  */
        !            54: in_netof(in)
        !            55:        struct in_addr in;
        !            56: {
        !            57:        register u_long i = ntohl(in.s_addr);
        !            58: 
        !            59:        if (IN_CLASSA(i))
        !            60:                return (((i)&IN_CLASSA_NET) >> IN_CLASSA_NSHIFT);
        !            61:        else if (IN_CLASSB(i))
        !            62:                return (((i)&IN_CLASSB_NET) >> IN_CLASSB_NSHIFT);
        !            63:        else
        !            64:                return (((i)&IN_CLASSC_NET) >> IN_CLASSC_NSHIFT);
        !            65: }
        !            66: 
        !            67: /*
        !            68:  * Return the host portion of an internet address.
        !            69:  */
        !            70: in_lnaof(in)
        !            71:        struct in_addr in;
        !            72: {
        !            73:        register u_long i = ntohl(in.s_addr);
        !            74: 
        !            75:        if (IN_CLASSA(i))
        !            76:                return ((i)&IN_CLASSA_HOST);
        !            77:        else if (IN_CLASSB(i))
        !            78:                return ((i)&IN_CLASSB_HOST);
        !            79:        else
        !            80:                return ((i)&IN_CLASSC_HOST);
        !            81: }
        !            82: 
        !            83: /*
        !            84:  * Initialize an interface's routing
        !            85:  * table entry according to the network.
        !            86:  * INTERNET SPECIFIC.
        !            87:  */
        !            88: if_rtinit(ifp, flags)
        !            89:        register struct ifnet *ifp;
        !            90:        int flags;
        !            91: {
        !            92:        struct sockaddr_in sin;
        !            93: 
        !            94:        if (ifp->if_flags & IFF_ROUTE)
        !            95:                return;
        !            96:        bzero((caddr_t)&sin, sizeof (sin));
        !            97:        sin.sin_family = AF_INET;
        !            98:        sin.sin_addr = if_makeaddr(ifp->if_net, INADDR_ANY);
        !            99:        rtinit((struct sockaddr *)&sin, &ifp->if_addr, flags);
        !           100: }
        !           101: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.