2 * $Id: rtmp.h,v 1.4 2001-08-03 22:12:54 srittau Exp $
3 * Copyright (c) 1990,1993 Regents of The University of Michigan.
4 * All Rights Reserved. See COPYRIGHT.
6 * We have an rtmptab circular linked list for each gateway. Entries
7 * are inserted in the order we get them. The expectation is that
8 * we will get a complexity of N for the stable case. If we have N
9 * existing entries, and M new entries, we'll have on the order of
10 * N + ( M * N ) complexity (really it will be something more than
11 * that, maybe N + ( M * ( N + 1/2 M )). Note that having a list to
12 * search is superior to a hash table if you are expecting bad data:
13 * you have the opportunity to range-check the incoming data.
15 * We keep several ZIP related flags and counters here. For ZIP Extended
16 * Replies, we must keep a flag indicating that the zone is up or down.
17 * This flag is necessary for ZIP Extended Replies which cross packet
18 * boundaries: even tho the rtmptab entry has data, it is not yet
19 * complete. For ZIP in general, we keep a flag indicating that we've
20 * asked for a ZIP (E)Reply. If this flag is not set, we won't process
21 * ZIP Reply data for given rtmptab entries. Lastly, we keep a count of
22 * the number of times we've asked for ZIP Reply data. When this value
23 * reaches some value (3?), we can optionally stop asking.
27 #define ATALKD_RTMP_H 1
29 #include <sys/cdefs.h>
32 struct rtmptab *rt_next,
34 struct rtmptab *rt_inext,
36 u_short rt_firstnet, rt_lastnet;
40 u_char rt_nzq; /* number of zip queries issued */
41 struct gate *rt_gate; /* gate is NULL for interfaces */
43 const struct interface *rt_iface;
56 #define SZ_RTMPTUPLE 3
58 #define RTMPTAB_PERM 0
59 #define RTMPTAB_GOOD 1
60 #define RTMPTAB_SUSP1 2
61 #define RTMPTAB_SUSP2 3
64 #define RTMPTAB_ZIPQUERY 0x01
65 #define RTMPTAB_HASZONES 0x02
66 #define RTMPTAB_EXTENDED 0x04
67 #define RTMPTAB_ROUTE 0x08
70 #define RTMP_ADD SIOCADDRT
71 #define RTMP_DEL SIOCDELRT
73 #define RTMP_ADD RTM_ADD
74 #define RTMP_DEL RTM_DELETE
77 #define STARTUP_FIRSTNET 0xff00
78 #define STARTUP_LASTNET 0xfffe
81 struct rtmptab *newrt __P((const struct interface *));
82 void rtmp_delzonemap __P((struct rtmptab *));
84 int rtmp_request __P(( struct interface * ));
85 void rtmp_free __P(( struct rtmptab * ));
86 int rtmp_replace __P(( struct rtmptab * ));
87 int looproute __P(( struct interface *, unsigned int ));
88 int gateroute __P(( unsigned int, struct rtmptab * ));
90 #endif /* atalkd/rtmp.h */