Annotation of embedaddon/freevrrpd/vrrp_proto.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (c) 2001,2002 Sebastien Petit <spe@bsdfr.org>
3: *
4: * Redistribution and use in source forms, with and without modification,
5: * are permitted provided that the following conditions are met:
6: * 1. Redistributions of source code must retain the above copyright notice,
7: * this list of conditions and the following disclaimer.
8: * 2. Redistributions in binary form must reproduce the above copyright notice,
9: * this list of conditions and the following disclaimer in the documentation
10: * and/or other materials provided with the distribution. Obviously, it
11: * would be nice if you gave credit where credit is due but requiring it
12: * would be too onerous.
13: * 3. All advertising materials mentioning features or use of this software
14: * must display the following acknowledgement:
15: * This product includes software developed by Sebastien Petit.
16: * 4. Neither the name of its contributors may be used to endorse or promote
17: * products derived from this software without specific prior written
18: * permission.
19: *
20: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30: * SUCH DAMAGE.
31: *
32: * $Id: vrrp_proto.h,v 1.14 2004/03/30 23:45:28 rival Exp $
33: */
34:
35: #ifndef _VRRP_PROTO_H
36: #define _VRRP_PROTO_H
37:
38: #include <sys/types.h>
39: #include <sys/socket.h>
40: #include <net/if.h>
41: #include <netinet/in.h>
42: #ifdef __FreeBSD__
43: #include <net/ethernet.h>
44: #endif
45: #ifdef __NetBSD__
46: #include <net/if_ether.h>
47: #endif
48: #ifdef __OpenBSD__
49: #include <netinet/if_ether.h>
50: #endif
51: #include "vrrp_define.h"
52:
53: /* RFC 2338 vrrp header */
54: struct vrrp_hdr {
55: #if BYTE_ORDER == LITTLE_ENDIAN
56: u_int vrrp_t:4, vrrp_v:4;
57: #endif
58: #if BYTE_ORDER == BIG_ENDIAN
59: u_int vrrp_v:4, vrrp_t:4;
60: #endif
61: u_char vr_id;
62: u_char priority;
63: u_char cnt_ip;
64: u_char auth_type;
65: u_char adv_int;
66: u_short csum;
67: /* Some IP adresses, number are not defined */
68: /*
69: * After IP adresses, we can found Authentification Data 1 & 2 (total
70: * of 8 bytes)
71: */
72: };
73:
74: struct vrrp_if {
75: char if_name[IFNAMSIZ];
76: u_char nb_ip;
77: int alive;
78: int nberrors;
79: int checksok;
80: int reportsyslog;
81: struct in_addr ip_addrs[MAX_IP_ALIAS];
82: struct ether_addr ethaddr;
83: struct ether_addr actualethaddr;
84: struct vrrp_ethaddr_list *p, *d;
85: struct vrrp_vlan_list *vlanp, *vland;
86: int carrier_timeout;
87: };
88:
89: struct vrrp_vip {
90: struct in_addr addr;
91: u_char owner;
92: char *if_name;
93: };
94:
95: /* Timers RFC2338-6.2 */
96: struct vrrp_timer {
97: struct timeval master_down_tm;
98: struct timeval adv_tm;
99: };
100:
101: /*
102: * Parameters per Virtual Router RFC2338-6.1.2 and
103: * draft-ietf-vrrp-spec-v2-05.txt
104: */
105: struct vrrp_vr {
106: u_char vr_id;
107: u_char priority;
108: int sd;
109: int ioctl_sd; /* socket used to pass ioctl */
110: struct ether_addr ethaddr;
111: u_char cnt_ip;
112: struct vrrp_vip *vr_ip;
113: u_int *vr_netmask;
114: u_char adv_int;
115: u_int master_down_int;
116: u_int skew_time;
117: struct vrrp_timer tm;
118: u_char preempt_mode; /* False = 0, True = 1 */
119: u_char state; /* 0 = INITIALIZE, 1 = MASTER, 2 = BACKUP */
120: u_char auth_type;
121: u_char auth_data[VRRP_AUTH_DATA_LEN];
122: struct vrrp_if *vr_if;
123: char viface_name[IFNAMSIZ]; /* Real interface name for vrrp announces */
124: int bridge_link_number;
125: #ifdef ENABLE_VRRP_AH
126: struct ah_header *ahctx;
127: #endif
128: char *password;
129: char *master_script;
130: char *backup_script;
131: int *vridsdeps;
132: int fault;
133: int useIKE;
134: int useMonitoredCircuits;
135: int AHencryption;
136: int sendGratuitousArp;
137: int spanningTreeLatency;
138: int monitoredCircuitsClearErrorsCount;
139: };
140:
141: struct vrrp_ethaddr_list {
142: struct ether_addr ethaddr;
143: struct vrrp_ethaddr_list *next;
144: struct vrrp_ethaddr_list *previous;
145: };
146:
147: struct vrrp_vlan_list {
148: char vlan_ifname[IFNAMSIZ];
149: struct vrrp_vlan_list *next;
150: struct vrrp_vlan_list *previous;
151: };
152:
153: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>