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 
277  constexpr const char* protocolTypeToString(ProtocolType protocolType)
278  {
279  switch (protocolType)
280  {
281  case UnknownProtocol:
282  return "UnknownProtocol";
283  case Ethernet:
284  return "Ethernet";
285  case IPv4:
286  return "IPv4";
287  case IPv6:
288  return "IPv6";
289  case TCP:
290  return "TCP";
291  case UDP:
292  return "UDP";
293  case HTTPRequest:
294  return "HTTPRequest";
295  case HTTPResponse:
296  return "HTTPResponse";
297  case ARP:
298  return "ARP";
299  case VLAN:
300  return "VLAN";
301  case ICMP:
302  return "ICMP";
303  case PPPoESession:
304  return "PPPoESession";
305  case PPPoEDiscovery:
306  return "PPPoEDiscovery";
307  case DNS:
308  return "DNS";
309  case MPLS:
310  return "MPLS";
311  case GREv0:
312  return "GREv0";
313  case GREv1:
314  return "GREv1";
315  case PPP_PPTP:
316  return "PPP_PPTP";
317  case SSL:
318  return "SSL";
319  case SLL:
320  return "SLL";
321  case DHCP:
322  return "DHCP";
323  case NULL_LOOPBACK:
324  return "NULL_LOOPBACK";
325  case IGMPv1:
326  return "IGMPv1";
327  case IGMPv2:
328  return "IGMPv2";
329  case IGMPv3:
330  return "IGMPv3";
331  case GenericPayload:
332  return "GenericPayload";
333  case VXLAN:
334  return "VXLAN";
335  case SIPRequest:
336  return "SIPRequest";
337  case SIPResponse:
338  return "SIPResponse";
339  case SDP:
340  return "SDP";
341  case PacketTrailer:
342  return "PacketTrailer";
343  case Radius:
344  return "Radius";
345  case GTPv1:
346  return "GTPv1";
347  case EthernetDot3:
348  return "EthernetDot3";
349  case BGP:
350  return "BGP";
351  case SSH:
352  return "SSH";
354  return "AuthenticationHeader";
355  case ESP:
356  return "ESP";
357  case DHCPv6:
358  return "DHCPv6";
359  case NTP:
360  return "NTP";
361  case Telnet:
362  return "Telnet";
363  case FTPControl:
364  return "FTPControl";
365  case ICMPv6:
366  return "ICMPv6";
367  case STP:
368  return "STP";
369  case LLC:
370  return "LLC";
371  case SomeIP:
372  return "SomeIP";
373  case WakeOnLan:
374  return "WakeOnLan";
375  case NFLOG:
376  return "NFLOG";
377  case TPKT:
378  return "TPKT";
379  case VRRPv2:
380  return "VRRPv2";
381  case VRRPv3:
382  return "VRRPv3";
383  case COTP:
384  return "COTP";
385  case SLL2:
386  return "SLL2";
387  case S7COMM:
388  return "S7COMM";
389  case SMTP:
390  return "SMTP";
391  case LDAP:
392  return "LDAP";
393  case WireGuard:
394  return "WireGuard";
395  case GTPv2:
396  return "GTPv2";
397  case CiscoHDLC:
398  return "CiscoHDLC";
399  case DOIP:
400  return "DOIP";
401  case FTPData:
402  return "FTPData";
403  case Modbus:
404  return "Modbus";
405  case Postgres:
406  return "Postgres";
407  case MySQL:
408  return "MySQL";
409  case QUICv1:
410  return "QUICv1";
411  case GVCP:
412  return "GVCP";
413  default:
414  throw std::invalid_argument("Unknown protocol type");
415  }
416  }
417 
420  {
432  OsiModelSesionLayer PCPP_DEPRECATED("Use OsiModelSessionLayer instead") = OsiModelSessionLayer,
439  };
440 
441  namespace internal
442  {
449  {
450  auto const protocolToFamily = static_cast<ProtocolTypeFamily>(protocol);
451  return (protocolToFamily == (family & 0xff) || protocolToFamily << 8 == (family & 0xff00) ||
452  protocolToFamily << 16 == (family & 0xff0000) || protocolToFamily << 24 == (family & 0xff000000));
453  }
454  } // namespace internal
455 } // 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:448
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:420
@ PCPP_DEPRECATED
Deprecated typo, use OsiModelSessionLayer instead.
Definition: ProtocolType.h:432
@ OsiModelTransportLayer
Transport layer (layer 4)
Definition: ProtocolType.h:428
@ OsiModelApplicationLayer
Application layer (layer 7)
Definition: ProtocolType.h:436
@ OsiModelDataLinkLayer
Data link layer (layer 2)
Definition: ProtocolType.h:424
@ OsiModelPhysicalLayer
Physical layer (layer 1)
Definition: ProtocolType.h:422
@ OsiModelNetworkLayer
Network layer (layer 3)
Definition: ProtocolType.h:426
@ OsiModelSessionLayer
Session layer (layer 5)
Definition: ProtocolType.h:430
@ OsiModelPresentationLayer
Presentation layer (layer 6)
Definition: ProtocolType.h:434
@ OsiModelLayerUnknown
Unknown / null layer.
Definition: ProtocolType.h:438
constexpr const char * protocolTypeToString(ProtocolType protocolType)
Definition: ProtocolType.h:277