home *** CD-ROM | disk | FTP | other *** search
- #ifndef _NET_RADIX_H_
- #define _NET_RADIX_H_
-
- #ifndef _SYS_TYPES_H_
- #include <sys/types.h>
- #endif
-
- /*
- * Radix search tree node layout.
- */
-
- struct radix_node {
- struct radix_mask *rn_mklist; /* list of masks contained in subtree */
- struct radix_node *rn_p; /* parent */
- short rn_b; /* bit offset; -1-index(netmask) */
- char rn_bmask; /* node: mask for bit test*/
- u_char rn_flags; /* enumerated next */
- #define RNF_NORMAL 1 /* leaf contains normal route */
- #define RNF_ROOT 2 /* leaf is root leaf for tree */
- #define RNF_ACTIVE 4 /* This node is alive (for rtfree) */
- union {
- struct { /* leaf only data: */
- caddr_t rn_Key; /* object of search */
- caddr_t rn_Mask; /* netmask, if present */
- struct radix_node *rn_Dupedkey;
- } rn_leaf;
- struct { /* node only data: */
- long rn_Off; /* where to start compare */
- struct radix_node *rn_L;/* progeny */
- struct radix_node *rn_R;/* progeny */
- } rn_node;
- } rn_u;
- };
-
- #define rn_dupedkey rn_u.rn_leaf.rn_Dupedkey
- #define rn_key rn_u.rn_leaf.rn_Key
- #define rn_mask rn_u.rn_leaf.rn_Mask
- #define rn_off rn_u.rn_node.rn_Off
- #define rn_l rn_u.rn_node.rn_L
- #define rn_r rn_u.rn_node.rn_R
-
- #endif /* _RADIX_H_ */
-