Annotation of embedaddon/mrouted/route.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * The mrouted program is covered by the license in the accompanying file
                      3:  * named "LICENSE".  Use of the mrouted program represents acceptance of
                      4:  * the terms and conditions listed in that file.
                      5:  *
                      6:  * The mrouted program is COPYRIGHT 1989 by The Board of Trustees of
                      7:  * Leland Stanford Junior University.
                      8:  */
                      9: 
                     10: /*
                     11:  * Routing Table Entry, one per subnet from which a multicast could originate.
                     12:  * (Note: all addresses, subnet numbers and masks are kept in NETWORK order.)
                     13:  *
                     14:  * The Routing Table is stored as a doubly-linked list of these structures,
                     15:  * ordered by decreasing value of rt_originmask and, secondarily, by
                     16:  * decreasing value of rt_origin within each rt_originmask value.
                     17:  * This data structure is efficient for generating route reports, whether
                     18:  * full or partial, for processing received full reports, for clearing the
                     19:  * CHANGED flags, and for periodically advancing the timers in all routes.
                     20:  * It is not so efficient for updating a small number of routes in response
                     21:  * to a partial report.  In a stable topology, the latter are rare; if they
                     22:  * turn out to be costing a lot, we can add an auxiliary hash table for
                     23:  * faster access to arbitrary route entries.
                     24:  */
                     25: struct rtentry {
                     26:     struct rtentry  *rt_next;          /* link to next entry MUST BE FIRST */
                     27:     u_int32         rt_origin;         /* subnet origin of multicasts      */
                     28:     u_int32         rt_originmask;     /* subnet mask for origin           */
                     29:     short           rt_originwidth;    /* # bytes of origin subnet number  */
                     30:     u_char          rt_metric;         /* cost of route back to origin     */
                     31:     u_char          rt_flags;          /* RTF_ flags defined below         */
                     32:     u_int32         rt_gateway;        /* first-hop gateway back to origin */
                     33:     vifi_t          rt_parent;         /* incoming vif (ie towards origin) */
                     34:     vifbitmap_t             rt_children;       /* outgoing children vifs           */
                     35:     u_int32        *rt_dominants;      /* per vif dominant gateways        */
                     36:     nbrbitmap_t             rt_subordinates;   /* bitmap of subordinate gateways   */
                     37:     nbrbitmap_t             rt_subordadv;      /* recently advertised subordinates */
                     38:     u_int           rt_timer;          /* for timing out the route entry   */
                     39:     struct rtentry  *rt_prev;          /* link to previous entry           */
                     40:     struct gtable   *rt_groups;                /* link to active groups            */
                     41: };
                     42: 
                     43: #define        RTF_CHANGED             0x01    /* route changed but not reported   */
                     44: #define        RTF_HOLDDOWN            0x04    /* this route is in holddown        */
                     45: 
                     46: #define ALL_ROUTES     0               /* possible arguments to report()   */
                     47: #define CHANGED_ROUTES 1               /*  and report_to_all_neighbors()   */
                     48: 
                     49: #define        RT_FMT(r, s)    inet_fmts((r)->rt_origin, (r)->rt_originmask, s, sizeof(s))

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>