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