xref: /netbsd-src/external/bsd/tcpdump/dist/gmpls.c (revision 26ba0b503b498a5194a71ac319838b7f5497f3fe)
10f74e101Schristos /*
20f74e101Schristos  * Redistribution and use in source and binary forms, with or without
30f74e101Schristos  * modification, are permitted provided that: (1) source code
40f74e101Schristos  * distributions retain the above copyright notice and this paragraph
50f74e101Schristos  * in its entirety, and (2) distributions including binary code include
60f74e101Schristos  * the above copyright notice and this paragraph in its entirety in
70f74e101Schristos  * the documentation or other materials provided with the distribution.
80f74e101Schristos  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
90f74e101Schristos  * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
100f74e101Schristos  * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
110f74e101Schristos  * FOR A PARTICULAR PURPOSE.
120f74e101Schristos  *
1372c96ff3Schristos  * Original code by Hannes Gredler (hannes@gredler.at)
140f74e101Schristos  */
150f74e101Schristos 
1611b3aaa1Schristos #include <sys/cdefs.h>
170f74e101Schristos #ifndef lint
18*26ba0b50Schristos __RCSID("$NetBSD: gmpls.c,v 1.8 2024/09/02 16:15:30 christos Exp $");
190f74e101Schristos #endif
200f74e101Schristos 
21c74ad251Schristos #include <config.h>
220f74e101Schristos 
23c74ad251Schristos #include "netdissect-stdinc.h"
240f74e101Schristos 
25fdccd7e4Schristos #include "netdissect.h"
260f74e101Schristos #include "gmpls.h"
270f74e101Schristos 
280f74e101Schristos /* rfc3471 */
290f74e101Schristos const struct tok gmpls_link_prot_values[] = {
300f74e101Schristos     { 0x01, "Extra Traffic"},
310f74e101Schristos     { 0x02, "Unprotected"},
320f74e101Schristos     { 0x04, "Shared"},
330f74e101Schristos     { 0x08, "Dedicated 1:1"},
340f74e101Schristos     { 0x10, "Dedicated 1+1"},
350f74e101Schristos     { 0x20, "Enhanced"},
360f74e101Schristos     { 0x40, "Reserved"},
370f74e101Schristos     { 0x80, "Reserved"},
380f74e101Schristos     { 0, NULL }
390f74e101Schristos };
400f74e101Schristos 
410f74e101Schristos /* rfc3471 */
420f74e101Schristos const struct tok gmpls_switch_cap_values[] = {
430f74e101Schristos     { GMPLS_PSC1, "Packet-Switch Capable-1"},
440f74e101Schristos     { GMPLS_PSC2, "Packet-Switch Capable-2"},
450f74e101Schristos     { GMPLS_PSC3, "Packet-Switch Capable-3"},
460f74e101Schristos     { GMPLS_PSC4, "Packet-Switch Capable-4"},
470f74e101Schristos     { GMPLS_L2SC, "Layer-2 Switch Capable"},
480f74e101Schristos     { GMPLS_TSC, "Time-Division-Multiplex"},
490f74e101Schristos     { GMPLS_LSC, "Lambda-Switch Capable"},
500f74e101Schristos     { GMPLS_FSC, "Fiber-Switch Capable"},
510f74e101Schristos     { 0, NULL }
520f74e101Schristos };
530f74e101Schristos 
540f74e101Schristos /* rfc4205 */
550f74e101Schristos const struct tok gmpls_switch_cap_tsc_indication_values[] = {
560f74e101Schristos     { 0, "Standard SONET/SDH" },
570f74e101Schristos     { 1, "Arbitrary SONET/SDH" },
580f74e101Schristos     { 0, NULL }
590f74e101Schristos };
600f74e101Schristos 
610f74e101Schristos /* rfc3471 */
620f74e101Schristos const struct tok gmpls_encoding_values[] = {
630f74e101Schristos     { 1,    "Packet"},
640f74e101Schristos     { 2,    "Ethernet V2/DIX"},
650f74e101Schristos     { 3,    "ANSI/ETSI PDH"},
660f74e101Schristos     { 4,    "Reserved"},
670f74e101Schristos     { 5,    "SDH ITU-T G.707/SONET ANSI T1.105"},
680f74e101Schristos     { 6,    "Reserved"},
690f74e101Schristos     { 7,    "Digital Wrapper"},
700f74e101Schristos     { 8,    "Lambda (photonic)"},
710f74e101Schristos     { 9,    "Fiber"},
720f74e101Schristos     { 10,   "Reserved"},
730f74e101Schristos     { 11,   "FiberChannel"},
740f74e101Schristos     { 0, NULL }
750f74e101Schristos };
760f74e101Schristos 
770f74e101Schristos /* rfc3471 */
780f74e101Schristos const struct tok gmpls_payload_values[] = {
790f74e101Schristos     {  0,   "Unknown"},
800f74e101Schristos     {  1,   "Reserved"},
810f74e101Schristos     {  2,   "Reserved"},
820f74e101Schristos     {  3,   "Reserved"},
830f74e101Schristos     {  4,   "Reserved"},
840f74e101Schristos     {  5,   "Asynchronous mapping of E4"},
850f74e101Schristos     {  6,   "Asynchronous mapping of DS3/T3"},
860f74e101Schristos     {  7,   "Asynchronous mapping of E3"},
870f74e101Schristos     {  8,   "Bit synchronous mapping of E3"},
880f74e101Schristos     {  9,   "Byte synchronous mapping of E3"},
890f74e101Schristos     { 10,   "Asynchronous mapping of DS2/T2"},
900f74e101Schristos     { 11,   "Bit synchronous mapping of DS2/T2"},
910f74e101Schristos     { 12,   "Reserved"},
920f74e101Schristos     { 13,   "Asynchronous mapping of E1"},
930f74e101Schristos     { 14,   "Byte synchronous mapping of E1"},
940f74e101Schristos     { 15,   "Byte synchronous mapping of 31 * DS0"},
950f74e101Schristos     { 16,   "Asynchronous mapping of DS1/T1"},
960f74e101Schristos     { 17,   "Bit synchronous mapping of DS1/T1"},
970f74e101Schristos     { 18,   "Byte synchronous mapping of DS1/T1"},
980f74e101Schristos     { 19,   "VC-11 in VC-12"},
990f74e101Schristos     { 20,   "Reserved"},
1000f74e101Schristos     { 21,   "Reserved"},
1010f74e101Schristos     { 22,   "DS1 SF Asynchronous"},
1020f74e101Schristos     { 23,   "DS1 ESF Asynchronous"},
1030f74e101Schristos     { 24,   "DS3 M23 Asynchronous"},
1040f74e101Schristos     { 25,   "DS3 C-Bit Parity Asynchronous"},
1050f74e101Schristos     { 26,   "VT/LOVC"},
1060f74e101Schristos     { 27,   "STS SPE/HOVC"},
1070f74e101Schristos     { 28,   "POS - No Scrambling, 16 bit CRC"},
1080f74e101Schristos     { 29,   "POS - No Scrambling, 32 bit CRC"},
1090f74e101Schristos     { 30,   "POS - Scrambling, 16 bit CRC"},
1100f74e101Schristos     { 31,   "POS - Scrambling, 32 bit CRC"},
1110f74e101Schristos     { 32,   "ATM mapping"},
1120f74e101Schristos     { 33,   "Ethernet PHY"},
1130f74e101Schristos     { 34,   "SONET/SDH"},
1140f74e101Schristos     { 35,   "Reserved (SONET deprecated)"},
1150f74e101Schristos     { 36,   "Digital Wrapper"},
1160f74e101Schristos     { 37,   "Lambda"},
1170f74e101Schristos     { 38,   "ANSI/ETSI PDH"},
1180f74e101Schristos     { 39,   "Reserved"},
1190f74e101Schristos     { 40,   "Link Access Protocol SDH (X.85 and X.86)"},
1200f74e101Schristos     { 41,   "FDDI"},
1210f74e101Schristos     { 42,   "DQDB (ETSI ETS 300 216)"},
1220f74e101Schristos     { 43,   "FiberChannel-3 (Services)"},
1230f74e101Schristos     { 44,   "HDLC"},
1240f74e101Schristos     { 45,   "Ethernet V2/DIX (only)"},
1250f74e101Schristos     { 46,   "Ethernet 802.3 (only)"},
1260f74e101Schristos /* draft-ietf-ccamp-gmpls-g709-04.txt */
1270f74e101Schristos     { 47,   "G.709 ODUj"},
1280f74e101Schristos     { 48,   "G.709 OTUk(v)"},
1290f74e101Schristos     { 49,   "CBR/CBRa"},
1300f74e101Schristos     { 50,   "CBRb"},
1310f74e101Schristos     { 51,   "BSOT"},
1320f74e101Schristos     { 52,   "BSNT"},
1330f74e101Schristos     { 53,   "IP/PPP (GFP)"},
1340f74e101Schristos     { 54,   "Ethernet MAC (framed GFP)"},
1350f74e101Schristos     { 55,   "Ethernet PHY (transparent GFP)"},
1360f74e101Schristos     { 56,   "ESCON"},
1370f74e101Schristos     { 57,   "FICON"},
1380f74e101Schristos     { 58,   "Fiber Channel"},
1390f74e101Schristos     { 0, NULL }
1400f74e101Schristos };
1410f74e101Schristos 
1420f74e101Schristos /*
1430f74e101Schristos  * Link Type values used by LMP Service Discovery (specifically, the Client
1440f74e101Schristos  * Port Service Attributes Object). See UNI 1.0 section 9.4.2 for details.
1450f74e101Schristos  */
1460f74e101Schristos const struct tok lmp_sd_service_config_cpsa_link_type_values[] = {
1470f74e101Schristos     { 5, "SDH ITU-T G.707"},
1480f74e101Schristos     { 6, "SONET ANSI T1.105"},
1490f74e101Schristos     { 0, NULL}
1500f74e101Schristos };
1510f74e101Schristos 
1520f74e101Schristos /*
1530f74e101Schristos  * Signal Type values for SDH links used by LMP Service Discovery (specifically,
1540f74e101Schristos  * the Client Port Service Attributes Object). See UNI 1.0 section 9.4.2 for
1550f74e101Schristos  * details.
1560f74e101Schristos  */
1570f74e101Schristos const struct tok lmp_sd_service_config_cpsa_signal_type_sdh_values[] = {
1580f74e101Schristos     { 5,  "VC-3"},
1590f74e101Schristos     { 6,  "VC-4"},
1600f74e101Schristos     { 7,  "STM-0"},
1610f74e101Schristos     { 8,  "STM-1"},
1620f74e101Schristos     { 9,  "STM-4"},
1630f74e101Schristos     { 10, "STM-16"},
1640f74e101Schristos     { 11, "STM-64"},
1650f74e101Schristos     { 12, "STM-256"},
1660f74e101Schristos     { 0, NULL}
1670f74e101Schristos };
1680f74e101Schristos 
1690f74e101Schristos /*
1700f74e101Schristos  * Signal Type values for SONET links used by LMP Service Discovery (specifically,
1710f74e101Schristos  * the Client Port Service Attributes Object). See UNI 1.0 section 9.4.2 for
1720f74e101Schristos  * details.
1730f74e101Schristos  */
1740f74e101Schristos const struct tok lmp_sd_service_config_cpsa_signal_type_sonet_values[] = {
1750f74e101Schristos     { 5,  "STS-1 SPE"},
1760f74e101Schristos     { 6,  "STS-3c SPE"},
1770f74e101Schristos     { 7,  "STS-1"},
1780f74e101Schristos     { 8,  "STM-3"},
1790f74e101Schristos     { 9,  "STM-12"},
1800f74e101Schristos     { 10, "STM-48"},
1810f74e101Schristos     { 11, "STM-192"},
1820f74e101Schristos     { 12, "STM-768"},
1830f74e101Schristos     { 0, NULL}
1840f74e101Schristos };
1850f74e101Schristos 
1860f74e101Schristos #define DIFFSERV_BC_MODEL_RDM           0   /* draft-ietf-tewg-diff-te-proto-07 */
1870f74e101Schristos #define DIFFSERV_BC_MODEL_MAM           1   /* draft-ietf-tewg-diff-te-proto-07 */
1880f74e101Schristos #define DIFFSERV_BC_MODEL_EXTD_MAM      254 /* experimental */
1890f74e101Schristos 
1900f74e101Schristos const struct tok diffserv_te_bc_values[] = {
1910f74e101Schristos     {  DIFFSERV_BC_MODEL_RDM, "Russian dolls"},
1920f74e101Schristos     {  DIFFSERV_BC_MODEL_MAM, "Maximum allocation"},
1930f74e101Schristos     {  DIFFSERV_BC_MODEL_EXTD_MAM, "Maximum allocation with E-LSP support"},
1940f74e101Schristos     { 0, NULL }
1950f74e101Schristos };
196