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