Annotation of 43BSD/sys/net/route.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980, 1986 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)route.h     7.1 (Berkeley) 6/4/86
                      7:  */
                      8: 
                      9: /*
                     10:  * Kernel resident routing tables.
                     11:  * 
                     12:  * The routing tables are initialized when interface addresses
                     13:  * are set by making entries for all directly connected interfaces.
                     14:  */
                     15: 
                     16: /*
                     17:  * A route consists of a destination address and a reference
                     18:  * to a routing entry.  These are often held by protocols
                     19:  * in their control blocks, e.g. inpcb.
                     20:  */
                     21: struct route {
                     22:        struct  rtentry *ro_rt;
                     23:        struct  sockaddr ro_dst;
                     24: };
                     25: 
                     26: /*
                     27:  * We distinguish between routes to hosts and routes to networks,
                     28:  * preferring the former if available.  For each route we infer
                     29:  * the interface to use from the gateway address supplied when
                     30:  * the route was entered.  Routes that forward packets through
                     31:  * gateways are marked so that the output routines know to address the
                     32:  * gateway rather than the ultimate destination.
                     33:  */
                     34: struct rtentry {
                     35:        u_long  rt_hash;                /* to speed lookups */
                     36:        struct  sockaddr rt_dst;        /* key */
                     37:        struct  sockaddr rt_gateway;    /* value */
                     38:        short   rt_flags;               /* up/down?, host/net */
                     39:        short   rt_refcnt;              /* # held references */
                     40:        u_long  rt_use;                 /* raw # packets forwarded */
                     41:        struct  ifnet *rt_ifp;          /* the answer: interface to use */
                     42: };
                     43: 
                     44: #define        RTF_UP          0x1             /* route useable */
                     45: #define        RTF_GATEWAY     0x2             /* destination is a gateway */
                     46: #define        RTF_HOST        0x4             /* host entry (net otherwise) */
                     47: #define        RTF_DYNAMIC     0x10            /* created dynamically (by redirect) */
                     48: 
                     49: /*
                     50:  * Routing statistics.
                     51:  */
                     52: struct rtstat {
                     53:        short   rts_badredirect;        /* bogus redirect calls */
                     54:        short   rts_dynamic;            /* routes created by redirects */
                     55:        short   rts_newgateway;         /* routes modified by redirects */
                     56:        short   rts_unreach;            /* lookups which failed */
                     57:        short   rts_wildcard;           /* lookups satisfied by a wildcard */
                     58: };
                     59: 
                     60: #ifdef KERNEL
                     61: #define        RTFREE(rt) \
                     62:        if ((rt)->rt_refcnt == 1) \
                     63:                rtfree(rt); \
                     64:        else \
                     65:                (rt)->rt_refcnt--;
                     66: 
                     67: #ifdef GATEWAY
                     68: #define        RTHASHSIZ       64
                     69: #else
                     70: #define        RTHASHSIZ       8
                     71: #endif
                     72: #if    (RTHASHSIZ & (RTHASHSIZ - 1)) == 0
                     73: #define RTHASHMOD(h)   ((h) & (RTHASHSIZ - 1))
                     74: #else
                     75: #define RTHASHMOD(h)   ((h) % RTHASHSIZ)
                     76: #endif
                     77: struct mbuf *rthost[RTHASHSIZ];
                     78: struct mbuf *rtnet[RTHASHSIZ];
                     79: struct rtstat  rtstat;
                     80: #endif

unix.superglobalmegacorp.com

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