summaryrefslogtreecommitdiff
path: root/isisd/isis_constants.h
blob: 1b75ba6b160e7e1af7aab8782956dc989251731a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
 * IS-IS Rout(e)ing protocol - isis_constants.h   
 *
 * Copyright (C) 2001,2002   Sampo Saaristo
 *                           Tampere University of Technology      
 *                           Institute of Communications Engineering
 *
 * This program is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU General Public Licenseas published by the Free 
 * Software Foundation; either version 2 of the License, or (at your option) 
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,but WITHOUT 
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
 * more details.

 * You should have received a copy of the GNU General Public License along 
 * with this program; if not, write to the Free Software Foundation, Inc., 
 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

#ifndef ISIS_CONSTANTS_H
#define ISIS_CONSTANTS_H

/*
 * Architectural constant values from p. 35 of ISO/IEC 10589
 */

#define MAX_LINK_METRIC               63
#define MAX_PATH_METRIC               1023
#define ISO_SAP                       0xFE
#define INTRADOMAIN_ROUTEING_SELECTOR 0
#define SEQUENCE_MODULUS              4294967296
#define RECEIVE_LSP_BUFFER_SIZE       1492

/*
 * implementation specific jitter values
 */

#define IIH_JITTER                    25	/* % */
#define MAX_AGE_JITTER                 5	/* % */
#define MAX_LSP_GEN_JITTER             5	/* % */
#define CSNP_JITTER                   10	/* % */
#define PSNP_JITTER                   10	/* % */

#define RANDOM_SPREAD           100000.0

/*
 * Default values
 * ISO - 10589
 * Section 7.3.21 - Parameters
 */
#define MAX_AGE                       1200
#define ZERO_AGE_LIFETIME             60
#define MAX_LSP_GEN_INTERVAL          900
#define MIN_LSP_GEN_INTERVAL          30
#define MIN_LSP_TRANS_INTERVAL        5
#define ISIS_MIN_LSP_LIFETIME         380
#define CSNP_INTERVAL                 10
#define PSNP_INTERVAL                 2
#define ISIS_MAX_PATH_SPLITS          3

#define ISIS_LEVELS                   2
#define ISIS_LEVEL1                   1
#define ISIS_LEVEL2                   2

#define HELLO_INTERVAL                10
#define HELLO_MINIMAL HELLO_INTERVAL
#define HELLO_MULTIPLIER              3
#define DEFAULT_PRIORITY              64
/* different vendors implement different values 5-10 on average */
#define LSP_GEN_INTERVAL_DEFAULT      10
#define LSP_INTERVAL                  33	/* msecs */
#define DEFAULT_CIRCUIT_METRICS 10
#define METRICS_UNSUPPORTED 0x80
#define PERIODIC_SPF_INTERVAL         60	/* at the top of my head */
#define MINIMUM_SPF_INTERVAL           5	/* .. same here          */

/*
 * NLPID values
 */
#define NLPID_IP   204
#define NLPID_IPV6 142
#define NLPID_SNAP 128
#define NLPID_CLNP 129
#define NLPID_ESIS 130

/*
 * Return values for functions
 */
#define ISIS_OK       0
#define ISIS_WARNING  1
#define ISIS_ERROR    2
#define ISIS_CRITICAL 3

/*
 * IS-IS Circuit Types
 */

#define IS_LEVEL_1       1
#define IS_LEVEL_2       2
#define IS_LEVEL_1_AND_2 3

#define SNPA_ADDRSTRLEN 18
#define ISIS_SYS_ID_LEN  6
#define SYSID_STRLEN    24

/*
 * LSP bit masks
 */
#define LSPBIT_P   0x80
#define LSPBIT_ATT 0x78
#define LSPBIT_OL  0x04
#define LSPBIT_IST 0x03

/*
 * LSP bit masking macros
 * taken from tcpdumps
 * print-isoclns.c
 */

#define ISIS_MASK_LSP_OL_BIT(x)            ((x)&0x4)
#define ISIS_MASK_LSP_IS_L1_BIT(x)         ((x)&0x1)
#define ISIS_MASK_LSP_IS_L2_BIT(x)         ((x)&0x2)
#define ISIS_MASK_LSP_PARTITION_BIT(x)     ((x)&0x80)
#define ISIS_MASK_LSP_ATT_BITS(x)          ((x)&0x78)
#define ISIS_MASK_LSP_ATT_ERROR_BIT(x)     ((x)&0x40)
#define ISIS_MASK_LSP_ATT_EXPENSE_BIT(x)   ((x)&0x20)
#define ISIS_MASK_LSP_ATT_DELAY_BIT(x)     ((x)&0x10)
#define ISIS_MASK_LSP_ATT_DEFAULT_BIT(x)   ((x)&0x8)

#define LLC_LEN 3

/* we need to be aware of the fact we are using ISO sized
 * packets, using isomtu = mtu - LLC_LEN
 */
#define ISO_MTU(C) \
          (C->circ_type==CIRCUIT_T_BROADCAST) ? \
          (C->interface->mtu - LLC_LEN) : (C->interface->mtu)

#ifndef ETH_ALEN
#define ETH_ALEN 6
#endif

#endif /* ISIS_CONSTANTS_H */