diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
commit | d6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (patch) | |
tree | ece253b876159b39c620e62b6c9b1174642e070e /usr.sbin/mrouted/vif.h |
initial import of NetBSD tree
Diffstat (limited to 'usr.sbin/mrouted/vif.h')
-rw-r--r-- | usr.sbin/mrouted/vif.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/usr.sbin/mrouted/vif.h b/usr.sbin/mrouted/vif.h new file mode 100644 index 00000000000..4ff8194946d --- /dev/null +++ b/usr.sbin/mrouted/vif.h @@ -0,0 +1,76 @@ +/* $NetBSD: vif.h,v 1.5 1995/10/09 03:52:03 thorpej Exp $ */ + +/* + * The mrouted program is covered by the license in the accompanying file + * named "LICENSE". Use of the mrouted program represents acceptance of + * the terms and conditions listed in that file. + * + * The mrouted program is COPYRIGHT 1989 by The Board of Trustees of + * Leland Stanford Junior University. + */ + +/* + * User level Virtual Interface structure + * + * A "virtual interface" is either a physical, multicast-capable interface + * (called a "phyint") or a virtual point-to-point link (called a "tunnel"). + * (Note: all addresses, subnet numbers and masks are kept in NETWORK order.) + */ +struct uvif { + u_short uv_flags; /* VIFF_ flags defined below */ + u_char uv_metric; /* cost of this vif */ + u_int uv_rate_limit; /* rate limit on this vif */ + u_char uv_threshold; /* min ttl required to forward on vif */ + u_int32_t uv_lcl_addr; /* local address of this vif */ + u_int32_t uv_rmt_addr; /* remote end-point addr (tunnels only) */ + u_int32_t uv_subnet; /* subnet number (phyints only) */ + u_int32_t uv_subnetmask; /* subnet mask (phyints only) */ + u_int32_t uv_subnetbcast;/* subnet broadcast addr (phyints only) */ + char uv_name[IFNAMSIZ]; /* interface name */ + struct listaddr *uv_groups; /* list of local groups (phyints only) */ + struct listaddr *uv_neighbors; /* list of neighboring routers */ + struct vif_acl *uv_acl; /* access control list of groups */ + int uv_leaf_timer; /* time until this vif is considrd leaf */ + struct phaddr *uv_addrs; /* Additional subnets on this vif */ +}; + +#define VIFF_KERNEL_FLAGS (VIFF_TUNNEL|VIFF_SRCRT) +#define VIFF_DOWN 0x0100 /* kernel state of interface */ +#define VIFF_DISABLED 0x0200 /* administratively disabled */ +#define VIFF_QUERIER 0x0400 /* I am the subnet's querier */ +#define VIFF_ONEWAY 0x0800 /* Maybe one way interface */ +#define VIFF_LEAF 0x1000 /* all neighbors are leaves */ + +struct phaddr { + struct phaddr *pa_next; + u_long pa_addr; + u_long pa_mask; +}; + +struct vif_acl { + struct vif_acl *acl_next; /* next acl member */ + u_int32_t acl_addr; /* Group address */ + u_int32_t acl_mask; /* Group addr. mask */ +}; + +struct listaddr { + struct listaddr *al_next; /* link to next addr, MUST BE FIRST */ + u_int32_t al_addr; /* local group or neighbor address */ + u_long al_timer; /* for timing out group or neighbor */ + time_t al_ctime; /* neighbor creation time */ + u_int32_t al_genid; /* generation id for neighbor */ + u_char al_pv; /* router protocol version */ + u_char al_mv; /* router mrouted version */ + u_long al_timerid; /* returned by set timer */ + u_long al_query; /* second query in case of leave */ + u_short al_old; /* if old memberships are present */ + u_short al_last; /* # of query's since last old rep */ + u_char al_flags; /* flags related to this neighbor */ +}; + +#define NF_LEAF 0x01 /* This neighbor is a leaf */ +#define NF_PRUNE 0x02 /* This neighbor understands prunes */ +#define NF_GENID 0x04 /* I supply genid & rtrlist in probe*/ +#define NF_MTRACE 0x08 /* I can understand mtrace requests */ + +#define NO_VIF ((vifi_t)MAXVIFS) /* An invalid vif index */ |