1/*
2 * Copyright (c) 1985, 1993
3 *	The Regents of the University of California.  All rights reserved.
4 *
5 * Copyright (c) 1995 John Hay.  All rights reserved.
6 *
7 * This file includes significant work done at Cornell University by
8 * Bill Nesheim.  That work included by permission.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 * 3. All advertising materials mentioning features or use of this software
19 *    must display the following acknowledgement:
20 *	This product includes software developed by the University of
21 *	California, Berkeley and its contributors.
22 * 4. Neither the name of the University nor the names of its contributors
23 *    may be used to endorse or promote products derived from this software
24 *    without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 *	@(#)protocol.h	8.1 (Berkeley) 6/5/93
39 *
40 * $FreeBSD$
41 */
42
43/*
44 * IPX Routing Information Protocol
45 *
46 */
47
48struct netinfo {
49	union ipx_net	rip_dst;		/* destination net */
50	u_short		rip_metric;		/* cost of route */
51	u_short		rip_ticks;		/* cost of route */
52};
53
54struct rip {
55	u_short	rip_cmd;		/* request/response */
56	struct netinfo rip_nets[1];	/* variable length */
57};
58
59/*
60 * Packet types.
61 */
62#define	RIPCMD_REQUEST		1	/* want info */
63#define	RIPCMD_RESPONSE		2	/* responding to request */
64
65#define	RIPCMD_MAX		3
66#ifdef RIPCMDS
67char *ripcmds[RIPCMD_MAX] =
68  { "#0", "REQUEST", "RESPONSE" };
69#endif
70
71#define	HOPCNT_INFINITY		16		/* per IPX */
72#define	DSTNETS_ALL		0xffffffff	/* per IPX */
73#define	MAXRXPACKETSIZE		1500		/* max rx broadcast size */
74#define MAXRIPNETS		50		/* max nets in tx packet */
75
76extern union ipx_net ipx_anynet;
77extern union ipx_net ipx_zeronet;
78
79/*
80 * Timer values used in managing the routing table.
81 * Every update forces an entry's timer to be reset.  After
82 * EXPIRE_TIME without updates, the entry is marked invalid,
83 * but held onto until GARBAGE_TIME so that others may
84 * see it "be deleted".
85 */
86#define	TIMER_RATE		30	/* alarm clocks every 30 seconds */
87
88#define	SUPPLY_INTERVAL		30	/* time to supply tables */
89#define	RIP_INTERVAL		60	/* time to supply rip tables */
90
91#define	EXPIRE_TIME		180	/* time to mark entry invalid */
92#define	GARBAGE_TIME		240	/* time to garbage collect */
93