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