|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22:
23: /*
24: * Copyright (c) 1988, 1989 Apple Computer, Inc.
25: */
26:
27: #ifndef _NETAT_AT_DDP_BRT_H_
28: #define _NETAT_AT_DDP_BRT_H_
29:
30: typedef struct {
31: int age_flag;
32: at_ifaddr_t *ifID;
33: union {
34: struct etalk_addr addr1;
35: struct atalk_addr addr2;
36: } addrs;
37: at_net_al net;
38: #define et_addr addrs.addr1
39: #define at_addr addrs.addr2
40: } ddp_brt_t;
41:
42: #define BRT_SWEEP_INT (10 * PR_SLOWHZ)
43: #define BRT_BSIZ 4 /* bucket size */
44: #define BRT_NB 16 /* number of buckets */
45: #define BRTSIZE (BRT_BSIZ * BRT_NB)
46:
47: /* age_flag values */
48: #define BRT_EMPTY 0 /* the BRT entry is empty */
49: /* (or aged out). */
50: #define BRT_VALID 1 /* BRT entry contains valid */
51: /* tuple */
52: #define BRT_GETTING_OLD 2 /* BRT entry is a candidate */
53: /* for aging */
54:
55: #define BRT_HASH(a) ((a) % BRT_NB)
56:
57: #define BRT_LOOK(brt, dst_net) { \
58: register n; \
59: brt = &at_ddp_brt[BRT_HASH(dst_net) * BRT_BSIZ]; \
60: for (n = 0 ; ; brt++) { \
61: if (brt->net == dst_net) \
62: break; \
63: if (++n >= BRT_BSIZ) { \
64: brt = NULL; \
65: break; \
66: } \
67: } \
68: }
69:
70: #define NEW_BRT(brt, net) { \
71: register n; \
72: brt = &at_ddp_brt[BRT_HASH(net) * BRT_BSIZ]; \
73: for (n = 0 ; ; brt++) { \
74: if (brt->age_flag == BRT_EMPTY) \
75: break; \
76: if (++n >= BRT_BSIZ) { \
77: brt = NULL; \
78: break; \
79: } \
80: } \
81: }
82:
83: /* Best Router Cache */
84: extern ddp_brt_t at_ddp_brt[BRTSIZE];
85:
86: #endif /* _NETAT_AT_DDP_BRT_H_ */
87:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.