xref: /openbsd/usr.sbin/ripd/rip.h (revision 726964a1)
1 /*	$OpenBSD: rip.h,v 1.4 2007/10/18 17:00:59 deraadt Exp $ */
2 
3 /*
4  * Copyright (c) 2006 Michele Marchetto <mydecay@openbeer.it>
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 /* RIP protocol definitions */
20 
21 #ifndef	_RIP_H_
22 #define	_RIP_H_
23 
24 /* misc */
25 #define	RIP_VERSION		2
26 #define ALL_RIP_ROUTERS		"224.0.0.9"
27 #define	RIP_PORT		520
28 
29 #define	MIN_MD_ID		0
30 #define	MAX_MD_ID		255
31 
32 /* metric */
33 #define	INFINITY		16
34 #define	DEFAULT_COST		1
35 
36 /* timers */
37 #define	KEEPALIVE		30
38 #define	OFFSET			10
39 #define	FAILED_NBR_TIMEOUT	86400
40 
41 #define MAX_RIP_ENTRIES		25
42 
43 /* RIP command */
44 #define	COMMAND_REQUEST		1
45 #define	COMMAND_RESPONSE	2
46 
47 #define	RIP_HDR_LEN		sizeof(struct rip_hdr)
48 #define	RIP_ENTRY_LEN		sizeof(struct rip_entry)
49 
50 struct rip_hdr {
51 	u_int8_t	command;
52 	u_int8_t	version;
53 	u_int16_t	dummy;
54 };
55 
56 struct rip_entry {
57 	u_int16_t	AFI;
58 	u_int16_t	route_tag;
59 	u_int32_t	address;
60 	u_int32_t	mask;
61 	u_int32_t	nexthop;
62 	u_int32_t	metric;
63 };
64 
65 /* auth */
66 #define AUTH			0xFFFF
67 #define	AUTH_TRLR_HDR_LEN	4
68 
69 /* auth general struct */
70 struct rip_auth {
71 	u_int16_t	 auth_fixed;
72 	u_int16_t	 auth_type;
73 };
74 
75 /* Keyed MD5 auth struct */
76 struct md5_auth {
77 	u_int16_t	 auth_offset;
78 	u_int8_t	 auth_keyid;
79 	u_int8_t	 auth_length;
80 	u_int32_t	 auth_seq;
81 	u_int64_t	 auth_reserved;
82 };
83 
84 #endif /* _RIP_H_ */
85