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