Merge branch 'vendor/BIND' into bind_vendor2
[dragonfly.git] / usr.sbin / IPXrouted / protocol.h
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: src/usr.sbin/IPXrouted/protocol.h,v 1.5 1999/08/28 01:15:03 peter Exp $
41  * $DragonFly: src/usr.sbin/IPXrouted/protocol.h,v 1.2 2003/06/17 04:29:52 dillon Exp $
42  */
43
44 /*
45  * IPX Routing Information Protocol
46  *
47  */
48
49 struct netinfo {
50         union ipx_net   rip_dst;                /* destination net */
51         u_short         rip_metric;             /* cost of route */
52         u_short         rip_ticks;              /* cost of route */
53 };
54
55 struct rip {
56         u_short rip_cmd;                /* request/response */
57         struct netinfo rip_nets[1];     /* variable length */
58 };
59  
60 /*
61  * Packet types.
62  */
63 #define RIPCMD_REQUEST          1       /* want info */
64 #define RIPCMD_RESPONSE         2       /* responding to request */
65
66 #define RIPCMD_MAX              3
67 #ifdef RIPCMDS
68 char *ripcmds[RIPCMD_MAX] =
69   { "#0", "REQUEST", "RESPONSE" };
70 #endif
71
72 #define HOPCNT_INFINITY         16              /* per IPX */
73 #define DSTNETS_ALL             0xffffffff      /* per IPX */
74 #define MAXRXPACKETSIZE         1500            /* max rx broadcast size */
75 #define MAXRIPNETS              50              /* max nets in tx packet */
76
77 extern union ipx_net ipx_anynet;
78 extern union ipx_net ipx_zeronet;
79
80 /*
81  * Timer values used in managing the routing table.
82  * Every update forces an entry's timer to be reset.  After
83  * EXPIRE_TIME without updates, the entry is marked invalid,
84  * but held onto until GARBAGE_TIME so that others may
85  * see it "be deleted".
86  */
87 #define TIMER_RATE              30      /* alarm clocks every 30 seconds */
88
89 #define SUPPLY_INTERVAL         30      /* time to supply tables */
90 #define RIP_INTERVAL            60      /* time to supply rip tables */
91
92 #define EXPIRE_TIME             180     /* time to mark entry invalid */
93 #define GARBAGE_TIME            240     /* time to garbage collect */