Annotation of 42BSD/sys/netinet/in.c, revision 1.1.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.