File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / isisd / isis_constants.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:26:11 2012 UTC (12 years, 4 months ago) by misho
Branches: quagga, MAIN
CVS tags: v0_99_20_1, v0_99_20, HEAD
quagga

    1: /*
    2:  * IS-IS Rout(e)ing protocol - isis_constants.h   
    3:  *
    4:  * Copyright (C) 2001,2002   Sampo Saaristo
    5:  *                           Tampere University of Technology      
    6:  *                           Institute of Communications Engineering
    7:  *
    8:  * This program is free software; you can redistribute it and/or modify it 
    9:  * under the terms of the GNU General Public Licenseas published by the Free 
   10:  * Software Foundation; either version 2 of the License, or (at your option) 
   11:  * any later version.
   12:  *
   13:  * This program is distributed in the hope that it will be useful,but WITHOUT 
   14:  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
   15:  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
   16:  * more details.
   17: 
   18:  * You should have received a copy of the GNU General Public License along 
   19:  * with this program; if not, write to the Free Software Foundation, Inc., 
   20:  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
   21:  */
   22: 
   23: #ifndef ISIS_CONSTANTS_H
   24: #define ISIS_CONSTANTS_H
   25: 
   26: /*
   27:  * Architectural constant values from p. 35 of ISO/IEC 10589
   28:  */
   29: 
   30: #define MAX_LINK_METRIC               63
   31: #define MAX_PATH_METRIC               1023
   32: #define ISO_SAP                       0xFE
   33: #define INTRADOMAIN_ROUTEING_SELECTOR 0
   34: #define SEQUENCE_MODULUS              4294967296
   35: #define RECEIVE_LSP_BUFFER_SIZE       1492
   36: 
   37: /*
   38:  * implementation specific jitter values
   39:  */
   40: 
   41: #define IIH_JITTER                    25	/* % */
   42: #define MAX_AGE_JITTER                 5	/* % */
   43: #define MAX_LSP_GEN_JITTER             5	/* % */
   44: #define CSNP_JITTER                   10	/* % */
   45: #define PSNP_JITTER                   10	/* % */
   46: 
   47: #define RANDOM_SPREAD           100000.0
   48: 
   49: /*
   50:  * Default values
   51:  * ISO - 10589
   52:  * Section 7.3.21 - Parameters
   53:  */
   54: #define MAX_AGE                       1200
   55: #define ZERO_AGE_LIFETIME             60
   56: #define MAX_LSP_GEN_INTERVAL          900
   57: #define MIN_LSP_GEN_INTERVAL          30
   58: #define MIN_LSP_TRANS_INTERVAL        5
   59: #define ISIS_MIN_LSP_LIFETIME         380
   60: #define CSNP_INTERVAL                 10
   61: #define PSNP_INTERVAL                 2
   62: #define ISIS_MAX_PATH_SPLITS          3
   63: 
   64: #define ISIS_LEVELS                   2
   65: #define ISIS_LEVEL1                   1
   66: #define ISIS_LEVEL2                   2
   67: 
   68: #define HELLO_INTERVAL                10
   69: #define HELLO_MINIMAL HELLO_INTERVAL
   70: #define HELLO_MULTIPLIER              3
   71: #define DEFAULT_PRIORITY              64
   72: /* different vendors implement different values 5-10 on average */
   73: #define LSP_GEN_INTERVAL_DEFAULT      10
   74: #define LSP_INTERVAL                  33	/* msecs */
   75: #define DEFAULT_CIRCUIT_METRICS 10
   76: #define METRICS_UNSUPPORTED 0x80
   77: #define PERIODIC_SPF_INTERVAL         60	/* at the top of my head */
   78: #define MINIMUM_SPF_INTERVAL           5	/* .. same here          */
   79: 
   80: /*
   81:  * NLPID values
   82:  */
   83: #define NLPID_IP   204
   84: #define NLPID_IPV6 142
   85: #define NLPID_SNAP 128
   86: #define NLPID_CLNP 129
   87: #define NLPID_ESIS 130
   88: 
   89: /*
   90:  * Return values for functions
   91:  */
   92: #define ISIS_OK       0
   93: #define ISIS_WARNING  1
   94: #define ISIS_ERROR    2
   95: #define ISIS_CRITICAL 3
   96: 
   97: /*
   98:  * IS-IS Circuit Types
   99:  */
  100: 
  101: #define IS_LEVEL_1       1
  102: #define IS_LEVEL_2       2
  103: #define IS_LEVEL_1_AND_2 3
  104: 
  105: #define SNPA_ADDRSTRLEN 18
  106: #define ISIS_SYS_ID_LEN  6
  107: #define SYSID_STRLEN    24
  108: 
  109: /*
  110:  * LSP bit masks
  111:  */
  112: #define LSPBIT_P   0x80
  113: #define LSPBIT_ATT 0x78
  114: #define LSPBIT_OL  0x04
  115: #define LSPBIT_IST 0x03
  116: 
  117: /*
  118:  * LSP bit masking macros
  119:  * taken from tcpdumps
  120:  * print-isoclns.c
  121:  */
  122: 
  123: #define ISIS_MASK_LSP_OL_BIT(x)            ((x)&0x4)
  124: #define ISIS_MASK_LSP_IS_L1_BIT(x)         ((x)&0x1)
  125: #define ISIS_MASK_LSP_IS_L2_BIT(x)         ((x)&0x2)
  126: #define ISIS_MASK_LSP_PARTITION_BIT(x)     ((x)&0x80)
  127: #define ISIS_MASK_LSP_ATT_BITS(x)          ((x)&0x78)
  128: #define ISIS_MASK_LSP_ATT_ERROR_BIT(x)     ((x)&0x40)
  129: #define ISIS_MASK_LSP_ATT_EXPENSE_BIT(x)   ((x)&0x20)
  130: #define ISIS_MASK_LSP_ATT_DELAY_BIT(x)     ((x)&0x10)
  131: #define ISIS_MASK_LSP_ATT_DEFAULT_BIT(x)   ((x)&0x8)
  132: 
  133: #define LLC_LEN 3
  134: 
  135: /* we need to be aware of the fact we are using ISO sized
  136:  * packets, using isomtu = mtu - LLC_LEN
  137:  */
  138: #define ISO_MTU(C) \
  139:           (C->circ_type==CIRCUIT_T_BROADCAST) ? \
  140:           (C->interface->mtu - LLC_LEN) : (C->interface->mtu)
  141: 
  142: #ifndef ETH_ALEN
  143: #define ETH_ALEN 6
  144: #endif
  145: 
  146: #endif /* ISIS_CONSTANTS_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>