PcapPlusPlus  Next
ProtocolType.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdint.h>
4 #include <stdexcept>
5 
6 #include "DeprecationUtils.h"
7 
9 
12 namespace pcpp
13 {
32 
35 
38  using ProtocolType = uint8_t;
39 
42  using ProtocolTypeFamily = uint32_t;
43 
46 
49 
51  const ProtocolType IPv4 = 2;
52 
54  const ProtocolType IPv6 = 3;
55 
57  const ProtocolTypeFamily IP = 0x203;
58 
60  const ProtocolType TCP = 4;
61 
63  const ProtocolType UDP = 5;
64 
67 
70 
72  const ProtocolTypeFamily HTTP = 0x607;
73 
75  const ProtocolType ARP = 8;
76 
78  const ProtocolType VLAN = 9;
79 
81  const ProtocolType ICMP = 10;
82 
85 
88 
90  const ProtocolTypeFamily PPPoE = 0xb0c;
91 
93  const ProtocolType DNS = 13;
94 
96  const ProtocolType MPLS = 14;
97 
99  const ProtocolType GREv0 = 15;
100 
102  const ProtocolType GREv1 = 16;
103 
105  const ProtocolTypeFamily GRE = 0xf10;
106 
108  const ProtocolType PPP_PPTP = 17;
109 
111  const ProtocolType SSL = 18;
112 
114  const ProtocolType SLL = 19;
115 
117  const ProtocolType DHCP = 20;
118 
121 
123  const ProtocolType IGMPv1 = 22;
124 
126  const ProtocolType IGMPv2 = 23;
127 
129  const ProtocolType IGMPv3 = 24;
130 
132  const ProtocolTypeFamily IGMP = 0x161718;
133 
136 
138  const ProtocolType VXLAN = 26;
139 
142 
145 
147  const ProtocolTypeFamily SIP = 0x1b1c;
148 
150  const ProtocolType SDP = 29;
151 
154 
156  const ProtocolType Radius = 31;
157 
159  const ProtocolType GTPv1 = 32;
160 
162  const ProtocolTypeFamily GTP = 0x2039;
163 
166 
168  const ProtocolType BGP = 34;
169 
171  const ProtocolType SSH = 35;
172 
175 
177  const ProtocolType ESP = 37;
178 
180  const ProtocolTypeFamily IPSec = 0x2425;
181 
183  const ProtocolType DHCPv6 = 38;
184 
186  const ProtocolType NTP = 39;
187 
189  const ProtocolType Telnet = 40;
190 
193 
195  const ProtocolType ICMPv6 = 42;
196 
198  const ProtocolType STP = 43;
199 
201  const ProtocolType LLC = 44;
202 
204  const ProtocolType SomeIP = 45;
205 
208 
210  const ProtocolType NFLOG = 47;
211 
213  const ProtocolType TPKT = 48;
214 
216  const ProtocolType VRRPv2 = 49;
217 
219  const ProtocolType VRRPv3 = 50;
220 
222  const ProtocolTypeFamily VRRP = 0x3132;
223 
225  const ProtocolType COTP = 51;
226 
228  const ProtocolType SLL2 = 52;
229 
231  const ProtocolType S7COMM = 53;
232 
234  const ProtocolType SMTP = 54;
235 
237  const ProtocolType LDAP = 55;
238 
241 
243  const ProtocolType GTPv2 = 57;
244 
247 
249  const ProtocolType DOIP = 59;
250 
252  const ProtocolType FTPData = 60;
253 
255  const ProtocolType Modbus = 61;
256 
258  const ProtocolType Postgres = 62;
259 
261  const ProtocolType MySQL = 63;
262 
264  const ProtocolTypeFamily FTP = 0x3c29;
265 
267  const ProtocolType QUICv1 = 64;
268 
270  const ProtocolType GVCP = 65;
271 
273  const ProtocolType Geneve = 66;
274 
276 
280  constexpr const char* protocolTypeToString(ProtocolType protocolType)
281  {
282  switch (protocolType)
283  {
284  case UnknownProtocol:
285  return "UnknownProtocol";
286  case Ethernet:
287  return "Ethernet";
288  case IPv4:
289  return "IPv4";
290  case IPv6:
291  return "IPv6";
292  case TCP:
293  return "TCP";
294  case UDP:
295  return "UDP";
296  case HTTPRequest:
297  return "HTTPRequest";
298  case HTTPResponse:
299  return "HTTPResponse";
300  case ARP:
301  return "ARP";
302  case VLAN:
303  return "VLAN";
304  case ICMP:
305  return "ICMP";
306  case PPPoESession:
307  return "PPPoESession";
308  case PPPoEDiscovery:
309  return "PPPoEDiscovery";
310  case DNS:
311  return "DNS";
312  case MPLS:
313  return "MPLS";
314  case GREv0:
315  return "GREv0";
316  case GREv1:
317  return "GREv1";
318  case PPP_PPTP:
319  return "PPP_PPTP";
320  case SSL:
321  return "SSL";
322  case SLL:
323  return "SLL";
324  case DHCP:
325  return "DHCP";
326  case NULL_LOOPBACK:
327  return "NULL_LOOPBACK";
328  case IGMPv1:
329  return "IGMPv1";
330  case IGMPv2:
331  return "IGMPv2";
332  case IGMPv3:
333  return "IGMPv3";
334  case GenericPayload:
335  return "GenericPayload";
336  case VXLAN:
337  return "VXLAN";
338  case SIPRequest:
339  return "SIPRequest";
340  case SIPResponse:
341  return "SIPResponse";
342  case SDP:
343  return "SDP";
344  case PacketTrailer:
345  return "PacketTrailer";
346  case Radius:
347  return "Radius";
348  case GTPv1:
349  return "GTPv1";
350  case EthernetDot3:
351  return "EthernetDot3";
352  case BGP:
353  return "BGP";
354  case SSH:
355  return "SSH";
357  return "AuthenticationHeader";
358  case ESP:
359  return "ESP";
360  case DHCPv6:
361  return "DHCPv6";
362  case NTP:
363  return "NTP";
364  case Telnet:
365  return "Telnet";
366  case FTPControl:
367  return "FTPControl";
368  case ICMPv6:
369  return "ICMPv6";
370  case STP:
371  return "STP";
372  case LLC:
373  return "LLC";
374  case SomeIP:
375  return "SomeIP";
376  case WakeOnLan:
377  return "WakeOnLan";
378  case NFLOG:
379  return "NFLOG";
380  case TPKT:
381  return "TPKT";
382  case VRRPv2:
383  return "VRRPv2";
384  case VRRPv3:
385  return "VRRPv3";
386  case COTP:
387  return "COTP";
388  case SLL2:
389  return "SLL2";
390  case S7COMM:
391  return "S7COMM";
392  case SMTP:
393  return "SMTP";
394  case LDAP:
395  return "LDAP";
396  case WireGuard:
397  return "WireGuard";
398  case GTPv2:
399  return "GTPv2";
400  case CiscoHDLC:
401  return "CiscoHDLC";
402  case DOIP:
403  return "DOIP";
404  case FTPData:
405  return "FTPData";
406  case Modbus:
407  return "Modbus";
408  case Postgres:
409  return "Postgres";
410  case MySQL:
411  return "MySQL";
412  case QUICv1:
413  return "QUICv1";
414  case GVCP:
415  return "GVCP";
416  case Geneve:
417  return "Geneve";
418  default:
419  throw std::invalid_argument("Unknown protocol type");
420  }
421  }
422 
425  {
437  OsiModelSesionLayer PCPP_DEPRECATED("Use OsiModelSessionLayer instead") = OsiModelSessionLayer,
444  };
445 
446  namespace internal
447  {
454  {
455  auto const protocolToFamily = static_cast<ProtocolTypeFamily>(protocol);
456  return (protocolToFamily == (family & 0xff) || protocolToFamily << 8 == (family & 0xff00) ||
457  protocolToFamily << 16 == (family & 0xff0000) || protocolToFamily << 24 == (family & 0xff000000));
458  }
459  } // namespace internal
460 } // namespace pcpp
const ProtocolTypeFamily GRE
GRE protocol family (GREv0 and GREv1 protocols)
Definition: ProtocolType.h:105
const ProtocolType STP
Spanning Tree Protocol.
Definition: ProtocolType.h:198
const ProtocolType S7COMM
S7COMM protocol.
Definition: ProtocolType.h:231
const ProtocolType VRRPv3
VRRP version 3 protocol.
Definition: ProtocolType.h:219
const ProtocolTypeFamily VRRP
VRRP protocol family (VRRPv2 and VRRPv3 protocols)
Definition: ProtocolType.h:222
const ProtocolType TPKT
TPKT protocol.
Definition: ProtocolType.h:213
uint8_t ProtocolType
Definition: ProtocolType.h:38
const ProtocolType DHCPv6
Dynamic Host Configuration Protocol version 6 (DHCPv6) protocol.
Definition: ProtocolType.h:183
const ProtocolType PPPoESession
PPPoE session protocol.
Definition: ProtocolType.h:84
const ProtocolType ESP
IPSec Encapsulating Security Payload (ESP) protocol.
Definition: ProtocolType.h:177
const ProtocolType GREv0
GRE version 0 protocol.
Definition: ProtocolType.h:99
const ProtocolType GVCP
GigE Vision Control Protocol (GVCP)
Definition: ProtocolType.h:270
const ProtocolType MPLS
MPLS protocol.
Definition: ProtocolType.h:96
const ProtocolType WakeOnLan
Wake On LAN (WOL) Protocol.
Definition: ProtocolType.h:207
const ProtocolType COTP
COTP protocol.
Definition: ProtocolType.h:225
const ProtocolType Postgres
PostgreSQL protocol.
Definition: ProtocolType.h:258
const ProtocolType AuthenticationHeader
IPSec Authentication Header (AH) protocol.
Definition: ProtocolType.h:174
const ProtocolType Modbus
Modbus protocol.
Definition: ProtocolType.h:255
const ProtocolType Ethernet
Ethernet protocol.
Definition: ProtocolType.h:48
const ProtocolTypeFamily PPPoE
PPPoE protocol family (PPPoESession and PPPoEDiscovery protocols)
Definition: ProtocolType.h:90
const ProtocolType NTP
Network Time (NTP) Protocol.
Definition: ProtocolType.h:186
const ProtocolType FTPData
File Transfer Protocol (FTP) Data channel.
Definition: ProtocolType.h:252
const ProtocolTypeFamily HTTP
HTTP protocol family (HTTP request and HTTP response protocols)
Definition: ProtocolType.h:72
const ProtocolType PacketTrailer
Packet trailer.
Definition: ProtocolType.h:153
const ProtocolType IGMPv2
IGMPv2 protocol.
Definition: ProtocolType.h:126
const ProtocolType BGP
Border Gateway Protocol (BGP) version 4 protocol.
Definition: ProtocolType.h:168
const ProtocolType IGMPv3
IGMPv3 protocol.
Definition: ProtocolType.h:129
const ProtocolType PPP_PPTP
PPP for PPTP protocol.
Definition: ProtocolType.h:108
const ProtocolType DHCP
DHCP/BOOTP protocol.
Definition: ProtocolType.h:117
const ProtocolType DOIP
Diagnostic over IP protocol (DOIP)
Definition: ProtocolType.h:249
const ProtocolType GREv1
GRE version 1 protocol.
Definition: ProtocolType.h:102
const ProtocolType SomeIP
SOME/IP Base protocol.
Definition: ProtocolType.h:204
const ProtocolTypeFamily FTP
FTP protocol family (FTPControl and FtpData protocols)
Definition: ProtocolType.h:264
const ProtocolType SSL
SSL/TLS protocol.
Definition: ProtocolType.h:111
const ProtocolType LDAP
LDAP protocol.
Definition: ProtocolType.h:237
const ProtocolType Radius
RADIUS protocol.
Definition: ProtocolType.h:156
const ProtocolType NULL_LOOPBACK
Null/Loopback protocol.
Definition: ProtocolType.h:120
const ProtocolType LLC
Logical Link Control (LLC)
Definition: ProtocolType.h:201
const ProtocolTypeFamily IP
IP protocol family (IPv4 and IPv6 protocols)
Definition: ProtocolType.h:57
const ProtocolType TCP
TCP protocol.
Definition: ProtocolType.h:60
const ProtocolType SSH
SSH version 2 protocol.
Definition: ProtocolType.h:171
const ProtocolType PPPoEDiscovery
PPPoE discovery protocol.
Definition: ProtocolType.h:87
const ProtocolType SMTP
SMTP protocol.
Definition: ProtocolType.h:234
uint32_t ProtocolTypeFamily
Definition: ProtocolType.h:42
const ProtocolType IPv4
IPv4 protocol.
Definition: ProtocolType.h:51
const ProtocolType SLL2
SLL2 protocol.
Definition: ProtocolType.h:228
const ProtocolType GenericPayload
Generic payload (no specific protocol)
Definition: ProtocolType.h:135
const ProtocolType IPv6
IPv6 protocol.
Definition: ProtocolType.h:54
const ProtocolType GTPv1
GTPv1 protocol.
Definition: ProtocolType.h:159
const ProtocolType GTPv2
GTPv2 protocol.
Definition: ProtocolType.h:243
const ProtocolTypeFamily GTP
GTP protocol family (GTPv1 and GTPv2)
Definition: ProtocolType.h:162
const ProtocolType IGMPv1
IGMPv1 protocol.
Definition: ProtocolType.h:123
const ProtocolType SLL
SLL (Linux cooked capture) protocol.
Definition: ProtocolType.h:114
const ProtocolType VXLAN
VXLAN protocol.
Definition: ProtocolType.h:138
const ProtocolType VRRPv2
VRRP version 2 protocol.
Definition: ProtocolType.h:216
const ProtocolType CiscoHDLC
Cisco HDLC protocol.
Definition: ProtocolType.h:246
const ProtocolType FTPControl
File Transfer (FTP) Protocol - Control channel.
Definition: ProtocolType.h:192
const ProtocolType ICMP
ICMP protocol.
Definition: ProtocolType.h:81
const ProtocolType HTTPRequest
HTTP request protocol.
Definition: ProtocolType.h:66
const ProtocolType WireGuard
WireGuard protocol.
Definition: ProtocolType.h:240
const ProtocolType MySQL
MySQL protocol.
Definition: ProtocolType.h:261
const ProtocolTypeFamily IPSec
IPSec protocol family (AH and ESP protocols)
Definition: ProtocolType.h:180
const ProtocolType UnknownProtocol
Unknown protocol (or unsupported by PcapPlusPlus)
Definition: ProtocolType.h:45
const ProtocolType QUICv1
QUIC v1 protocol.
Definition: ProtocolType.h:267
const ProtocolType VLAN
VLAN protocol.
Definition: ProtocolType.h:78
const ProtocolType SIPRequest
SIP request protocol.
Definition: ProtocolType.h:141
const ProtocolType DNS
DNS protocol.
Definition: ProtocolType.h:93
constexpr bool protoFamilyContainsProtocol(ProtocolTypeFamily family, ProtocolType protocol)
Check if a protocol family contains a specific protocol.
Definition: ProtocolType.h:453
const ProtocolType Geneve
GENEVE protocol.
Definition: ProtocolType.h:273
const ProtocolType UDP
UDP protocol.
Definition: ProtocolType.h:63
const ProtocolType ARP
ARP protocol.
Definition: ProtocolType.h:75
const ProtocolType SDP
SDP protocol.
Definition: ProtocolType.h:150
const ProtocolType Telnet
Telnet Protocol.
Definition: ProtocolType.h:189
const ProtocolType HTTPResponse
HTTP response protocol.
Definition: ProtocolType.h:69
const ProtocolTypeFamily SIP
SIP protocol family (SIPRequest and SIPResponse protocols)
Definition: ProtocolType.h:147
const ProtocolType NFLOG
NFLOG (Linux Netfilter NFLOG) Protocol.
Definition: ProtocolType.h:210
const ProtocolType EthernetDot3
IEEE 802.3 Ethernet protocol.
Definition: ProtocolType.h:165
const ProtocolTypeFamily IGMP
IGMP protocol family (IGMPv1, IGMPv2, IGMPv3)
Definition: ProtocolType.h:132
const ProtocolType ICMPv6
ICMPv6 protocol.
Definition: ProtocolType.h:195
const ProtocolType SIPResponse
SIP response protocol.
Definition: ProtocolType.h:144
The main namespace for the PcapPlusPlus lib.
Definition: AssertionUtils.h:19
OsiModelLayer
An enum representing OSI model layers.
Definition: ProtocolType.h:425
@ PCPP_DEPRECATED
Deprecated typo, use OsiModelSessionLayer instead.
Definition: ProtocolType.h:437
@ OsiModelTransportLayer
Transport layer (layer 4)
Definition: ProtocolType.h:433
@ OsiModelApplicationLayer
Application layer (layer 7)
Definition: ProtocolType.h:441
@ OsiModelDataLinkLayer
Data link layer (layer 2)
Definition: ProtocolType.h:429
@ OsiModelPhysicalLayer
Physical layer (layer 1)
Definition: ProtocolType.h:427
@ OsiModelNetworkLayer
Network layer (layer 3)
Definition: ProtocolType.h:431
@ OsiModelSessionLayer
Session layer (layer 5)
Definition: ProtocolType.h:435
@ OsiModelPresentationLayer
Presentation layer (layer 6)
Definition: ProtocolType.h:439
@ OsiModelLayerUnknown
Unknown / null layer.
Definition: ProtocolType.h:443
constexpr const char * protocolTypeToString(ProtocolType protocolType)
Definition: ProtocolType.h:280