1/*
2 * Redistribution and use in source and binary forms, with or without
3 * modification, are permitted provided that: (1) source code
4 * distributions retain the above copyright notice and this paragraph
5 * in its entirety, and (2) distributions including binary code include
6 * the above copyright notice and this paragraph in its entirety in
7 * the documentation or other materials provided with the distribution.
8 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
9 * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
10 * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
11 * FOR A PARTICULAR PURPOSE.
12 *
13 * Original code by Hannes Gredler (hannes@juniper.net)
14 */
15
16#include <sys/cdefs.h>
17#ifndef lint
18#if 0
19static const char rcsid[] _U_ =
20    "@(#) Header: /tcpdump/master/tcpdump/gmpls.c,v 1.7 2006-04-14 07:11:59 hannes Exp (LBL)";
21#else
22__RCSID("$NetBSD$");
23#endif
24#endif
25
26#ifdef HAVE_CONFIG_H
27#include "config.h"
28#endif
29
30#include <tcpdump-stdinc.h>
31
32#include "interface.h"
33#include "gmpls.h"
34
35/* rfc3471 */
36const struct tok gmpls_link_prot_values[] = {
37    { 0x01, "Extra Traffic"},
38    { 0x02, "Unprotected"},
39    { 0x04, "Shared"},
40    { 0x08, "Dedicated 1:1"},
41    { 0x10, "Dedicated 1+1"},
42    { 0x20, "Enhanced"},
43    { 0x40, "Reserved"},
44    { 0x80, "Reserved"},
45    { 0, NULL }
46};
47
48/* rfc3471 */
49const struct tok gmpls_switch_cap_values[] = {
50    { GMPLS_PSC1, "Packet-Switch Capable-1"},
51    { GMPLS_PSC2, "Packet-Switch Capable-2"},
52    { GMPLS_PSC3, "Packet-Switch Capable-3"},
53    { GMPLS_PSC4, "Packet-Switch Capable-4"},
54    { GMPLS_L2SC, "Layer-2 Switch Capable"},
55    { GMPLS_TSC, "Time-Division-Multiplex"},
56    { GMPLS_LSC, "Lambda-Switch Capable"},
57    { GMPLS_FSC, "Fiber-Switch Capable"},
58    { 0, NULL }
59};
60
61/* rfc4205 */
62const struct tok gmpls_switch_cap_tsc_indication_values[] = {
63    { 0, "Standard SONET/SDH" },
64    { 1, "Arbitrary SONET/SDH" },
65    { 0, NULL }
66};
67
68/* rfc3471 */
69const struct tok gmpls_encoding_values[] = {
70    { 1,    "Packet"},
71    { 2,    "Ethernet V2/DIX"},
72    { 3,    "ANSI/ETSI PDH"},
73    { 4,    "Reserved"},
74    { 5,    "SDH ITU-T G.707/SONET ANSI T1.105"},
75    { 6,    "Reserved"},
76    { 7,    "Digital Wrapper"},
77    { 8,    "Lambda (photonic)"},
78    { 9,    "Fiber"},
79    { 10,   "Reserved"},
80    { 11,   "FiberChannel"},
81    { 0, NULL }
82};
83
84/* rfc3471 */
85const struct tok gmpls_payload_values[] = {
86    {  0,   "Unknown"},
87    {  1,   "Reserved"},
88    {  2,   "Reserved"},
89    {  3,   "Reserved"},
90    {  4,   "Reserved"},
91    {  5,   "Asynchronous mapping of E4"},
92    {  6,   "Asynchronous mapping of DS3/T3"},
93    {  7,   "Asynchronous mapping of E3"},
94    {  8,   "Bit synchronous mapping of E3"},
95    {  9,   "Byte synchronous mapping of E3"},
96    { 10,   "Asynchronous mapping of DS2/T2"},
97    { 11,   "Bit synchronous mapping of DS2/T2"},
98    { 12,   "Reserved"},
99    { 13,   "Asynchronous mapping of E1"},
100    { 14,   "Byte synchronous mapping of E1"},
101    { 15,   "Byte synchronous mapping of 31 * DS0"},
102    { 16,   "Asynchronous mapping of DS1/T1"},
103    { 17,   "Bit synchronous mapping of DS1/T1"},
104    { 18,   "Byte synchronous mapping of DS1/T1"},
105    { 19,   "VC-11 in VC-12"},
106    { 20,   "Reserved"},
107    { 21,   "Reserved"},
108    { 22,   "DS1 SF Asynchronous"},
109    { 23,   "DS1 ESF Asynchronous"},
110    { 24,   "DS3 M23 Asynchronous"},
111    { 25,   "DS3 C-Bit Parity Asynchronous"},
112    { 26,   "VT/LOVC"},
113    { 27,   "STS SPE/HOVC"},
114    { 28,   "POS - No Scrambling, 16 bit CRC"},
115    { 29,   "POS - No Scrambling, 32 bit CRC"},
116    { 30,   "POS - Scrambling, 16 bit CRC"},
117    { 31,   "POS - Scrambling, 32 bit CRC"},
118    { 32,   "ATM mapping"},
119    { 33,   "Ethernet PHY"},
120    { 34,   "SONET/SDH"},
121    { 35,   "Reserved (SONET deprecated)"},
122    { 36,   "Digital Wrapper"},
123    { 37,   "Lambda"},
124    { 38,   "ANSI/ETSI PDH"},
125    { 39,   "Reserved"},
126    { 40,   "Link Access Protocol SDH (X.85 and X.86)"},
127    { 41,   "FDDI"},
128    { 42,   "DQDB (ETSI ETS 300 216)"},
129    { 43,   "FiberChannel-3 (Services)"},
130    { 44,   "HDLC"},
131    { 45,   "Ethernet V2/DIX (only)"},
132    { 46,   "Ethernet 802.3 (only)"},
133/* draft-ietf-ccamp-gmpls-g709-04.txt */
134    { 47,   "G.709 ODUj"},
135    { 48,   "G.709 OTUk(v)"},
136    { 49,   "CBR/CBRa"},
137    { 50,   "CBRb"},
138    { 51,   "BSOT"},
139    { 52,   "BSNT"},
140    { 53,   "IP/PPP (GFP)"},
141    { 54,   "Ethernet MAC (framed GFP)"},
142    { 55,   "Ethernet PHY (transparent GFP)"},
143    { 56,   "ESCON"},
144    { 57,   "FICON"},
145    { 58,   "Fiber Channel"},
146    { 0, NULL }
147};
148
149/*
150 * Link Type values used by LMP Service Discovery (specifically, the Client
151 * Port Service Attributes Object). See UNI 1.0 section 9.4.2 for details.
152 */
153const struct tok lmp_sd_service_config_cpsa_link_type_values[] = {
154    { 5, "SDH ITU-T G.707"},
155    { 6, "SONET ANSI T1.105"},
156    { 0, NULL}
157};
158
159/*
160 * Signal Type values for SDH links used by LMP Service Discovery (specifically,
161 * the Client Port Service Attributes Object). See UNI 1.0 section 9.4.2 for
162 * details.
163 */
164const struct tok lmp_sd_service_config_cpsa_signal_type_sdh_values[] = {
165    { 5,  "VC-3"},
166    { 6,  "VC-4"},
167    { 7,  "STM-0"},
168    { 8,  "STM-1"},
169    { 9,  "STM-4"},
170    { 10, "STM-16"},
171    { 11, "STM-64"},
172    { 12, "STM-256"},
173    { 0, NULL}
174};
175
176/*
177 * Signal Type values for SONET links used by LMP Service Discovery (specifically,
178 * the Client Port Service Attributes Object). See UNI 1.0 section 9.4.2 for
179 * details.
180 */
181const struct tok lmp_sd_service_config_cpsa_signal_type_sonet_values[] = {
182    { 5,  "STS-1 SPE"},
183    { 6,  "STS-3c SPE"},
184    { 7,  "STS-1"},
185    { 8,  "STM-3"},
186    { 9,  "STM-12"},
187    { 10, "STM-48"},
188    { 11, "STM-192"},
189    { 12, "STM-768"},
190    { 0, NULL}
191};
192
193#define DIFFSERV_BC_MODEL_RDM           0   /* draft-ietf-tewg-diff-te-proto-07 */
194#define DIFFSERV_BC_MODEL_MAM           1   /* draft-ietf-tewg-diff-te-proto-07 */
195#define DIFFSERV_BC_MODEL_EXTD_MAM      254 /* experimental */
196
197const struct tok diffserv_te_bc_values[] = {
198    {  DIFFSERV_BC_MODEL_RDM, "Russian dolls"},
199    {  DIFFSERV_BC_MODEL_MAM, "Maximum allocation"},
200    {  DIFFSERV_BC_MODEL_EXTD_MAM, "Maximum allocation with E-LSP support"},
201    { 0, NULL }
202};
203