1 #ifndef PACKETPP_ICMP_LAYER 2 #define PACKETPP_ICMP_LAYER 129 #pragma pack(push, 1) 168 #pragma pack(push, 1) 196 #pragma pack(push, 1) 211 #pragma pack(push, 1) 231 #pragma pack(push, 1) 254 #pragma pack(push, 1) 267 #pragma pack(push, 1) 282 void setRouterAddress(
IPv4Address addr, uint32_t preference);
296 #pragma pack(push, 1) 333 #pragma pack(push, 1) 357 #pragma pack(push, 1) 385 bool cleanIcmpLayer();
387 bool setEchoData(
IcmpMessageType echoType, uint16_t
id, uint16_t sequence, uint64_t timestamp,
const uint8_t* data,
size_t dataLen);
442 icmp_echo_request* setEchoRequestData(uint16_t
id, uint16_t sequence, uint64_t timestamp,
const uint8_t* data,
size_t dataLen);
447 icmp_echo_reply* getEchoReplyData();
459 icmp_echo_reply* setEchoReplyData(uint16_t
id, uint16_t sequence, uint64_t timestamp,
const uint8_t* data,
size_t dataLen);
474 icmp_timestamp_request* setTimestampRequestData(uint16_t
id, uint16_t sequence, timeval originateTimestamp);
479 icmp_timestamp_reply* getTimestampReplyData();
491 icmp_timestamp_reply* setTimestampReplyData(uint16_t
id, uint16_t sequence,
492 timeval originateTimestamp, timeval receiveTimestamp, timeval transmitTimestamp);
519 icmp_source_quench* getSourceQuenchdata();
530 icmp_source_quench* setSourceQuenchdata(
IPv4Layer* ipHeader,
Layer* l4Header);
565 icmp_router_advertisement* setRouterAdvertisementData(uint8_t code, uint16_t lifetimeInSeconds,
const std::vector<icmp_router_address_structure>& routerAddresses);
570 icmp_router_solicitation* getRouterSolicitationData();
578 icmp_router_solicitation* setRouterSolicitationData();
635 icmp_address_mask_reply* getAddressMaskReplyData();
645 icmp_address_mask_reply* setAddressMaskReplyData(uint16_t
id, uint16_t sequence,
IPv4Address mask);
664 icmp_info_reply* getInfoReplyData();
673 icmp_info_reply* setInfoReplyData(uint16_t
id, uint16_t sequence);
681 static inline bool isDataValid(
const uint8_t* data,
size_t dataLen);
690 void parseNextLayer();
697 size_t getHeaderLen()
const;
702 void computeCalculateFields();
704 std::string toString()
const;
716 uint8_t
type = data[0];
719 if (type == 8 || type == 0 || type == 10 || type == 15 || type == 16)
723 if (type == 13 || type == 14)
727 if (type == 17 || type == 18)
739 if (type == 4 || type == 11)
The main namespace for the PcapPlusPlus lib.
OsiModelLayer
Definition: ProtocolType.h:333
uint32_t routerAddress
Definition: IcmpLayer.h:271
Definition: IcmpLayer.h:89
icmp_info_request icmp_info_reply
Definition: IcmpLayer.h:372
Definition: IcmpLayer.h:379
uint16_t nextHopMTU
Definition: IcmpLayer.h:202
IPv4Address getAddress() const
Definition: IcmpLayer.h:287
icmp_timestamp_request icmp_timestamp_reply
Definition: IcmpLayer.h:189
Definition: IcmpLayer.h:53
Definition: IcmpLayer.h:297
icmp_router_advertisement_hdr * header
Definition: IcmpLayer.h:317
Definition: IcmpLayer.h:169
icmphdr icmp_router_solicitation
Definition: IcmpLayer.h:248
icmp_time_exceeded icmp_source_quench
Definition: IcmpLayer.h:224
Definition: IcmpLayer.h:28
IcmpDestUnreachableCodes
Definition: IcmpLayer.h:82
uint16_t id
Definition: IcmpLayer.h:172
uint8_t advertisementCount
Definition: IcmpLayer.h:300
Definition: IcmpLayer.h:63
Definition: IcmpLayer.h:69
Definition: IcmpLayer.h:57
Definition: IcmpLayer.h:59
uint16_t sequence
Definition: IcmpLayer.h:174
icmp_echo_hdr * header
Definition: IcmpLayer.h:149
uint8_t type
Definition: IcmpLayer.h:31
Definition: IcmpLayer.h:212
Definition: IcmpLayer.h:358
uint32_t preferenceLevel
Definition: IcmpLayer.h:275
Definition: IcmpLayer.h:334
Definition: IcmpLayer.h:49
uint32_t transmitTimestamp
Definition: IcmpLayer.h:180
uint8_t unused1
Definition: IcmpLayer.h:237
uint16_t id
Definition: IcmpLayer.h:133
Definition: ProtocolType.h:340
uint32_t receiveTimestamp
Definition: IcmpLayer.h:178
uint32_t originateTimestamp
Definition: IcmpLayer.h:176
icmp_echo_request icmp_echo_reply
Definition: IcmpLayer.h:161
uint16_t id
Definition: IcmpLayer.h:361
Definition: IcmpLayer.h:73
Definition: IcmpLayer.h:314
Definition: IcmpLayer.h:146
uint32_t addressMask
Definition: IcmpLayer.h:341
Definition: IcmpLayer.h:85
Definition: IcmpLayer.h:93
Definition: IcmpLayer.h:75
uint64_t timestamp
Definition: IcmpLayer.h:137
bool isMessageOfType(IcmpMessageType type) const
Definition: IcmpLayer.h:425
Definition: IcmpLayer.h:95
Definition: IpAddress.h:42
Definition: IcmpLayer.h:109
Definition: IcmpLayer.h:130
Definition: IcmpLayer.h:232
uint16_t lifetime
Definition: IcmpLayer.h:305
Definition: IcmpLayer.h:91
uint16_t sequence
Definition: IcmpLayer.h:135
Definition: IcmpLayer.h:47
Definition: IcmpLayer.h:65
IcmpLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: IcmpLayer.h:400
Definition: IcmpLayer.h:113
Definition: IcmpLayer.h:67
uint16_t id
Definition: IcmpLayer.h:337
uint16_t unused
Definition: IcmpLayer.h:200
Definition: IcmpLayer.h:197
const ProtocolType ICMP
Definition: ProtocolType.h:83
static bool isDataValid(const uint8_t *data, size_t dataLen)
Definition: IcmpLayer.h:711
size_t dataLength
Definition: IcmpLayer.h:151
uint32_t unused
Definition: IcmpLayer.h:215
uint8_t * data
Definition: IcmpLayer.h:153
Definition: IcmpLayer.h:71
Definition: IcmpLayer.h:87
Definition: IcmpLayer.h:97
Definition: IcmpLayer.h:255
Definition: IcmpLayer.h:101
IcmpMessageType
Definition: IcmpLayer.h:42
Definition: IcmpLayer.h:45
uint32_t gatewayAddress
Definition: IcmpLayer.h:258
Definition: IcmpLayer.h:121
Definition: IPv4Layer.h:409
uint16_t sequence
Definition: IcmpLayer.h:339
uint16_t checksum
Definition: IcmpLayer.h:35
Definition: IcmpLayer.h:99
Definition: IcmpLayer.h:55
Definition: IcmpLayer.h:117
uint16_t sequence
Definition: IcmpLayer.h:363
Definition: IcmpLayer.h:268
icmphdr * getIcmpHeader() const
Definition: IcmpLayer.h:414
uint16_t unused2
Definition: IcmpLayer.h:239
Definition: IcmpLayer.h:103
uint8_t addressEntrySize
Definition: IcmpLayer.h:303
Definition: IcmpLayer.h:107
uint8_t code
Definition: IcmpLayer.h:33
Definition: IcmpLayer.h:51
icmp_address_mask_request icmp_address_mask_reply
Definition: IcmpLayer.h:350
Definition: IcmpLayer.h:61
uint8_t pointer
Definition: IcmpLayer.h:235
OsiModelLayer getOsiModelLayer() const
Definition: IcmpLayer.h:706
Definition: IcmpLayer.h:105