blob: 1046b0014c4fee743c543412f4aee8a75143b9bf (
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
/*
* 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; see the file COPYING; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef ISIS_CONSTANTS_H
#define ISIS_CONSTANTS_H
/*
* Architectural constant values from p. 35 of ISO/IEC 10589
*/
#define MAX_NARROW_LINK_METRIC 63
#define MAX_NARROW_PATH_METRIC 1023
#define MAX_WIDE_LINK_METRIC 0x00FFFFFF /* RFC4444 */
#define MAX_WIDE_PATH_METRIC 0xFE000000 /* RFC3787 */
#define ISO_SAP 0xFE
#define INTRADOMAIN_ROUTEING_SELECTOR 0
#define SEQUENCE_MODULUS 4294967296
#define ISO9542_ESIS 0x82
#define ISO10589_ISIS 0x83
/*
* implementation specific jitter values
*/
#define IIH_JITTER 10 /* % */
#define MAX_AGE_JITTER 5 /* % */
#define MAX_LSP_GEN_JITTER 5 /* % */
#define CSNP_JITTER 10 /* % */
#define PSNP_JITTER 10 /* % */
#define RANDOM_SPREAD 100000.0
#define ISIS_LEVELS 2
#define ISIS_LEVEL1 1
#define ISIS_LEVEL2 2
/*
* Default values
* ISO - 10589 Section 7.3.21 - Parameters
* RFC 4444
*/
#define MAX_AGE 1200
#define ZERO_AGE_LIFETIME 60
#define MIN_LSP_LIFETIME 350
#define MAX_LSP_LIFETIME 65535
#define DEFAULT_LSP_LIFETIME 1200
#define MIN_MAX_LSP_GEN_INTERVAL 1
#define MAX_MAX_LSP_GEN_INTERVAL 65235
#define DEFAULT_MAX_LSP_GEN_INTERVAL 900
#define MIN_MIN_LSP_GEN_INTERVAL 1
#define MAX_MIN_LSP_GEN_INTERVAL 120 /* RFC 4444 says 65535 */
#define DEFAULT_MIN_LSP_GEN_INTERVAL 30
#define MIN_LSP_RETRANS_INTERVAL 5 /* Seconds */
#define MIN_CSNP_INTERVAL 1
#define MAX_CSNP_INTERVAL 600
#define DEFAULT_CSNP_INTERVAL 10
#define MIN_PSNP_INTERVAL 1
#define MAX_PSNP_INTERVAL 120
#define DEFAULT_PSNP_INTERVAL 2
#define MIN_HELLO_INTERVAL 1
#define MAX_HELLO_INTERVAL 600
#define DEFAULT_HELLO_INTERVAL 3
#define MIN_HELLO_MULTIPLIER 2
#define MAX_HELLO_MULTIPLIER 100
#define DEFAULT_HELLO_MULTIPLIER 10
#define MIN_PRIORITY 0
#define MAX_PRIORITY 127
#define DEFAULT_PRIORITY 64
/* min and max metric varies by new vs old metric types */
#define DEFAULT_CIRCUIT_METRIC 10
#define METRICS_UNSUPPORTED 0x80
#define MINIMUM_SPF_INTERVAL 1
#define ISIS_MAX_PATH_SPLITS 64
/*
* 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 ISIS_NSEL_LEN 1
#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) \
((if_is_broadcast((C)->interface)) ? (C->interface->mtu - LLC_LEN) \
: (C->interface->mtu))
#define MAX_LLC_LEN 0x5ff
#define ETHERTYPE_EXT_LLC 0x8870
static inline uint16_t isis_ethertype(size_t len)
{
if (len > MAX_LLC_LEN)
return ETHERTYPE_EXT_LLC;
return len;
}
#endif /* ISIS_CONSTANTS_H */
|