Coverage Report

Created: 2025-08-04 07:15

/src/wireshark/epan/ipproto.c
Line
Count
Source (jump to first uncovered line)
1
/* ipproto.c
2
 * Routines for converting IPv4 protocol/IPv6 nxthdr field into string
3
 *
4
 * Wireshark - Network traffic analyzer
5
 * By Gerald Combs <gerald@wireshark.org>
6
 * Copyright 1998 Gerald Combs
7
 *
8
 * SPDX-License-Identifier: GPL-2.0-or-later
9
 */
10
11
#include "config.h"
12
13
#include <glib.h>
14
15
#include <epan/packet.h>
16
#include <epan/ipproto.h>
17
#include <epan/addr_resolv.h>
18
#include <epan/dissectors/packet-ip.h>
19
#include <epan/strutil.h>
20
21
static const value_string ipproto_val[] = {
22
#if 0
23
    { IP_PROTO_IP,  "IPv4" },
24
#endif
25
    { IP_PROTO_HOPOPTS, "IPv6 Hop-by-Hop Option" }, /* 0 HOPOPT IPv6 Hop-by-Hop Option [RFC1883] */
26
    { IP_PROTO_ICMP,    "ICMP" },                   /* 1 ICMP Internet Control Message [RFC792]  */
27
    { IP_PROTO_IGMP,    "IGMP" },                   /* 2 IGMP Internet Group Management [RFC1112]  */
28
    { IP_PROTO_GGP,     "GGP" },                    /* 3 GGP Gateway-to-Gateway [RFC823] */
29
    { IP_PROTO_IPIP,    "IPIP" },                   /* 4 IPv4 IPv4 encapsulation [RFC2003] */
30
    { IP_PROTO_STREAM,  "Stream" },                 /* 5 ST Stream [RFC1190][RFC1819] */
31
    { IP_PROTO_TCP,     "TCP" },                    /* 6 TCP Transmission Control [RFC793] */
32
    { IP_PROTO_CBT,     "CBT" },                    /* 7 CBT CBT [Tony_Ballardie] */
33
    { IP_PROTO_EGP,     "EGP" },                    /* 8 EGP Exterior Gateway Protocol [RFC888][David_Mills] */
34
    { IP_PROTO_IGP,     "IGRP" },                   /* 9 IGP any private interior gateway (used by Cisco for their IGRP) [Internet_Assigned_Numbers_Authority] */
35
    { IP_PROTO_BBN_RCC, "BBN RCC" },                /* 10 BBN-RCC-MON BBN RCC Monitoring [Steve_Chipman] */
36
    { IP_PROTO_NVPII,   "Network Voice" },          /* 11 NVP-II Network Voice Protocol [RFC741][Steve_Casner] */
37
    { IP_PROTO_PUP,     "PUP" },                    /* 12 PUP PUP */
38
    { IP_PROTO_ARGUS,   "ARGUS" },                  /* 13 ARGUS ARGUS [Robert_W_Scheifler] */
39
    { IP_PROTO_EMCON,   "EMCON" },                  /* 14 EMCON EMCON [<mystery contact>] */
40
    { IP_PROTO_XNET,    "XNET" },                   /* 15 XNET Cross Net Debugger [Haverty, J., "XNET Formats for Internet Protocol Version 4", IEN 158, October 1980.][Jack_Haverty]  */
41
    { IP_PROTO_CHAOS,   "CHAOS" },                  /* 16 CHAOS Chaos [J_Noel_Chiappa] */
42
    { IP_PROTO_UDP,     "UDP" },                    /* 17 UDP User Datagram [RFC768][Jon_Postel] */
43
    { IP_PROTO_MUX,     "Multiplex" },              /* 18 MUX Multiplexing [Cohen, D. and J. Postel, "Multiplexing Protocol", IEN 90, USC/Information Sciences Institute, May 1979.][Jon_Postel]  */
44
    { IP_PROTO_DCNMEAS, "DCN Measurement" },        /* 19 DCN-MEAS DCN Measurement Subsystems [David_Mills] */
45
    { IP_PROTO_HMP,     "Host Monitoring" },        /* 20 HMP Host Monitoring [RFC869][Robert_Hinden] */
46
    { IP_PROTO_PRM,     "Packet radio" },           /* 21 PRM Packet Radio Measurement [Zaw_Sing_Su] */
47
    { IP_PROTO_IDP,     "IDP" },                    /* 22 XNS-IDP XEROX NS IDP */
48
    { IP_PROTO_TRUNK1,  "Trunk-1" },                /* 23 TRUNK-1 Trunk-1 [Barry_Boehm] */
49
    { IP_PROTO_TRUNK2,  "Trunk-2" },                /* 24 TRUNK-2 Trunk-2 [Barry_Boehm] */
50
    { IP_PROTO_LEAF1,   "Leaf-1" },                 /* 25 LEAF-1 Leaf-1 [Barry_Boehm] */
51
    { IP_PROTO_LEAF2,   "Leaf-2" },                 /* 26 LEAF-2 Leaf-2 [Barry_Boehm] */
52
    { IP_PROTO_RDP,     "Reliable Data" },          /* 27 RDP Reliable Data Protocol [RFC908][Robert_Hinden]  */
53
    { IP_PROTO_IRT,     "IRT" },                    /* 28 IRTP Internet Reliable Transaction [RFC938][Trudy_Miller] */
54
    { IP_PROTO_TP,      "ISO TP4" },                /* 29 ISO-TP4 ISO Transport Protocol Class 4 [RFC905][<mystery contact>] */
55
    { IP_PROTO_BULK,    "Bulk Data" },              /* 30 NETBLT Bulk Data Transfer Protocol [RFC969][David_Clark] */
56
    { IP_PROTO_MFE_NSP, "MFE NSP" },                /* 31 MFE-NSP MFE Network Services Protocol */
57
    { IP_PROTO_MERIT,   "Merit Internodal" },       /* 32 MERIT-INP MERIT Internodal Protocol [Hans_Werner_Braun] */
58
    { IP_PROTO_DCCP,    "Datagram Congestion Control Protocol" }, /* 33 DCCP Datagram Congestion Control Protocol [RFC4340] */
59
    { IP_PROTO_3PC,     "3rd Party Connect" },      /* 34 3PC Third Party Connect Protocol [Stuart_A_Friedberg] */
60
    { IP_PROTO_IDPR,    "Inter-Domain Policy Routing Protocol" }, /* 35 IDPR Inter-Domain Policy Routing Protocol [Martha_Steenstrup] */
61
    { IP_PROTO_XTP,     "XTP" },                    /* 36 XTP XTP [Greg_Chesson] */
62
    { IP_PROTO_DDP,     "Datagram delivery"},       /* 37 DDP Datagram Delivery Protocol [Wesley_Craig] */
63
    { IP_PROTO_CMTP,    "Control Message" },        /* 38 IDPR-CMTP IDPR Control Message Transport Proto [Martha_Steenstrup] */
64
    { IP_PROTO_TPPP,    "TP++" },                   /* 39 TP++ TP++ Transport Protocol [Dirk_Fromhein] */
65
    { IP_PROTO_IL,      "IL" },                     /* 40 IL IL Transport Protocol [Dave_Presotto] */
66
    { IP_PROTO_IPV6,    "IPv6" },                   /* 41 IPv6 IPv6 encapsulation [RFC2473] */
67
    { IP_PROTO_SDRP,    "Source demand routing" },  /* 42 SDRP Source Demand Routing Protocol [Deborah_Estrin] */
68
    { IP_PROTO_ROUTING, "Routing Header for IPv6" }, /* 43 IPv6-Route Routing Header for IPv6 [Steve_Deering] */
69
    { IP_PROTO_FRAGMENT,"Fragment Header for IPv6" }, /* 44 IPv6-Frag Fragment Header for IPv6 [Steve_Deering] */
70
    { IP_PROTO_IDRP,    "Inter-Domain Routing Protocol" }, /* 45 IDRP Inter-Domain Routing Protocol [Sue_Hares] */
71
    { IP_PROTO_RSVP,    "Reservation Protocol" },   /* 46 RSVP Reservation Protocol [Bob_Braden] */
72
    { IP_PROTO_GRE,     "Generic Routing Encapsulation" }, /* 47 GRE General Routing Encapsulation [Tony_Li] */
73
    { IP_PROTO_DSR,     "Dynamic source routing" }, /* 48 DSR Dynamic Source Routing Protocol [RFC4728] */
74
    { IP_PROTO_BNA,     "BNA" },                    /* 49 BNA BNA [Gary Salamon] */
75
    { IP_PROTO_ESP,     "Encap Security Payload" }, /* 50 ESP Encap Security Payload [RFC4303] */
76
    { IP_PROTO_AH,      "Authentication Header" },  /* 51 AH Authentication Header [RFC4302] */
77
    { IP_PROTO_INSLP,   "INSLP" },                  /* 52 I-NLSP Integrated Net Layer Security TUBA [K_Robert_Glenn] */
78
    { IP_PROTO_SWIPE,   "SWIPE" },                  /* 53 SWIPE IP with Encryption [John_Ioannidis] */
79
    { IP_PROTO_NARP,    "NBMA ARP"},                /* 54 NARP NBMA Address Resolution Protocol [RFC1735] */
80
    { IP_PROTO_MOBILE,  "IP Mobility"},             /* 55 MOBILE IP Mobility [Charlie_Perkins] */
81
    { IP_PROTO_TLSP,    "TLSP Kryptonet" },         /* 56 TLSP Transport Layer Security Protocol using Kryptonet key management [Christer_Oberg] */
82
    { IP_PROTO_SKIP,    "SKIP" },                   /* 57 SKIP SKIP [Tom_Markson] */
83
    { IP_PROTO_ICMPV6,  "ICMPv6" },                 /* 58 IPv6-ICMP ICMP for IPv6 [RFC1883] */
84
    { IP_PROTO_NONE,    "No Next Header for IPv6" }, /* 59 IPv6-NoNxt No Next Header for IPv6 [RFC1883] */
85
    { IP_PROTO_DSTOPTS, "Destination Options for IPv6" }, /* 60 IPv6-Opts Destination Options for IPv6 [RFC1883] */
86
    { 61, "any host internal protocol" },           /* 61  any host internal protocol [Internet_Assigned_Numbers_Authority] */
87
    { IP_PROTO_MIPV6_OLD, "Mobile IPv6 (old)" },    /* 62 CFTP CFTP [Forsdick, H., "CFTP", Network Message, Bolt Beranek and Newman, January 1982.][Harry_Forsdick] */
88
    { 63, "any local network" },                    /* 63  any local network [Internet_Assigned_Numbers_Authority] */
89
    { IP_PROTO_SATEXPAK,"SATNET EXPAK" },           /* 64 SAT-EXPAK SATNET and Backroom EXPAK [Steven_Blumenthal] */
90
    { IP_PROTO_KRYPTOLAN, "Kryptolan" },            /* 65 KRYPTOLAN Kryptolan [Paul Liu] */
91
    { IP_PROTO_RVD,     "Remote Virtual Disk" },    /* 66 RVD MIT Remote Virtual Disk Protocol [Michael_Greenwald] */
92
    { IP_PROTO_IPPC,    "IPPC" },                   /* 67 IPPC Internet Pluribus Packet Core [Steven_Blumenthal] */
93
    { 68, "any distributed file system" },          /* 68  any distributed file system [Internet_Assigned_Numbers_Authority]  */
94
    { IP_PROTO_SATMON,  "SATNET Monitoring" },      /* 69 SAT-MON SATNET Monitoring [Steven_Blumenthal] */
95
    { IP_PROTO_VISA,    "VISA" },                   /* 70 VISA VISA Protocol [Gene_Tsudik] */
96
    { IP_PROTO_IPCV,    "IPCV" },                   /* 71 IPCV Internet Packet Core Utility [Steven_Blumenthal] */
97
    { IP_PROTO_CPNX,    "CPNX" },                   /* 72 CPNX Computer Protocol Network Executive [David Mittnacht] */
98
    { IP_PROTO_CPHB,    "CPHB" },                   /* 73 CPHB Computer Protocol Heart Beat [David Mittnacht] */
99
    { IP_PROTO_WSN,     "Wang Span" },              /* 74 WSN Wang Span Network [Victor Dafoulas] */
100
    { IP_PROTO_PVP,     "Packet Video" },           /* 75 PVP Packet Video Protocol [Steve_Casner] */
101
    { IP_PROTO_BRSATMON,"Backroom SATNET Mon" },    /* 76 BR-SAT-MON Backroom SATNET Monitoring [Steven_Blumenthal] */
102
    { IP_PROTO_SUNND,   "Sun ND Protocol" },        /* 77 SUN-ND SUN ND PROTOCOL-Temporary [William_Melohn] */
103
    { IP_PROTO_WBMON,   "Wideband Mon" },           /* 78 WB-MON WIDEBAND Monitoring [Steven_Blumenthal] */
104
    { IP_PROTO_WBEXPAK, "Wideband Expak" },         /* 79 WB-EXPAK WIDEBAND EXPAK [Steven_Blumenthal] */
105
    { IP_PROTO_ISOIP,   "ISO Internet Protocol" },  /* 80 ISO-IP ISO Internet Protocol [Marshall_T_Rose] */
106
    { IP_PROTO_VMTP,    "VMTP" },                   /* 81 VMTP VMTP [Dave_Cheriton] */
107
    { IP_PROTO_SVMTP,   "Secure VMTP" },            /* 82 SECURE-VMTP SECURE-VMTP [Dave_Cheriton] */
108
    { IP_PROTO_VINES,   "VINES" },                  /* 83 VINES VINES [Brian Horn] */
109
    { IP_PROTO_TTP,     "TTP" },                    /* 84 TTP TTP [Jim_Stevens] */
110
    { IP_PROTO_NSFNETIGP,"NSFNET IGP" },            /* 85 NSFNET-IGP NSFNET-IGP [Hans_Werner_Braun] */
111
    { IP_PROTO_DGP,     "Dissimilar Gateway" },     /* 86 DGP Dissimilar Gateway Protocol  */
112
    { IP_PROTO_TCF,     "TCF" },                    /* 87 TCF TCF [Guillermo_A_Loyola] */
113
    { IP_PROTO_EIGRP,   "EIGRP" },                  /* 88 EIGRP EIGRP */
114
    { IP_PROTO_OSPF,    "OSPF IGP" },               /* 89 OSPFIGP OSPFIGP [RFC1583][John_Moy] */
115
    { IP_PROTO_SPRITE,  "Sprite RPC" },             /* 90 Sprite-RPC Sprite RPC Protocol */
116
    { IP_PROTO_LARP,    "Locus ARP" },              /* 91 LARP Locus Address Resolution Protocol [Brian Horn] */
117
    { IP_PROTO_MTP,     "Multicast Transport" },    /* 92 MTP Multicast Transport Protocol [Susie_Armstrong] */
118
    { IP_PROTO_AX25,    "AX.25 Frames" },           /* 93 AX.25 AX.25 Frames [Brian_Kantor] */
119
    { IP_PROTO_IPINIP,  "IP in IP" },               /* 94 IPIP IP-within-IP Encapsulation Protocol [John_Ioannidis] */
120
    { IP_PROTO_MICP,    "MICP" },                   /* 95 MICP Mobile Internetworking Control Pro. [John_Ioannidis] */
121
    { IP_PROTO_SCCCP,   "Semaphore" },              /* 96 SCC-SP Semaphore Communications Sec. Pro. [Howard_Hart] */
122
    { IP_PROTO_ETHERIP, "Ether in IP" },            /* 97 ETHERIP Ethernet-within-IP Encapsulation [RFC3378] */
123
    { IP_PROTO_ENCAP,   "ENCAP" },                  /* 98 ENCAP Encapsulation Header [RFC1241][Robert_Woodburn] */
124
    { 99, "any private encryption scheme" },        /* 99  any private encryption scheme [Internet_Assigned_Numbers_Authority]  */
125
    { IP_PROTO_GMTP,    "GMTP" },                   /* 100 GMTP GMTP [[RXB5]]  */
126
    { IP_PROTO_IFMP,    "Ipsilon Flow" },           /* 101 IFMP Ipsilon Flow Management Protocol [Bob_Hinden][November 1995, 1997.]  */
127
    { IP_PROTO_PNNI,    "PNNI over IP" },           /* 102 PNNI PNNI over IP [Ross_Callon] */
128
    { IP_PROTO_PIM,     "PIM" },                    /* 103 PIM Protocol Independent Multicast [Dino_Farinacci] */
129
    { IP_PROTO_ARIS,    "ARIS" },                   /* 104 ARIS ARIS [Nancy_Feldman] */
130
    { IP_PROTO_SCPS,    "SCPS" },                   /* 105 SCPS SCPS [Robert_Durst] */
131
    { IP_PROTO_QNX,     "QNX" },                    /* 106 QNX QNX [Michael_Hunter] */
132
    { IP_PROTO_AN,      "Active Networks" },        /* 107 A/N Active Networks [Bob_Braden] */
133
    { IP_PROTO_IPCOMP,  "IPComp" },                 /* 108 IPComp IP Payload Compression Protocol [RFC2393] */
134
    { IP_PROTO_SNP,     "Sitara Networks" },        /* 109 SNP Sitara Networks Protocol [Manickam_R_Sridhar] */
135
    { IP_PROTO_COMPAQ,  "Compaq Peer" },            /* 110 Compaq-Peer Compaq Peer Protocol [Victor_Volpe] */
136
    { IP_PROTO_IPX,     "IPX IN IP" },              /* 111 IPX-in-IP IPX in IP [CJ_Lee] */
137
    { IP_PROTO_VRRP,    "VRRP" },                   /* 112 VRRP Virtual Router Redundancy Protocol [RFC3768][RFC5798] */
138
    { IP_PROTO_PGM,     "PGM" },                    /* 113 PGM PGM Reliable Transport Protocol [Tony_Speakman] */
139
    { 114, "any 0-hop protocol" },                  /* 114  any 0-hop protocol [Internet_Assigned_Numbers_Authority] */
140
    { IP_PROTO_L2TP,    "Layer 2 Tunneling" },      /* 115 L2TP Layer Two Tunneling Protocol [Bernard_Aboba] */
141
    { IP_PROTO_DDX,     "DDX" },                    /* 116 DDX D-II Data Exchange (DDX) [John_Worley] */
142
    { IP_PROTO_IATP,    "IATP" },                   /* 117 IATP Interactive Agent Transfer Protocol [John_Murphy] */
143
    { IP_PROTO_STP,     "STP" },                    /* 118 STP Schedule Transfer Protocol [Jean_Michel_Pittet] */
144
    { IP_PROTO_SRP,     "SpectraLink" },            /* 119 SRP SpectraLink Radio Protocol [Mark_Hamilton] */
145
    { IP_PROTO_UTI,     "UTI" },                    /* 120 UTI UTI [Peter_Lothberg] */
146
    { IP_PROTO_SMP,     "SMP" },                    /* 121 SMP Simple Message Protocol [Leif_Ekblad] */
147
    { IP_PROTO_SM,      "SM" },                     /* 122 SM SM [Jon_Crowcroft] */
148
    { IP_PROTO_PTP,     "PTP" },                    /* 123 PTP Performance Transparency Protocol [Michael_Welzl] */
149
    { IP_PROTO_ISIS,    "ISIS over IP" },           /* 124 ISIS over IPv4  [Tony_Przygienda] */
150
    { IP_PROTO_FIRE,    "FIRE" },                   /* 125 FIRE  [Criag_Partridge] */
151
    { IP_PROTO_CRTP,    "CRTP" },                   /* 126 CRTP Combat Radio Transport Protocol [Robert_Sautter] */
152
    { IP_PROTO_CRUDP,   "CRUDP" },                  /* 127 CRUDP Combat Radio User Datagram [Robert_Sautter] */
153
    { IP_PROTO_SSCOPMCE,"SSCOPMCE" },               /* 128 SSCOPMCE  [Kurt_Waber] */
154
    { IP_PROTO_IPLT,    "IPLT" },                   /* 129 IPLT  [[Hollbach]] */
155
    { IP_PROTO_SPS,     "Secure Packet" },          /* 130 SPS Secure Packet Shield [Bill_McIntosh] */
156
    { IP_PROTO_PIPE,    "PIPE" },                   /* 131 PIPE Private IP Encapsulation within IP [Bernhard_Petri] */
157
    { IP_PROTO_SCTP,    "SCTP" },                   /* 132 SCTP Stream Control Transmission Protocol [Randall_R_Stewart] */
158
    { IP_PROTO_FC,      "Fibre Channel" },          /* 133 FC Fibre Channel [Murali_Rajagopal] */
159
    { IP_PROTO_RSVPE2EI,"RSVP E2EI" },              /* 134 RSVP-E2E-IGNORE  [RFC3175] */
160
    { IP_PROTO_MIPV6,   "Mobile IPv6" },            /* 135 Mobility Header  [RFC3775] */
161
    { IP_PROTO_UDPLITE, "UDPLite" },                /* 136 UDPLite  [RFC3828] */
162
    { IP_PROTO_MPLS_IN_IP, "MPLS in IP" },          /* 137 MPLS-in-IP  [RFC4023] */
163
    { IP_PROTO_MANET,   "MANET" },                  /* 138 manet MANET Protocols [RFC-ietf-manet-iana-07] */
164
    { IP_PROTO_HIP,     "HIP" },                    /* 139 HIP Host Identity Protocol [RFC5201] */
165
    { IP_PROTO_SHIM6,   "Shim6 header" },           /* 140 Shim6 Shim6 Protocol [RFC5533] */
166
    { IP_PROTO_WESP,    "WESP" },                   /* 141 WESP Wrapped Encapsulating Security Payload [RFC5840] */
167
    { IP_PROTO_ROHC,    "ROHC" },                   /* 142 ROHC Robust Header Compression [RFC5858] */
168
    { IP_PROTO_ETHERNET,"Ethernet" },               /* 143 Ethernet [RFC8986] */
169
    { IP_PROTO_AGGFRAG, "AGGFRAG" },                /* 144 AGGFRAG encapsulation for ESP */
170
    { IP_PROTO_NSH,     "NSH" },                    /* 145 Network Service Header */
171
    { IP_PROTO_HOMA,    "Homa" },                   /* 146 Homa */
172
    { IP_PROTO_BIT_EMU, "Bit-stream Emulation" },   /* 147 Bit-stream Emulation */
173
    { 148, "Unassigned" },                          /* 148 Unassigned */
174
    { 149, "Unassigned" },                          /* 149 Unassigned */
175
    { 150, "Unassigned" },                          /* 150 Unassigned */
176
    { 151, "Unassigned" },                          /* 151 Unassigned */
177
    { 152, "Unassigned" },                          /* 152 Unassigned */
178
    { 153, "Unassigned" },                          /* 153 Unassigned */
179
    { 154, "Unassigned" },                          /* 154 Unassigned */
180
    { 155, "Unassigned" },                          /* 155 Unassigned */
181
    { 156, "Unassigned" },                          /* 156 Unassigned */
182
    { 157, "Unassigned" },                          /* 157 Unassigned */
183
    { 158, "Unassigned" },                          /* 158 Unassigned */
184
    { 159, "Unassigned" },                          /* 159 Unassigned */
185
    { 160, "Unassigned" },                          /* 160 Unassigned */
186
    { 161, "Unassigned" },                          /* 161 Unassigned */
187
    { 162, "Unassigned" },                          /* 162 Unassigned */
188
    { 163, "Unassigned" },                          /* 163 Unassigned */
189
    { 164, "Unassigned" },                          /* 164 Unassigned */
190
    { 165, "Unassigned" },                          /* 165 Unassigned */
191
    { 166, "Unassigned" },                          /* 166 Unassigned */
192
    { 167, "Unassigned" },                          /* 167 Unassigned */
193
    { 168, "Unassigned" },                          /* 168 Unassigned */
194
    { 169, "Unassigned" },                          /* 169 Unassigned */
195
    { 170, "Unassigned" },                          /* 170 Unassigned */
196
    { 171, "Unassigned" },                          /* 171 Unassigned */
197
    { 172, "Unassigned" },                          /* 172 Unassigned */
198
    { IP_PROTO_AX4000,  "AX/4000 Testframe" },      /* 173 AX/4000 Testblock - non IANA */
199
    { 174, "Unassigned" },                          /* 174 Unassigned */
200
    { 175, "Unassigned" },                          /* 175 Unassigned */
201
    { 176, "Unassigned" },                          /* 176 Unassigned */
202
    { 177, "Unassigned" },                          /* 177 Unassigned */
203
    { 178, "Unassigned" },                          /* 178 Unassigned */
204
    { 179, "Unassigned" },                          /* 179 Unassigned */
205
    { 180, "Unassigned" },                          /* 180 Unassigned */
206
    { 181, "Unassigned" },                          /* 181 Unassigned */
207
    { 182, "Unassigned" },                          /* 182 Unassigned */
208
    { 183, "Unassigned" },                          /* 183 Unassigned */
209
    { 184, "Unassigned" },                          /* 184 Unassigned */
210
    { 185, "Unassigned" },                          /* 185 Unassigned */
211
    { 186, "Unassigned" },                          /* 186 Unassigned */
212
    { 187, "Unassigned" },                          /* 187 Unassigned */
213
    { 188, "Unassigned" },                          /* 188 Unassigned */
214
    { 189, "Unassigned" },                          /* 189 Unassigned */
215
    { 190, "Unassigned" },                          /* 190 Unassigned */
216
    { 191, "Unassigned" },                          /* 191 Unassigned */
217
    { 192, "Unassigned" },                          /* 192 Unassigned */
218
    { 193, "Unassigned" },                          /* 193 Unassigned */
219
    { 194, "Unassigned" },                          /* 194 Unassigned */
220
    { 195, "Unassigned" },                          /* 195 Unassigned */
221
    { 196, "Unassigned" },                          /* 196 Unassigned */
222
    { 197, "Unassigned" },                          /* 197 Unassigned */
223
    { 198, "Unassigned" },                          /* 198 Unassigned */
224
    { 199, "Unassigned" },                          /* 199 Unassigned */
225
    { 200, "Unassigned" },                          /* 200 Unassigned */
226
    { 201, "Unassigned" },                          /* 201 Unassigned */
227
    { 202, "Unassigned" },                          /* 202 Unassigned */
228
    { 203, "Unassigned" },                          /* 203 Unassigned */
229
    { 204, "Unassigned" },                          /* 204 Unassigned */
230
    { 205, "Unassigned" },                          /* 205 Unassigned */
231
    { 206, "Unassigned" },                          /* 206 Unassigned */
232
    { 207, "Unassigned" },                          /* 207 Unassigned */
233
    { 208, "Unassigned" },                          /* 208 Unassigned */
234
    { 209, "Unassigned" },                          /* 209 Unassigned */
235
    { 210, "Unassigned" },                          /* 210 Unassigned */
236
    { 211, "Unassigned" },                          /* 211 Unassigned */
237
    { 212, "Unassigned" },                          /* 212 Unassigned */
238
    { 213, "Unassigned" },                          /* 213 Unassigned */
239
    { 214, "Unassigned" },                          /* 214 Unassigned */
240
    { 215, "Unassigned" },                          /* 215 Unassigned */
241
    { 216, "Unassigned" },                          /* 216 Unassigned */
242
    { 217, "Unassigned" },                          /* 217 Unassigned */
243
    { 218, "Unassigned" },                          /* 218 Unassigned */
244
    { 219, "Unassigned" },                          /* 219 Unassigned */
245
    { 220, "Unassigned" },                          /* 220 Unassigned */
246
    { 221, "Unassigned" },                          /* 221 Unassigned */
247
    { 222, "Unassigned" },                          /* 222 Unassigned */
248
    { 223, "Unassigned" },                          /* 223 Unassigned */
249
    { IP_PROTO_NCS_HEARTBEAT,"Novell NCS Heartbeat" }, /* 224 Novell NCS Heartbeat - http://support.novell.com/cgi-bin/search/searchtid.cgi?/10071158.htm */
250
    { 0,        NULL },
251
};
252
253
value_string_ext ipproto_val_ext = VALUE_STRING_EXT_INIT(ipproto_val);
254
255
2.75k
const char *ipprotostr(const int proto) {
256
2.75k
    return val_to_str_ext_const(proto, &ipproto_val_ext, "Unknown");
257
2.75k
}
258
259
/* https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml#extension-header */
260
261
static bool ipv6_exthdr_check(int proto)
262
0
{
263
0
    switch (proto) {
264
    /* fall through all cases */
265
0
    case IP_PROTO_HOPOPTS:      /* IPv6 Hop-by-Hop Option */
266
0
    case IP_PROTO_ROUTING:      /* Routing Header for IPv6 */
267
0
    case IP_PROTO_FRAGMENT:     /* Fragment Header for IPv6 */
268
0
    case IP_PROTO_ESP:          /* Encapsulating Security Payload */
269
0
    case IP_PROTO_AH:           /* Authentication Header */
270
0
    case IP_PROTO_DSTOPTS:      /* Destination Options for IPv6 */
271
0
    case IP_PROTO_MIPV6:        /* Mobility Header */
272
0
    case IP_PROTO_HIP:          /* Host Identity Protocol */
273
0
    case IP_PROTO_SHIM6:        /* Shim6 Protocol */
274
0
        return true;
275
0
    default:
276
0
        break;
277
0
    }
278
0
    return false;
279
0
}
280
281
const char *ipv6extprotostr(int proto)
282
0
{
283
0
    if (ipv6_exthdr_check(proto))
284
0
        return ipprotostr(proto);
285
0
    return NULL;
286
0
}
287
288
/*
289
 * Editor modelines
290
 *
291
 * Local Variables:
292
 * c-basic-offset: 4
293
 * tab-width: 8
294
 * indent-tabs-mode: nil
295
 * End:
296
 *
297
 * ex: set shiftwidth=4 tabstop=8 expandtab:
298
 * :indentSize=4:tabSize=8:noTabs=true:
299
 */