|
|
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.