diff --git a/Packet++/header/ArpLayer.h b/Packet++/header/ArpLayer.h index a42db6270c..4fb1b0db4c 100644 --- a/Packet++/header/ArpLayer.h +++ b/Packet++/header/ArpLayer.h @@ -83,8 +83,7 @@ namespace pcpp ArpLayer(ArpOpcode opCode, const MacAddress& senderMacAddr, const MacAddress& targetMacAddr, const IPv4Address& senderIpAddr, const IPv4Address& targetIpAddr); - ~ArpLayer() - {} + ~ArpLayer() override = default; /** * Get a pointer to the ARP header. Notice this points directly to the data, so every change will change the @@ -93,7 +92,7 @@ namespace pcpp */ inline arphdr* getArpHeader() const { - return (arphdr*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -137,13 +136,13 @@ namespace pcpp /** * Does nothing for this layer (ArpLayer is always last) */ - void parseNextLayer() + void parseNextLayer() override {} /** * @return The size of @ref arphdr */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(arphdr); } @@ -156,7 +155,7 @@ namespace pcpp * - @ref arphdr#protocolSize = 4 (assume IPv4 over ARP) * - if it's an ARP request: @ref arphdr#targetMacAddr = MacAddress("00:00:00:00:00:00") */ - void computeCalculateFields(); + void computeCalculateFields() override; /** * Is this packet an ARP request? @@ -168,9 +167,9 @@ namespace pcpp */ bool isReply() const; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } diff --git a/Packet++/header/BgpLayer.h b/Packet++/header/BgpLayer.h index 979af7469a..39030acf65 100644 --- a/Packet++/header/BgpLayer.h +++ b/Packet++/header/BgpLayer.h @@ -99,17 +99,17 @@ namespace pcpp /** * @return The size of the BGP message */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; /** * Multiple BGP messages can reside in a single packet, and the only layer that can come after a BGP message * is another BGP message. This method checks for remaining data and parses it as another BGP layer */ - void parseNextLayer(); + void parseNextLayer() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -120,7 +120,7 @@ namespace pcpp * - Set message type value * - Set message length */ - void computeCalculateFields(); + void computeCalculateFields() override; protected: // protected c'tors, this class cannot be instantiated by users @@ -132,7 +132,7 @@ namespace pcpp bgp_common_header* getBasicHeader() const { - return (bgp_common_header*)m_Data; + return reinterpret_cast(m_Data); } void setBgpFields(size_t messageLen = 0); @@ -222,7 +222,7 @@ namespace pcpp */ bgp_open_message* getOpenMsgHeader() const { - return (bgp_open_message*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -272,7 +272,7 @@ namespace pcpp // implement abstract methods - BgpMessageType getBgpMessageType() const + BgpMessageType getBgpMessageType() const override { return BgpLayer::Open; } @@ -388,7 +388,7 @@ namespace pcpp */ bgp_common_header* getBasicMsgHeader() const { - return (bgp_common_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -480,7 +480,7 @@ namespace pcpp // implement abstract methods - BgpMessageType getBgpMessageType() const + BgpMessageType getBgpMessageType() const override { return BgpLayer::Update; } @@ -561,7 +561,7 @@ namespace pcpp */ bgp_notification_message* getNotificationMsgHeader() const { - return (bgp_notification_message*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -606,7 +606,7 @@ namespace pcpp // implement abstract methods - BgpMessageType getBgpMessageType() const + BgpMessageType getBgpMessageType() const override { return BgpLayer::Notification; } @@ -652,12 +652,12 @@ namespace pcpp */ bgp_keepalive_message* getKeepaliveHeader() const { - return (bgp_keepalive_message*)getBasicHeader(); + return reinterpret_cast(getBasicHeader()); } // implement abstract methods - BgpMessageType getBgpMessageType() const + BgpMessageType getBgpMessageType() const override { return BgpLayer::Keepalive; } @@ -711,12 +711,12 @@ namespace pcpp */ bgp_route_refresh_message* getRouteRefreshHeader() const { - return (bgp_route_refresh_message*)getBasicHeader(); + return reinterpret_cast(getBasicHeader()); } // implement abstract methods - BgpMessageType getBgpMessageType() const + BgpMessageType getBgpMessageType() const override { return BgpLayer::RouteRefresh; } diff --git a/Packet++/header/CotpLayer.h b/Packet++/header/CotpLayer.h index 5412a2c312..3897e1eb83 100644 --- a/Packet++/header/CotpLayer.h +++ b/Packet++/header/CotpLayer.h @@ -46,8 +46,7 @@ namespace pcpp */ explicit CotpLayer(uint8_t tpduNumber); - virtual ~CotpLayer() - {} + ~CotpLayer() override = default; /** * @return COTP length @@ -119,7 +118,7 @@ namespace pcpp private: cotphdr* getCotpHeader() const { - return (cotphdr*)m_Data; + return reinterpret_cast(m_Data); } }; diff --git a/Packet++/header/DhcpLayer.h b/Packet++/header/DhcpLayer.h index 435becbdbc..90230593d7 100644 --- a/Packet++/header/DhcpLayer.h +++ b/Packet++/header/DhcpLayer.h @@ -408,8 +408,7 @@ namespace pcpp /** * A d'tor for this class, currently does nothing */ - virtual ~DhcpOption() - {} + ~DhcpOption() override = default; /** * Retrieve DHCP option data as IPv4 address. Relevant only if option value is indeed an IPv4 address @@ -444,7 +443,8 @@ namespace pcpp if (m_Data == nullptr || m_Data->recordLen - valueOffset < 1) return ""; - return std::string((const char*)m_Data->recordValue + valueOffset, (int)m_Data->recordLen - valueOffset); + return std::string(reinterpret_cast(m_Data->recordValue) + valueOffset, + static_cast(m_Data->recordLen) - valueOffset); } /** @@ -458,7 +458,7 @@ namespace pcpp void setValueString(const std::string& stringValue, int valueOffset = 0) { // calculate the maximum length of the destination buffer - size_t len = (size_t)m_Data->recordLen - (size_t)valueOffset; + size_t len = static_cast(m_Data->recordLen) - static_cast(valueOffset); // use the length of input string if a buffer is large enough for whole string if (stringValue.length() < len) @@ -475,14 +475,15 @@ namespace pcpp */ static bool canAssign(const uint8_t* recordRawData, size_t tlvDataLen) { - auto data = (TLVRawData*)recordRawData; + auto data = reinterpret_cast(recordRawData); if (data == nullptr) return false; if (tlvDataLen < sizeof(TLVRawData::recordType)) return false; - if (data->recordType == (uint8_t)DHCPOPT_END || data->recordType == (uint8_t)DHCPOPT_PAD) + if (data->recordType == static_cast(DHCPOPT_END) || + data->recordType == static_cast(DHCPOPT_PAD)) return true; return TLVRecord::canAssign(recordRawData, tlvDataLen); @@ -490,23 +491,25 @@ namespace pcpp // implement abstract methods - size_t getTotalSize() const + size_t getTotalSize() const override { if (m_Data == nullptr) return 0; - if (m_Data->recordType == (uint8_t)DHCPOPT_END || m_Data->recordType == (uint8_t)DHCPOPT_PAD) + if (m_Data->recordType == static_cast(DHCPOPT_END) || + m_Data->recordType == static_cast(DHCPOPT_PAD)) return sizeof(uint8_t); - return sizeof(uint8_t) * 2 + (size_t)m_Data->recordLen; + return sizeof(uint8_t) * 2 + static_cast(m_Data->recordLen); } - size_t getDataSize() const + size_t getDataSize() const override { if (m_Data == nullptr) return 0; - if (m_Data->recordType == (uint8_t)DHCPOPT_END || m_Data->recordType == (uint8_t)DHCPOPT_PAD) + if (m_Data->recordType == static_cast(DHCPOPT_END) || + m_Data->recordType == static_cast(DHCPOPT_PAD)) return 0; return m_Data->recordLen; @@ -530,7 +533,7 @@ namespace pcpp * @param[in] optionValueLen DHCP option value length in bytes */ DhcpOptionBuilder(DhcpOptionTypes optionType, const uint8_t* optionValue, uint8_t optionValueLen) - : TLVRecordBuilder((uint8_t)optionType, optionValue, optionValueLen) + : TLVRecordBuilder(static_cast(optionType), optionValue, optionValueLen) {} /** @@ -540,7 +543,7 @@ namespace pcpp * @param[in] optionValue A 1-byte option value */ DhcpOptionBuilder(DhcpOptionTypes optionType, uint8_t optionValue) - : TLVRecordBuilder((uint8_t)optionType, optionValue) + : TLVRecordBuilder(static_cast(optionType), optionValue) {} /** @@ -550,7 +553,7 @@ namespace pcpp * @param[in] optionValue A 2-byte option value */ DhcpOptionBuilder(DhcpOptionTypes optionType, uint16_t optionValue) - : TLVRecordBuilder((uint8_t)optionType, optionValue) + : TLVRecordBuilder(static_cast(optionType), optionValue) {} /** @@ -560,7 +563,7 @@ namespace pcpp * @param[in] optionValue A 4-byte option value */ DhcpOptionBuilder(DhcpOptionTypes optionType, uint32_t optionValue) - : TLVRecordBuilder((uint8_t)optionType, optionValue) + : TLVRecordBuilder(static_cast(optionType), optionValue) {} /** @@ -570,7 +573,7 @@ namespace pcpp * @param[in] optionValue The IPv4 address option value */ DhcpOptionBuilder(DhcpOptionTypes optionType, const IPv4Address& optionValue) - : TLVRecordBuilder((uint8_t)optionType, optionValue) + : TLVRecordBuilder(static_cast(optionType), optionValue) {} /** @@ -580,7 +583,7 @@ namespace pcpp * @param[in] optionValue The string option value */ DhcpOptionBuilder(DhcpOptionTypes optionType, const std::string& optionValue) - : TLVRecordBuilder((uint8_t)optionType, optionValue) + : TLVRecordBuilder(static_cast(optionType), optionValue) {} /** @@ -640,8 +643,7 @@ namespace pcpp /** * A destructor for this layer */ - virtual ~DhcpLayer() - {} + ~DhcpLayer() override = default; /** * Get a pointer to the DHCP header. Notice this points directly to the data, so every change will change the @@ -650,7 +652,7 @@ namespace pcpp */ dhcp_header* getDhcpHeader() const { - return (dhcp_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -658,7 +660,7 @@ namespace pcpp */ BootpOpCodes getOpCode() const { - return (BootpOpCodes)getDhcpHeader()->opCode; + return static_cast(getDhcpHeader()->opCode); } /** @@ -834,13 +836,13 @@ namespace pcpp /** * Does nothing for this layer (DhcpLayer is always last) */ - void parseNextLayer() + void parseNextLayer() override {} /** * @return The size of @ref dhcp_header + size of options */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } @@ -855,11 +857,11 @@ namespace pcpp * - @ref dhcp_header#hardwareType = 1 (Ethernet) * - @ref dhcp_header#hardwareAddressLength = 6 (MAC address length) */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } diff --git a/Packet++/header/DhcpV6Layer.h b/Packet++/header/DhcpV6Layer.h index 57e0edb5fc..5a07cdad6b 100644 --- a/Packet++/header/DhcpV6Layer.h +++ b/Packet++/header/DhcpV6Layer.h @@ -205,8 +205,7 @@ namespace pcpp /** * A d'tor for this class, currently does nothing */ - virtual ~DhcpV6Option() - {} + ~DhcpV6Option() override = default; /** * @return The option type converted to ::DhcpV6OptionType enum @@ -220,8 +219,8 @@ namespace pcpp // implement abstract methods - size_t getTotalSize() const; - size_t getDataSize() const; + size_t getTotalSize() const override; + size_t getDataSize() const override; }; /** @@ -415,13 +414,13 @@ namespace pcpp /** * Does nothing for this layer (DhcpV6Layer is always last) */ - void parseNextLayer() + void parseNextLayer() override {} /** * @return The size of @ref dhcpv6_header + size of options */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } @@ -429,12 +428,12 @@ namespace pcpp /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -446,7 +445,7 @@ namespace pcpp } dhcpv6_header* getDhcpHeader() const { - return (dhcpv6_header*)m_Data; + return reinterpret_cast(m_Data); } DhcpV6Option addOptionAt(const DhcpV6OptionBuilder& optionBuilder, int offset); diff --git a/Packet++/header/DnsLayer.h b/Packet++/header/DnsLayer.h index 06819a791a..7749989af3 100644 --- a/Packet++/header/DnsLayer.h +++ b/Packet++/header/DnsLayer.h @@ -125,7 +125,7 @@ namespace pcpp */ DnsLayer& operator=(const DnsLayer& other); - virtual ~DnsLayer(); + ~DnsLayer() override; /** * Get a pointer to the DNS header (as opposed to the DNS data which is the queries, answers, etc. Data can be @@ -434,14 +434,14 @@ namespace pcpp /** * Does nothing for this layer (DnsLayer is always last) */ - void parseNextLayer() + void parseNextLayer() override {} /** * @return The size of the DNS data in the packet including he DNS header and size of all queries, answers, * authorities and additional records */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } // No layer above DNS @@ -449,12 +449,12 @@ namespace pcpp /** * Does nothing for this layer */ - virtual void computeCalculateFields() + void computeCalculateFields() override {} - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -566,7 +566,7 @@ namespace pcpp /** * Calculate the TCP message length field */ - void computeCalculateFields(); + void computeCalculateFields() override; }; // implementation of inline methods diff --git a/Packet++/header/DnsResource.h b/Packet++/header/DnsResource.h index af34fe621f..b1b47cfd25 100644 --- a/Packet++/header/DnsResource.h +++ b/Packet++/header/DnsResource.h @@ -61,8 +61,7 @@ namespace pcpp void setDnsLayer(DnsLayer* dnsLayer, size_t offsetInLayer); public: - virtual ~IDnsResource() - {} + virtual ~IDnsResource() = default; /** * @return The DNS type of this record @@ -146,15 +145,14 @@ namespace pcpp {} public: - virtual ~DnsQuery() - {} + ~DnsQuery() override = default; // implementation of abstract methods - virtual size_t getSize() const + size_t getSize() const override { return m_NameLength + 2 * sizeof(uint16_t); } - virtual DnsResourceType getType() const + DnsResourceType getType() const override { return DnsQueryType; } @@ -182,8 +180,7 @@ namespace pcpp {} public: - virtual ~DnsResource() - {} + ~DnsResource() override = default; /** * @return The time-to-leave value for this record @@ -260,11 +257,11 @@ namespace pcpp void setCustomDnsClass(uint16_t customValue); // implementation of abstract methods - virtual size_t getSize() const + size_t getSize() const override { return m_NameLength + 3 * sizeof(uint16_t) + sizeof(uint32_t) + getDataLength(); } - virtual DnsResourceType getType() const + DnsResourceType getType() const override { return m_ResourceType; } diff --git a/Packet++/header/DnsResourceData.h b/Packet++/header/DnsResourceData.h index 990990a29b..082670bcc6 100644 --- a/Packet++/header/DnsResourceData.h +++ b/Packet++/header/DnsResourceData.h @@ -40,8 +40,7 @@ namespace pcpp /** * A virtual d'tor, does nothing */ - virtual ~IDnsResourceData() - {} + virtual ~IDnsResourceData() = default; /** * A templated method which takes a class that derives from IDnsResourceData as the template argument and @@ -142,8 +141,7 @@ namespace pcpp StringDnsResourceData(const uint8_t* dataPtr, size_t dataLen, IDnsResource* dnsResource); - ~StringDnsResourceData() - {} + ~StringDnsResourceData() override = default; /** * Equality operator overload for this class that compares the strings stored in each object @@ -157,11 +155,11 @@ namespace pcpp // implement abstract methods - std::string toString() const + std::string toString() const override { return m_Data; } - bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const; + bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const override; }; /** @@ -215,11 +213,11 @@ namespace pcpp // implement abstract methods - std::string toString() const + std::string toString() const override { return m_Data.toString(); } - bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const; + bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const override; }; /** @@ -273,11 +271,11 @@ namespace pcpp // implement abstract methods - std::string toString() const + std::string toString() const override { return m_Data.toString(); } - bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const; + bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const override; }; /** @@ -319,8 +317,7 @@ namespace pcpp */ MxDnsResourceData(const uint16_t& preference, const std::string& mailExchange); - ~MxDnsResourceData() - {} + ~MxDnsResourceData() override = default; /** * Equality operator overload for this class that compares the MX data stored in each object @@ -351,9 +348,9 @@ namespace pcpp * A string representation of the MX data stored in this object. The string format is as follows: * 'pref: {preference_value}; mx: {mail_exchange_hostname_value}' */ - std::string toString() const; + std::string toString() const override; - bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const; + bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const override; private: MxData m_Data; @@ -391,7 +388,7 @@ namespace pcpp */ GenericDnsResourceData(const GenericDnsResourceData& other); - ~GenericDnsResourceData() + ~GenericDnsResourceData() override { if (m_Data != nullptr) delete[] m_Data; @@ -408,8 +405,8 @@ namespace pcpp // implement abstract methods - std::string toString() const; - bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const; + std::string toString() const override; + bool toByteArr(uint8_t* arr, size_t& arrLength, IDnsResource* dnsResource) const override; }; } // namespace pcpp diff --git a/Packet++/header/EthDot3Layer.h b/Packet++/header/EthDot3Layer.h index 44a987accc..c2a39e9afe 100644 --- a/Packet++/header/EthDot3Layer.h +++ b/Packet++/header/EthDot3Layer.h @@ -64,8 +64,7 @@ namespace pcpp */ EthDot3Layer(const MacAddress& sourceMac, const MacAddress& destMac, uint16_t length); - ~EthDot3Layer() - {} + ~EthDot3Layer() override = default; /** * Get a pointer to the Ethernet header. Notice this points directly to the data, so every change will change @@ -74,7 +73,7 @@ namespace pcpp */ ether_dot3_header* getEthHeader() const { - return (ether_dot3_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -118,12 +117,12 @@ namespace pcpp /** * Parses next layer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of ether_dot3_header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(ether_dot3_header); } @@ -131,12 +130,12 @@ namespace pcpp /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/EthLayer.h b/Packet++/header/EthLayer.h index 0192a5e44e..4e9a354c80 100644 --- a/Packet++/header/EthLayer.h +++ b/Packet++/header/EthLayer.h @@ -101,8 +101,7 @@ namespace pcpp */ EthLayer(const MacAddress& sourceMac, const MacAddress& destMac, uint16_t etherType = 0); - ~EthLayer() - {} + ~EthLayer() override = default; /** * Get a pointer to the Ethernet header. Notice this points directly to the data, so every change will change @@ -111,7 +110,7 @@ namespace pcpp */ inline ether_header* getEthHeader() const { - return (ether_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -156,12 +155,12 @@ namespace pcpp * Currently identifies the following next layers: IPv4Layer, IPv6Layer, ArpLayer, VlanLayer, PPPoESessionLayer, * PPPoEDiscoveryLayer, MplsLayer. Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of ether_header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(ether_header); } @@ -169,11 +168,11 @@ namespace pcpp /** * Calculate ether_header#etherType for known protocols: IPv4, IPv6, ARP, VLAN */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/FtpLayer.h b/Packet++/header/FtpLayer.h index fc5863861f..0b429ffcd5 100644 --- a/Packet++/header/FtpLayer.h +++ b/Packet++/header/FtpLayer.h @@ -45,25 +45,25 @@ namespace pcpp // overridden methods /// FTP is the always last so does nothing for this layer - void parseNextLayer() + void parseNextLayer() override {} /** * @return Get the size of the layer */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } /// Does nothing for this layer - void computeCalculateFields() + void computeCalculateFields() override {} /** * @return The OSI layer level of FTP (Application Layer). */ - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -297,7 +297,7 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; }; /** @@ -489,7 +489,7 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; }; /** @@ -513,6 +513,6 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; }; } // namespace pcpp diff --git a/Packet++/header/GreLayer.h b/Packet++/header/GreLayer.h index d6793cba3d..53a6cc4229 100644 --- a/Packet++/header/GreLayer.h +++ b/Packet++/header/GreLayer.h @@ -104,8 +104,7 @@ namespace pcpp class GreLayer : public Layer { public: - virtual ~GreLayer() - {} + ~GreLayer() override = default; /** * A static method that determines the GRE version of GRE layer raw data by looking at the @@ -147,14 +146,14 @@ namespace pcpp * IPv4Layer, IPv6Layer, VlanLayer, MplsLayer, PPP_PPTPLayer, EthLayer, EthDot3Layer * Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of GRE header (may change if optional fields are added or removed) */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } @@ -204,8 +203,7 @@ namespace pcpp */ GREv0Layer(); - virtual ~GREv0Layer() - {} + ~GREv0Layer() override = default; /** * Get a pointer to the basic GRE header containing only non-optional fields. Notice this points directly to the @@ -218,7 +216,7 @@ namespace pcpp */ gre_basic_header* getGreHeader() const { - return (gre_basic_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -301,9 +299,9 @@ namespace pcpp * - gre_basic_header#protocol * - GRE checksum field (if exists in packet) */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; }; /** @@ -329,8 +327,7 @@ namespace pcpp */ explicit GREv1Layer(uint16_t callID); - virtual ~GREv1Layer() - {} + ~GREv1Layer() override = default; /** * Get a pointer to the basic GREv1 header containing all non-optional fields. Notice this points directly to @@ -344,7 +341,7 @@ namespace pcpp */ gre1_header* getGreHeader() const { - return (gre1_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -389,9 +386,9 @@ namespace pcpp * - gre1_header#payloadLength * - gre_basic_header#protocol */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; }; /** @@ -420,8 +417,7 @@ namespace pcpp */ PPP_PPTPLayer(uint8_t address, uint8_t control); - ~PPP_PPTPLayer() - {} + ~PPP_PPTPLayer() override = default; /** * Get a pointer to the PPP-PPTP header. Notice this points directly to the data, so every change will change @@ -430,7 +426,7 @@ namespace pcpp */ ppp_pptp_header* getPPP_PPTPHeader() const { - return (ppp_pptp_header*)m_Data; + return reinterpret_cast(m_Data); } // implement abstract methods @@ -438,12 +434,12 @@ namespace pcpp /** * Currently identifies the following next layers: IPv4Layer, IPv6Layer. Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return The size of @ref ppp_pptp_header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(ppp_pptp_header); } @@ -452,14 +448,14 @@ namespace pcpp * Calculate the following fields: * - ppp_pptp_header#protocol */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const + std::string toString() const override { return "PPP for PPTP Layer"; } - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelSesionLayer; } diff --git a/Packet++/header/GtpLayer.h b/Packet++/header/GtpLayer.h index a860f1ecf4..ffebf04513 100644 --- a/Packet++/header/GtpLayer.h +++ b/Packet++/header/GtpLayer.h @@ -307,8 +307,7 @@ namespace pcpp GtpExtension getNextExtension() const; }; // GtpExtension - virtual ~GtpV1Layer() - {} + ~GtpV1Layer() override = default; /** A constructor that creates the layer from an existing packet raw data * @param[in] data A pointer to the raw data @@ -357,7 +356,7 @@ namespace pcpp */ gtpv1_header* getHeader() const { - return (gtpv1_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -454,7 +453,7 @@ namespace pcpp /** * Identifies the following next layers for GTP-U packets: IPv4Layer, IPv6Layer. Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return The size of the GTP header. For GTP-C packets the size is determined by the value of @@ -462,17 +461,17 @@ namespace pcpp * the size of gtpv1_header plus the size of the optional fields such as sequence number, N-PDU * or extensions if exist) */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; /** * Calculate the following fields: * - gtpv1_header#messageLength */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelTransportLayer; } diff --git a/Packet++/header/HttpLayer.h b/Packet++/header/HttpLayer.h index 3716c7b598..cc22499b44 100644 --- a/Packet++/header/HttpLayer.h +++ b/Packet++/header/HttpLayer.h @@ -73,8 +73,7 @@ namespace pcpp class HttpMessage : public TextBasedProtocolMessage { public: - virtual ~HttpMessage() - {} + ~HttpMessage() override = default; /** * A static method that checks whether the port is considered as HTTP @@ -88,13 +87,13 @@ namespace pcpp // overridden methods - virtual HeaderField* addField(const std::string& fieldName, const std::string& fieldValue); - virtual HeaderField* addField(const HeaderField& newField); - virtual HeaderField* insertField(HeaderField* prevField, const std::string& fieldName, - const std::string& fieldValue); - virtual HeaderField* insertField(HeaderField* prevField, const HeaderField& newField); + HeaderField* addField(const std::string& fieldName, const std::string& fieldValue) override; + HeaderField* addField(const HeaderField& newField) override; + HeaderField* insertField(HeaderField* prevField, const std::string& fieldName, + const std::string& fieldValue) override; + HeaderField* insertField(HeaderField* prevField, const HeaderField& newField) override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -114,11 +113,11 @@ namespace pcpp } // implementation of abstract methods - char getHeaderFieldNameValueSeparator() const + char getHeaderFieldNameValueSeparator() const override { return ':'; } - bool spacesAllowedBetweenHeaderFieldNameAndValue() const + bool spacesAllowedBetweenHeaderFieldNameAndValue() const override { return true; } @@ -187,7 +186,7 @@ namespace pcpp */ HttpRequestLayer(HttpMethod method, const std::string& uri, HttpVersion version); - virtual ~HttpRequestLayer(); + ~HttpRequestLayer() override; /** * A copy constructor for this layer. This copy constructor inherits base copy constructor @@ -222,7 +221,7 @@ namespace pcpp std::string getUrl() const; // implement Layer's abstract methods - std::string toString() const; + std::string toString() const override; private: HttpRequestFirstLine* m_FirstLine; @@ -554,7 +553,7 @@ namespace pcpp */ explicit HttpResponseLayer(HttpVersion version, const HttpResponseStatusCode& statusCode); - virtual ~HttpResponseLayer(); + ~HttpResponseLayer() override; /** * A copy constructor for this layer. This copy constructor inherits base copy constructor @@ -606,7 +605,7 @@ namespace pcpp // implement Layer's abstract methods - std::string toString() const; + std::string toString() const override; private: HttpResponseFirstLine* m_FirstLine; diff --git a/Packet++/header/IPLayer.h b/Packet++/header/IPLayer.h index b65f4217a7..187f4e439e 100644 --- a/Packet++/header/IPLayer.h +++ b/Packet++/header/IPLayer.h @@ -21,8 +21,7 @@ namespace pcpp class IPLayer { protected: - IPLayer() - {} + IPLayer() = default; public: /** @@ -40,7 +39,6 @@ namespace pcpp /** * An empty destructor */ - virtual ~IPLayer() - {} + virtual ~IPLayer() = default; }; } // namespace pcpp diff --git a/Packet++/header/IPReassembly.h b/Packet++/header/IPReassembly.h index cf16724f3e..54571ebd5c 100644 --- a/Packet++/header/IPReassembly.h +++ b/Packet++/header/IPReassembly.h @@ -201,17 +201,17 @@ namespace pcpp // implement abstract methods - uint32_t getHashValue() const; + uint32_t getHashValue() const override; /** * @return pcpp#IPv4 protocol */ - ProtocolType getProtocolType() const + ProtocolType getProtocolType() const override { return IPv4; } - PacketKey* clone() const + PacketKey* clone() const override { return new IPv4PacketKey(*this); } @@ -319,17 +319,17 @@ namespace pcpp // implement abstract methods - uint32_t getHashValue() const; + uint32_t getHashValue() const override; /** * @return pcpp#IPv6 protocol */ - ProtocolType getProtocolType() const + ProtocolType getProtocolType() const override { return IPv6; } - PacketKey* clone() const + PacketKey* clone() const override { return new IPv6PacketKey(*this); } diff --git a/Packet++/header/IPSecLayer.h b/Packet++/header/IPSecLayer.h index 5ba64819e2..2ef17bd905 100644 --- a/Packet++/header/IPSecLayer.h +++ b/Packet++/header/IPSecLayer.h @@ -68,7 +68,7 @@ namespace pcpp */ ipsec_authentication_header* getAHHeader() const { - return (ipsec_authentication_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -109,26 +109,26 @@ namespace pcpp /** * @return The size of the AH header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { - return 4 * (getAHHeader()->payloadLen + 2); + return static_cast(4) * (getAHHeader()->payloadLen + 2); } /** * Currently identifies the following next layers: UdpLayer, TcpLayer, IPv4Layer, IPv6Layer and ESPLayer. * Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } @@ -184,7 +184,7 @@ namespace pcpp /** * @return The size of the ESP header (8 bytes) */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(ipsec_esp); } @@ -192,17 +192,17 @@ namespace pcpp /** * The payload of an ESP layer is encrypted, hence the next layer is always a generic payload (PayloadLayer) */ - void parseNextLayer(); + void parseNextLayer() override; /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelTransportLayer; } diff --git a/Packet++/header/IPv4Layer.h b/Packet++/header/IPv4Layer.h index d88133fd39..4d7317872b 100644 --- a/Packet++/header/IPv4Layer.h +++ b/Packet++/header/IPv4Layer.h @@ -226,8 +226,7 @@ namespace pcpp /** * A d'tor for this class, currently does nothing */ - ~IPv4Option() - {} + ~IPv4Option() override = default; /** * A method for parsing the IPv4 option value as a list of IPv4 addresses. This method is relevant only for @@ -347,7 +346,7 @@ namespace pcpp // implement abstract methods - size_t getTotalSize() const + size_t getTotalSize() const override { if (m_Data == nullptr) return 0; @@ -359,7 +358,7 @@ namespace pcpp return static_cast(m_Data->recordLen); } - size_t getDataSize() const + size_t getDataSize() const override { if (m_Data == nullptr) return 0; @@ -505,7 +504,7 @@ namespace pcpp */ iphdr* getIPv4Header() const { - return (iphdr*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -513,7 +512,7 @@ namespace pcpp * but adds a level of abstraction because IPAddress can be used for both IPv4 and IPv6 addresses * @return An IPAddress containing the source address */ - IPAddress getSrcIPAddress() const + IPAddress getSrcIPAddress() const override { return getSrcIPv4Address(); } @@ -541,7 +540,7 @@ namespace pcpp * but adds a level of abstraction because IPAddress can be used for both IPv4 and IPv6 addresses * @return An IPAddress containing the destination address */ - IPAddress getDstIPAddress() const + IPAddress getDstIPAddress() const override { return getDstIPv4Address(); } @@ -673,12 +672,12 @@ namespace pcpp * * Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of IPv4 header (including IPv4 options if exist) */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return static_cast(static_cast(getIPv4Header()->internetHeaderLength) * 4) + m_TempHeaderExtension; @@ -692,11 +691,11 @@ namespace pcpp * - iphdr#protocol = calculated if next layer is known: ::PACKETPP_IPPROTO_TCP for TCP, ::PACKETPP_IPPROTO_UDP * for UDP, ::PACKETPP_IPPROTO_ICMP for ICMP */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } diff --git a/Packet++/header/IPv6Extensions.h b/Packet++/header/IPv6Extensions.h index 92bd16740f..b459f30d8b 100644 --- a/Packet++/header/IPv6Extensions.h +++ b/Packet++/header/IPv6Extensions.h @@ -576,7 +576,7 @@ namespace pcpp * calculation is: [ 4 * (ipv6_authentication_header#headerLen + 2) ] * @return The length of this extension */ - size_t getExtensionLen() const + size_t getExtensionLen() const override { return 4 * (getBaseHeader()->headerLen + 2); } diff --git a/Packet++/header/IPv6Layer.h b/Packet++/header/IPv6Layer.h index d3c2096e23..2c96f5f35d 100644 --- a/Packet++/header/IPv6Layer.h +++ b/Packet++/header/IPv6Layer.h @@ -83,7 +83,7 @@ namespace pcpp /** * A destructor for this layer */ - ~IPv6Layer(); + ~IPv6Layer() override; /** * An assignment operator that first delete all data from current layer and then copy the entire header from the @@ -98,7 +98,7 @@ namespace pcpp */ ip6_hdr* getIPv6Header() const { - return (ip6_hdr*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -106,7 +106,7 @@ namespace pcpp * but adds a level of abstraction because IPAddress can be used for both IPv4 and IPv6 addresses * @return An IPAddress containing the source address */ - IPAddress getSrcIPAddress() const + IPAddress getSrcIPAddress() const override { return getSrcIPv6Address(); } @@ -143,7 +143,7 @@ namespace pcpp * but adds a level of abstraction because IPAddress can be used for both IPv4 and IPv6 addresses * @return An IPAddress containing the destination address */ - IPAddress getDstIPAddress() const + IPAddress getDstIPAddress() const override { return getDstIPv6Address(); } @@ -213,12 +213,12 @@ namespace pcpp * * Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of @ref ip6_hdr */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(ip6_hdr) + m_ExtensionsLen; } @@ -230,11 +230,11 @@ namespace pcpp * - ip6_hdr#nextHeader = calculated if next layer is known: ::PACKETPP_IPPROTO_TCP for TCP, * ::PACKETPP_IPPROTO_UDP for UDP, ::PACKETPP_IPPROTO_ICMP for ICMP */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } diff --git a/Packet++/header/IcmpLayer.h b/Packet++/header/IcmpLayer.h index 18c8b85068..f1330ec4c0 100644 --- a/Packet++/header/IcmpLayer.h +++ b/Packet++/header/IcmpLayer.h @@ -394,8 +394,7 @@ namespace pcpp */ IcmpLayer(); - virtual ~IcmpLayer() - {} + ~IcmpLayer() override = default; /** * Get a pointer to the basic ICMP header. Notice this points directly to the data, so every change will change @@ -404,7 +403,7 @@ namespace pcpp */ icmphdr* getIcmpHeader() const { - return (icmphdr*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -706,23 +705,23 @@ namespace pcpp * ICMP_PARAM_PROBLEM have data that contains IPv4 header and some L4 header (TCP/UDP/ICMP). This method parses * these headers as separate layers on top of the ICMP layer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return The ICMP header length. This length varies according to the ICMP message type. This length doesn't * include IPv4 and L4 headers in case ICMP message type are: ICMP_DEST_UNREACHABLE, ICMP_SOURCE_QUENCH, * ICMP_TIME_EXCEEDED, ICMP_REDIRECT, ICMP_PARAM_PROBLEM */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; /** * Calculate ICMP checksum field */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } diff --git a/Packet++/header/IcmpV6Layer.h b/Packet++/header/IcmpV6Layer.h index 3ea4843355..0ee8cd12e8 100644 --- a/Packet++/header/IcmpV6Layer.h +++ b/Packet++/header/IcmpV6Layer.h @@ -152,8 +152,7 @@ namespace pcpp */ IcmpV6Layer(ICMPv6MessageType msgType, uint8_t code, const uint8_t* data, size_t dataLen); - virtual ~IcmpV6Layer() - {} + ~IcmpV6Layer() override = default; /** * A static method that creates an ICMPv6 layer from packet raw data @@ -192,13 +191,13 @@ namespace pcpp /** * Does nothing for this layer. ICMPv6 is the last layer. */ - void parseNextLayer() + void parseNextLayer() override {} /** * @return The size of the ICMPv6 message */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } @@ -206,14 +205,14 @@ namespace pcpp /** * Calculate ICMPv6 checksum field */ - void computeCalculateFields(); + void computeCalculateFields() override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } - std::string toString() const; + std::string toString() const override; protected: IcmpV6Layer() = default; @@ -222,7 +221,7 @@ namespace pcpp void calculateChecksum(); icmpv6hdr* getIcmpv6Header() const { - return (icmpv6hdr*)m_Data; + return reinterpret_cast(m_Data); } }; @@ -265,8 +264,7 @@ namespace pcpp */ ICMPv6EchoLayer(ICMPv6EchoType echoType, uint16_t id, uint16_t sequence, const uint8_t* data, size_t dataLen); - virtual ~ICMPv6EchoLayer() - {} + ~ICMPv6EchoLayer() override = default; /** * @return Identifier in host representation @@ -294,12 +292,12 @@ namespace pcpp return m_Data + sizeof(icmpv6_echo_hdr); } - std::string toString() const; + std::string toString() const override; private: icmpv6_echo_hdr* getEchoHeader() const { - return (icmpv6_echo_hdr*)m_Data; + return reinterpret_cast(m_Data); } }; diff --git a/Packet++/header/IgmpLayer.h b/Packet++/header/IgmpLayer.h index c16ecfee18..97b1b5f46d 100644 --- a/Packet++/header/IgmpLayer.h +++ b/Packet++/header/IgmpLayer.h @@ -172,8 +172,7 @@ namespace pcpp size_t getHeaderSizeByVerAndType(ProtocolType igmpVer, IgmpType igmpType) const; public: - virtual ~IgmpLayer() - {} + ~IgmpLayer() override = default; /** * Get a pointer to the raw IGMPv1/IGMPv2 header. Notice this points directly to the data, so every change will @@ -182,7 +181,7 @@ namespace pcpp */ igmp_header* getIgmpHeader() const { - return (igmp_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -226,20 +225,20 @@ namespace pcpp /** * Does nothing for this layer (IGMP layer is always last) */ - void parseNextLayer() + void parseNextLayer() override {} /** * @return Size of IGMP header = 8B */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(igmp_header); } - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } @@ -276,15 +275,14 @@ namespace pcpp /** * A destructor for this layer (does nothing) */ - ~IgmpV1Layer() - {} + ~IgmpV1Layer() override = default; // implement abstract methods /** * Calculate the IGMP checksum and set igmp_header#maxResponseTime to 0 (this field is unused in IGMPv1) */ - void computeCalculateFields(); + void computeCalculateFields() override; }; /** @@ -320,15 +318,14 @@ namespace pcpp /** * A destructor for this layer (does nothing) */ - ~IgmpV2Layer() - {} + ~IgmpV2Layer() override = default; // implement abstract methods /** * Calculate the IGMP checksum */ - void computeCalculateFields(); + void computeCalculateFields() override; }; /** @@ -366,7 +363,7 @@ namespace pcpp */ igmpv3_query_header* getIgmpV3QueryHeader() const { - return (igmpv3_query_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -423,13 +420,13 @@ namespace pcpp /** * Calculate the IGMP checksum */ - void computeCalculateFields(); + void computeCalculateFields() override; /** * @return The message size in bytes which include the size of the basic header + the size of the source address * list */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; }; /** @@ -466,7 +463,7 @@ namespace pcpp */ igmpv3_report_header* getReportHeader() const { - return (igmpv3_report_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -539,13 +536,13 @@ namespace pcpp /** * Calculate the IGMP checksum */ - void computeCalculateFields(); + void computeCalculateFields() override; /** * @return The message size in bytes which include the size of the basic header + the size of the group record * list */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } diff --git a/Packet++/header/LLCLayer.h b/Packet++/header/LLCLayer.h index 71f1815533..a3595a107c 100644 --- a/Packet++/header/LLCLayer.h +++ b/Packet++/header/LLCLayer.h @@ -58,22 +58,22 @@ namespace pcpp */ inline llc_header* getLlcHeader() const { - return (llc_header*)m_Data; + return reinterpret_cast(m_Data); }; // overridden methods /// Parses the next layer. Currently only STP supported as next layer - void parseNextLayer(); + void parseNextLayer() override; /// Does nothing for this layer - void computeCalculateFields() + void computeCalculateFields() override {} /** * @return Get the size of the LLC header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(llc_header); } @@ -81,12 +81,12 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; /** * @return The OSI layer level of LLC (Data Link Layer). */ - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/Layer.h b/Packet++/header/Layer.h index 53c49f83d1..828cb5c84f 100644 --- a/Packet++/header/Layer.h +++ b/Packet++/header/Layer.h @@ -29,8 +29,7 @@ namespace pcpp */ virtual uint8_t* getDataPtr(size_t offset = 0) const = 0; - virtual ~IDataContainer() - {} + virtual ~IDataContainer() = default; }; class Packet; @@ -75,7 +74,7 @@ namespace pcpp * A destructor for this class. Frees the data if it was allocated by the layer constructor (see * isAllocatedToPacket() for more info) */ - virtual ~Layer(); + ~Layer() override; /** * @return A pointer to the next layer in the protocol stack or nullptr if the layer is the last one @@ -164,9 +163,9 @@ namespace pcpp // implement abstract methods - uint8_t* getDataPtr(size_t offset = 0) const + uint8_t* getDataPtr(size_t offset = 0) const override { - return (uint8_t*)(m_Data + offset); + return static_cast(m_Data + offset); } // abstract methods diff --git a/Packet++/header/LdapLayer.h b/Packet++/header/LdapLayer.h index c2d68a26e3..e3813ebc30 100644 --- a/Packet++/header/LdapLayer.h +++ b/Packet++/header/LdapLayer.h @@ -410,8 +410,7 @@ namespace pcpp LdapLayer(uint16_t messageId, LdapOperationType operationType, const std::vector& messageRecords, const std::vector& controls = std::vector()); - ~LdapLayer() - {} + ~LdapLayer() override = default; /** * @return The root ASN.1 record of the LDAP message. All of the message data will be under this record. diff --git a/Packet++/header/MplsLayer.h b/Packet++/header/MplsLayer.h index b5b6fef549..dc111da685 100644 --- a/Packet++/header/MplsLayer.h +++ b/Packet++/header/MplsLayer.h @@ -29,7 +29,7 @@ namespace pcpp mpls_header* getMplsHeader() const { - return (mpls_header*)m_Data; + return reinterpret_cast(m_Data); } public: @@ -53,8 +53,7 @@ namespace pcpp */ MplsLayer(uint32_t mplsLabel, uint8_t ttl, uint8_t experimentalUseValue, bool bottomOfStack); - virtual ~MplsLayer() - {} + ~MplsLayer() override = default; /** * @return TTL value of the MPLS header @@ -114,12 +113,12 @@ namespace pcpp /** * Currently identifies the following next layers: IPv4Layer, IPv6Layer, MplsLayer. Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of MPLS header (4 bytes) */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(mpls_header); } @@ -128,11 +127,11 @@ namespace pcpp * Set/unset the bottom-of-stack bit according to next layer: if it's a MPLS layer then bottom-of-stack will be * unset. If it's not a MPLS layer this bit will be set */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelNetworkLayer; } diff --git a/Packet++/header/NdpLayer.h b/Packet++/header/NdpLayer.h index 518fb54fc1..6c88df2403 100644 --- a/Packet++/header/NdpLayer.h +++ b/Packet++/header/NdpLayer.h @@ -48,8 +48,7 @@ namespace pcpp /** * A d'tor for this class, currently does nothing */ - ~NdpOption() - {} + ~NdpOption() override = default; /** * @return NDP option type casted as pcpp::NDPNeighborOptionTypes enum. If the data is null a value @@ -65,15 +64,15 @@ namespace pcpp // implement abstract methods - size_t getTotalSize() const + size_t getTotalSize() const override { if (m_Data == nullptr) - return (size_t)0; + return 0; - return (size_t)m_Data->recordLen * 8; + return static_cast(m_Data->recordLen) * 8; } - size_t getDataSize() const + size_t getDataSize() const override { if (m_Data == nullptr) { @@ -81,7 +80,7 @@ namespace pcpp } // length value is stored in units of 8 octets - return (size_t)m_Data->recordLen * 8 - (2 * sizeof(uint8_t)); + return static_cast(m_Data->recordLen) * 8 - (2 * sizeof(uint8_t)); } }; @@ -120,8 +119,7 @@ namespace pcpp class NDPLayerBase : public IcmpV6Layer { public: - virtual ~NDPLayerBase() - {} + ~NDPLayerBase() override = default; /** * @return The number of NDP options in this layer @@ -232,8 +230,7 @@ namespace pcpp */ NDPNeighborSolicitationLayer(uint8_t code, const IPv6Address& targetIP, const MacAddress& srcMac); - virtual ~NDPNeighborSolicitationLayer() - {} + ~NDPNeighborSolicitationLayer() override = default; /** * @return Get the IP address specified as the target IP address in the solicitation message @@ -255,15 +252,15 @@ namespace pcpp */ MacAddress getLinkLayerAddress() const; - std::string toString() const; + std::string toString() const override; private: void initLayer(uint8_t code, const IPv6Address& targetIP); ndpneighborsolicitationhdr* getNdpHeader() const { - return (ndpneighborsolicitationhdr*)m_Data; + return reinterpret_cast(m_Data); } - size_t getNdpHeaderLen() const + size_t getNdpHeaderLen() const override { return sizeof(ndpneighborsolicitationhdr); }; @@ -349,8 +346,7 @@ namespace pcpp NDPNeighborAdvertisementLayer(uint8_t code, const IPv6Address& targetIP, bool routerFlag, bool unicastFlag, bool overrideFlag); - virtual ~NDPNeighborAdvertisementLayer() - {} + ~NDPNeighborAdvertisementLayer() override = default; /** * @return Get the target MAC address @@ -394,15 +390,15 @@ namespace pcpp return getNdpHeader()->override; } - std::string toString() const; + std::string toString() const override; private: void initLayer(uint8_t code, const IPv6Address& targetIP, bool routerFlag, bool unicastFlag, bool overrideFlag); ndpneighboradvertisementhdr* getNdpHeader() const { - return (ndpneighboradvertisementhdr*)m_Data; + return reinterpret_cast(m_Data); } - size_t getNdpHeaderLen() const + size_t getNdpHeaderLen() const override { return sizeof(ndpneighboradvertisementhdr); }; diff --git a/Packet++/header/NflogLayer.h b/Packet++/header/NflogLayer.h index b49aaa997a..12052911c0 100644 --- a/Packet++/header/NflogLayer.h +++ b/Packet++/header/NflogLayer.h @@ -115,7 +115,7 @@ namespace pcpp */ void assign(uint8_t* recordRawData) { - m_Data = (NflogTLVRawData*)recordRawData; + m_Data = reinterpret_cast(recordRawData); } /** @@ -150,7 +150,7 @@ namespace pcpp */ uint8_t* getRecordBasePtr() const { - return (uint8_t*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -178,8 +178,7 @@ namespace pcpp NflogLayer(uint8_t* data, size_t dataLen, Packet* packet) : Layer(data, dataLen, nullptr, packet, NFLOG) {} - ~NflogLayer() - {} + ~NflogLayer() override = default; /** * Get a pointer to the Nflog header. @@ -187,7 +186,7 @@ namespace pcpp */ nflog_header* getNflogHeader() const { - return (nflog_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -224,21 +223,21 @@ namespace pcpp * Currently identifies the following next layers: IPv4Layer, IPv6Layer using address family * Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of nflog_header */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; /** * Does nothing for this layer */ - void computeCalculateFields() {}; + void computeCalculateFields() override {}; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/NtpLayer.h b/Packet++/header/NtpLayer.h index 822eca6b3c..2fc062bc33 100644 --- a/Packet++/header/NtpLayer.h +++ b/Packet++/header/NtpLayer.h @@ -669,25 +669,25 @@ namespace pcpp // overridden methods /// Parses the next layer. NTP is the always last so does nothing for this layer - void parseNextLayer() + void parseNextLayer() override {} /** * @return Get the size of the layer (Including the extension and authentication fields if exists) */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } /// Does nothing for this layer - void computeCalculateFields() + void computeCalculateFields() override {} /** * @return The OSI layer level of NTP (Application Layer). */ - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -695,7 +695,7 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; }; } // namespace pcpp diff --git a/Packet++/header/NullLoopbackLayer.h b/Packet++/header/NullLoopbackLayer.h index 624696d648..726133c3f9 100644 --- a/Packet++/header/NullLoopbackLayer.h +++ b/Packet++/header/NullLoopbackLayer.h @@ -49,8 +49,7 @@ namespace pcpp /** * A destructor for this layer (does nothing) */ - ~NullLoopbackLayer() - {} + ~NullLoopbackLayer() override = default; /** * @return The protocol family in this layer @@ -72,12 +71,12 @@ namespace pcpp * IPv6Layer * - for other values the next layer in PayloadLayer (unknown protocol) */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of Null/Loopback header = 4B */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(uint32_t); } @@ -85,12 +84,12 @@ namespace pcpp /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/PPPoELayer.h b/Packet++/header/PPPoELayer.h index 242b165881..60f773df22 100644 --- a/Packet++/header/PPPoELayer.h +++ b/Packet++/header/PPPoELayer.h @@ -80,8 +80,7 @@ namespace pcpp PPPOE_CODE_PADN = 0xd4 }; - ~PPPoELayer() - {} + ~PPPoELayer() override = default; /** * Get a pointer to the PPPoE header. Notice this points directly to the data, so every change will change the @@ -90,7 +89,7 @@ namespace pcpp */ pppoe_header* getPPPoEHeader() const { - return (pppoe_header*)m_Data; + return reinterpret_cast(m_Data); } // abstract methods implementation @@ -98,9 +97,9 @@ namespace pcpp /** * Calculate @ref pppoe_header#payloadLength field */ - virtual void computeCalculateFields(); + void computeCalculateFields() override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } @@ -148,8 +147,7 @@ namespace pcpp setPPPNextProtocol(pppNextProtocol); } - virtual ~PPPoESessionLayer() - {} + ~PPPoESessionLayer() override = default; /** * @return The protocol after the PPPoE session header. The return value is one of the PPP_* macros listed @@ -177,17 +175,17 @@ namespace pcpp /** * Currently identifies the following next layers: IPv4Layer, IPv6Layer. Otherwise sets PayloadLayer */ - virtual void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of @ref pppoe_header */ - virtual size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(pppoe_header) + sizeof(uint16_t); } - virtual std::string toString() const; + std::string toString() const override; }; /** @@ -257,8 +255,7 @@ namespace pcpp /** * A d'tor for this class, currently does nothing */ - virtual ~PPPoETag() - {} + ~PPPoETag() override = default; /** * @return The tag type converted to PPPoEDiscoveryLayer#PPPoETagTypes enum @@ -275,14 +272,14 @@ namespace pcpp if (dataSize < 1) return ""; - return std::string((const char*)m_Data->recordValue, dataSize); + return std::string(reinterpret_cast(m_Data->recordValue), dataSize); } // implement abstract methods - size_t getTotalSize() const; + size_t getTotalSize() const override; - size_t getDataSize() const; + size_t getDataSize() const override; }; /** @@ -429,15 +426,15 @@ namespace pcpp /** * Does nothing for this layer (PPPoE discovery is always the last layer) */ - virtual void parseNextLayer() + void parseNextLayer() override {} /** * @return The header length which is size of strcut pppoe_header plus the total size of tags */ - virtual size_t getHeaderLen() const; + size_t getHeaderLen() const override; - virtual std::string toString() const + std::string toString() const override { return "PPP-over-Ethernet Discovery (" + codeToString((PPPoELayer::PPPoECode)getPPPoEHeader()->code) + ")"; } diff --git a/Packet++/header/PacketTrailerLayer.h b/Packet++/header/PacketTrailerLayer.h index 14ce071e81..49b24fbd50 100644 --- a/Packet++/header/PacketTrailerLayer.h +++ b/Packet++/header/PacketTrailerLayer.h @@ -41,8 +41,7 @@ namespace pcpp : Layer(data, dataLen, prevLayer, packet, PacketTrailer) {} - ~PacketTrailerLayer() - {} + ~PacketTrailerLayer() override = default; /** * Get a pointer to the trailer data @@ -72,13 +71,13 @@ namespace pcpp /** * Does nothing for this layer (PacketTrailerLayer is always last) */ - void parseNextLayer() + void parseNextLayer() override {} /** * @return trailer data length in bytes */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } @@ -86,12 +85,12 @@ namespace pcpp /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/PayloadLayer.h b/Packet++/header/PayloadLayer.h index dc07279451..dd66880e27 100644 --- a/Packet++/header/PayloadLayer.h +++ b/Packet++/header/PayloadLayer.h @@ -45,8 +45,7 @@ namespace pcpp */ explicit PayloadLayer(const std::string& payloadAsHexStream); - ~PayloadLayer() - {} + ~PayloadLayer() override = default; /** * Get a pointer to the payload data @@ -71,13 +70,13 @@ namespace pcpp /** * Does nothing for this layer (PayloadLayer is always last) */ - void parseNextLayer() + void parseNextLayer() override {} /** * @return Payload data length in bytes */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } @@ -85,7 +84,7 @@ namespace pcpp /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} /** @@ -96,9 +95,9 @@ namespace pcpp */ void setPayload(const uint8_t* newPayload, size_t newPayloadLength); - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } diff --git a/Packet++/header/RadiusLayer.h b/Packet++/header/RadiusLayer.h index 9405551c21..87cec5df2f 100644 --- a/Packet++/header/RadiusLayer.h +++ b/Packet++/header/RadiusLayer.h @@ -48,25 +48,24 @@ namespace pcpp /** * A d'tor for this class, currently does nothing */ - virtual ~RadiusAttribute() - {} + ~RadiusAttribute() override = default; // implement abstract methods - size_t getTotalSize() const + size_t getTotalSize() const override { if (m_Data == nullptr) return 0; - return (size_t)m_Data->recordLen; + return static_cast(m_Data->recordLen); } - size_t getDataSize() const + size_t getDataSize() const override { if (m_Data == nullptr) return 0; - return (size_t)m_Data->recordLen - 2 * sizeof(uint8_t); + return static_cast(m_Data->recordLen) - 2 * sizeof(uint8_t); } }; @@ -213,8 +212,7 @@ namespace pcpp /** * A d'tor for this layer, currently does nothing */ - ~RadiusLayer() - {} + ~RadiusLayer() override = default; /** * Get a pointer to the RADIUS header. Notice this points directly to the data, so every change will change the @@ -223,7 +221,7 @@ namespace pcpp */ radius_header* getRadiusHeader() const { - return (radius_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -323,22 +321,22 @@ namespace pcpp /** * @return The size written in radius_header#length */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; /** * Does nothing for this layer, RADIUS is always last */ - void parseNextLayer() + void parseNextLayer() override {} /** * Calculate and store the value of radius_header#length according to the layer size */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } diff --git a/Packet++/header/S7CommLayer.h b/Packet++/header/S7CommLayer.h index 4cc5bc9235..d9c2175fad 100644 --- a/Packet++/header/S7CommLayer.h +++ b/Packet++/header/S7CommLayer.h @@ -53,8 +53,7 @@ namespace pcpp S7CommParameter() {} - virtual ~S7CommParameter() - {} + virtual ~S7CommParameter() = default; /** * @return The data of the Parameter @@ -109,7 +108,7 @@ namespace pcpp m_Parameter = nullptr; } - virtual ~S7CommLayer() + ~S7CommLayer() override { if (m_Parameter) delete m_Parameter; @@ -216,14 +215,14 @@ namespace pcpp private: s7commhdr* getS7commHeader() const { - return (s7commhdr*)m_Data; + return reinterpret_cast(m_Data); } s7comm_ack_data_hdr* getS7commAckDataHeader() const { if (getS7commHeader()->msgType == 0x03) { - return (s7comm_ack_data_hdr*)m_Data; + return reinterpret_cast(m_Data); } return nullptr; } diff --git a/Packet++/header/SSHLayer.h b/Packet++/header/SSHLayer.h index d4e5b14562..61b18272c6 100644 --- a/Packet++/header/SSHLayer.h +++ b/Packet++/header/SSHLayer.h @@ -104,15 +104,15 @@ namespace pcpp * Several SSH records can reside in a single packets. This method examins the remaining data and creates * additional SSH records if applicable */ - void parseNextLayer(); + void parseNextLayer() override; /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -161,12 +161,12 @@ namespace pcpp /** * @return The size of the identification message */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } - std::string toString() const; + std::string toString() const override; private: // this layer supports only parsing @@ -271,9 +271,9 @@ namespace pcpp /** * @return The size of the SSH handshake message including the padding and message header */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; - std::string toString() const; + std::string toString() const override; protected: #pragma pack(push, 1) @@ -298,7 +298,7 @@ namespace pcpp ssh_message_base* getMsgBaseHeader() const { - return (ssh_message_base*)m_Data; + return reinterpret_cast(m_Data); } }; @@ -468,12 +468,12 @@ namespace pcpp /** * @return The size of the message which is equal to the size of the layer */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } - std::string toString() const; + std::string toString() const override; }; } // namespace pcpp diff --git a/Packet++/header/SSLHandshake.h b/Packet++/header/SSLHandshake.h index 5f5f97e8bc..9c41752e2b 100644 --- a/Packet++/header/SSLHandshake.h +++ b/Packet++/header/SSLHandshake.h @@ -129,8 +129,7 @@ namespace pcpp */ explicit SSLExtension(uint8_t* data); - virtual ~SSLExtension() - {} + virtual ~SSLExtension() = default; /** * @return The type of the extension as enum @@ -176,7 +175,7 @@ namespace pcpp SSLExtensionStruct* getExtensionStruct() const { - return (SSLExtensionStruct*)m_RawData; + return reinterpret_cast(m_RawData); } }; @@ -338,8 +337,7 @@ namespace pcpp class SSLHandshakeMessage { public: - virtual ~SSLHandshakeMessage() - {} + virtual ~SSLHandshakeMessage() = default; /** * A factory method for creating instances of handshake messages from raw data @@ -453,8 +451,7 @@ namespace pcpp */ SSLClientHelloMessage(uint8_t* data, size_t dataLen, SSLHandshakeLayer* container); - virtual ~SSLClientHelloMessage() - {} + ~SSLClientHelloMessage() override = default; /** * @return A struct containing common fields for client-hello and server-hello messages. Notice this points @@ -462,7 +459,7 @@ namespace pcpp */ ssl_tls_client_server_hello* getClientHelloHeader() const { - return (ssl_tls_client_server_hello*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -572,7 +569,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; private: PointerVector m_ExtensionList; @@ -632,8 +629,7 @@ namespace pcpp */ SSLServerHelloMessage(uint8_t* data, size_t dataLen, SSLHandshakeLayer* container); - virtual ~SSLServerHelloMessage() - {} + ~SSLServerHelloMessage() override = default; /** * @return A struct containing common fields for client-hello and server-hello messages. Notice this points @@ -641,7 +637,7 @@ namespace pcpp */ ssl_tls_client_server_hello* getServerHelloHeader() const { - return (ssl_tls_client_server_hello*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -747,7 +743,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; private: PointerVector m_ExtensionList; @@ -773,8 +769,7 @@ namespace pcpp */ SSLCertificateMessage(uint8_t* data, size_t dataLen, SSLHandshakeLayer* container); - virtual ~SSLCertificateMessage() - {} + ~SSLCertificateMessage() override = default; /** * @return The number of certificates encapsulated in this message (as written in the 'length' field of the @@ -795,7 +790,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; private: PointerVector m_CertificateList; @@ -820,12 +815,11 @@ namespace pcpp : SSLHandshakeMessage(data, dataLen, container) {} - virtual ~SSLHelloRequestMessage() - {} + ~SSLHelloRequestMessage() override = default; // implement abstract methods - std::string toString() const; + std::string toString() const override; }; /** @@ -848,8 +842,7 @@ namespace pcpp : SSLHandshakeMessage(data, dataLen, container) {} - ~SSLServerKeyExchangeMessage() - {} + ~SSLServerKeyExchangeMessage() override = default; /** * @return A pointer to the raw data of the server key exchange params. Currently this data can only returned as @@ -868,7 +861,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; }; /** @@ -891,8 +884,7 @@ namespace pcpp : SSLHandshakeMessage(data, dataLen, container) {} - ~SSLClientKeyExchangeMessage() - {} + ~SSLClientKeyExchangeMessage() override = default; /** * @return A pointer to the raw data of the server key exchange params. Currently this data can only be returned @@ -911,7 +903,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; }; /** @@ -931,8 +923,7 @@ namespace pcpp */ SSLCertificateRequestMessage(uint8_t* data, size_t dataLen, SSLHandshakeLayer* container); - ~SSLCertificateRequestMessage() - {} + ~SSLCertificateRequestMessage() override = default; /** * @return A reference to a vector containing all client certificate types exist in this message @@ -956,7 +947,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; private: std::vector m_ClientCertificateTypes; @@ -981,12 +972,11 @@ namespace pcpp : SSLHandshakeMessage(data, dataLen, container) {} - virtual ~SSLServerHelloDoneMessage() - {} + ~SSLServerHelloDoneMessage() override = default; // implement abstract methods - std::string toString() const; + std::string toString() const override; }; /** @@ -1009,8 +999,7 @@ namespace pcpp : SSLHandshakeMessage(data, dataLen, container) {} - virtual ~SSLCertificateVerifyMessage() - {} + ~SSLCertificateVerifyMessage() override = default; /** * @return A pointer to the signed hash data as raw data (byte array). Parsing of this data may be added @@ -1029,7 +1018,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; }; /** @@ -1052,8 +1041,7 @@ namespace pcpp : SSLHandshakeMessage(data, dataLen, container) {} - virtual ~SSLFinishedMessage() - {} + ~SSLFinishedMessage() override = default; /** * @return A pointer to the signed hash data as raw data (byte array). Parsing of this data may be added @@ -1072,7 +1060,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; }; /** @@ -1094,8 +1082,7 @@ namespace pcpp : SSLHandshakeMessage(data, dataLen, container) {} - virtual ~SSLNewSessionTicketMessage() - {} + ~SSLNewSessionTicketMessage() override = default; /** * @return A pointer to the session ticket data as raw data (byte array). Parsing of this data may be added @@ -1114,7 +1101,7 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; }; /** @@ -1137,24 +1124,23 @@ namespace pcpp : SSLHandshakeMessage(data, dataLen, container) {} - virtual ~SSLUnknownMessage() - {} + ~SSLUnknownMessage() override = default; // implement virtual and abstract methods /** * @return Always ::SSL_HANDSHAKE_UNKNOWN (overridden from SSLHandshakeMessage) */ - SSLHandshakeType getHandshakeType() const; + SSLHandshakeType getHandshakeType() const override; /** * @return The length of the data from message start until the end of the layer. Since it's an unknown type * or an encrypted message the length parsed from the message can't be guaranteed to be the correct length. * That's why the length returned is the size until the end of the layer */ - size_t getMessageLength() const; + size_t getMessageLength() const override; - std::string toString() const; + std::string toString() const override; }; template TExtension* SSLClientHelloMessage::getExtensionOfType() const @@ -1164,7 +1150,7 @@ namespace pcpp { SSLExtension* curElem = const_cast(m_ExtensionList.at(i)); if (dynamic_cast(curElem) != nullptr) - return (TExtension*)curElem; + return static_cast(curElem); } return nullptr; @@ -1177,7 +1163,7 @@ namespace pcpp { SSLExtension* curElem = const_cast(m_ExtensionList.at(i)); if (dynamic_cast(curElem) != nullptr) - return (TExtension*)curElem; + return static_cast(curElem); } return nullptr; diff --git a/Packet++/header/SSLLayer.h b/Packet++/header/SSLLayer.h index fb7565f738..adf70a17ba 100644 --- a/Packet++/header/SSLLayer.h +++ b/Packet++/header/SSLLayer.h @@ -230,7 +230,7 @@ namespace pcpp */ ssl_tls_record_layer* getRecordLayer() const { - return (ssl_tls_record_layer*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -248,15 +248,15 @@ namespace pcpp /** * @return The record size as extracted from the record data (in ssl_tls_record_layer#length) */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; /** * Several SSL/TLS records can reside in a single packets. So this method checks the remaining data and if it's * identified as SSL/TLS it creates another SSL/TLS record layer as the next layer */ - void parseNextLayer(); + void parseNextLayer() override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelPresentationLayer; } @@ -365,12 +365,12 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; /** * There are no calculated fields for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} private: @@ -396,17 +396,16 @@ namespace pcpp : SSLLayer(data, dataLen, prevLayer, packet) {} - ~SSLChangeCipherSpecLayer() - {} + ~SSLChangeCipherSpecLayer() override = default; // implement abstract methods - std::string toString() const; + std::string toString() const override; /** * There are no calculated fields for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} }; // class SSLChangeCipherSpecLayer @@ -429,8 +428,7 @@ namespace pcpp : SSLLayer(data, dataLen, prevLayer, packet) {} - ~SSLAlertLayer() - {} + ~SSLAlertLayer() override = default; /** * @return SSL/TLS alert level. Will return ::SSL_ALERT_LEVEL_ENCRYPTED if alert is encrypted @@ -444,12 +442,12 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; /** * There are no calculated fields for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} }; // class SSLAlertLayer @@ -472,8 +470,7 @@ namespace pcpp : SSLLayer(data, dataLen, prevLayer, packet) {} - ~SSLApplicationDataLayer() - {} + ~SSLApplicationDataLayer() override = default; /** * @return A pointer to the encrypted data. This data can be decrypted only if you have the symmetric key @@ -488,12 +485,12 @@ namespace pcpp // implement abstract methods - std::string toString() const; + std::string toString() const override; /** * There are no calculated fields for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} }; // class SSLApplicationDataLayer diff --git a/Packet++/header/SdpLayer.h b/Packet++/header/SdpLayer.h index 067f4d8feb..74e6e3d0fc 100644 --- a/Packet++/header/SdpLayer.h +++ b/Packet++/header/SdpLayer.h @@ -95,8 +95,7 @@ namespace pcpp SdpLayer(const std::string& username, long sessionID, long sessionVersion, IPv4Address ipAddress, const std::string& sessionName, long startTime, long stopTime); - ~SdpLayer() - {} + ~SdpLayer() override = default; /** * A copy constructor for this layer. Inherits the base copy constructor and doesn't add @@ -164,20 +163,20 @@ namespace pcpp // overridden methods - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelSesionLayer; } - std::string toString() const; + std::string toString() const override; protected: // implementation of abstract methods - char getHeaderFieldNameValueSeparator() const + char getHeaderFieldNameValueSeparator() const override { return '='; } - bool spacesAllowedBetweenHeaderFieldNameAndValue() const + bool spacesAllowedBetweenHeaderFieldNameAndValue() const override { return false; } diff --git a/Packet++/header/SipLayer.h b/Packet++/header/SipLayer.h index 2562f53ee4..f9ceae6337 100644 --- a/Packet++/header/SipLayer.h +++ b/Packet++/header/SipLayer.h @@ -100,7 +100,7 @@ namespace pcpp // Overridden methods - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelSesionLayer; } @@ -110,13 +110,13 @@ namespace pcpp * If content-length field doesn't exist or set to zero and still there is data after this layer, a PayloadLayer * will be created */ - void parseNextLayer(); + void parseNextLayer() override; /** * Set the content-length only if a content-length field already exists and if its current value is different * than the total length of the next layer(s) */ - void computeCalculateFields(); + void computeCalculateFields() override; /** * A static method that checks whether the port is considered as SIP @@ -142,11 +142,11 @@ namespace pcpp } // implementation of abstract methods - char getHeaderFieldNameValueSeparator() const + char getHeaderFieldNameValueSeparator() const override { return ':'; } - bool spacesAllowedBetweenHeaderFieldNameAndValue() const + bool spacesAllowedBetweenHeaderFieldNameAndValue() const override { return true; } @@ -222,7 +222,7 @@ namespace pcpp */ SipRequestLayer(SipMethod method, const std::string& requestUri, const std::string& version = "SIP/2.0"); - ~SipRequestLayer(); + ~SipRequestLayer() override; /** * A copy constructor for this layer. Inherits base copy constructor SipLayer and adds the functionality @@ -248,7 +248,7 @@ namespace pcpp // implement Layer's abstract methods - std::string toString() const; + std::string toString() const override; private: SipRequestFirstLine* m_FirstLine; @@ -493,7 +493,7 @@ namespace pcpp explicit SipResponseLayer(SipResponseLayer::SipResponseStatusCode statusCode, std::string statusCodeString = "", const std::string& sipVersion = "SIP/2.0"); - virtual ~SipResponseLayer(); + ~SipResponseLayer() override; /** * A copy constructor for this layer. This copy constructor inherits base copy constructor SipLayer and adds the @@ -519,7 +519,7 @@ namespace pcpp // implement Layer's abstract methods - std::string toString() const; + std::string toString() const override; private: SipResponseFirstLine* m_FirstLine; diff --git a/Packet++/header/Sll2Layer.h b/Packet++/header/Sll2Layer.h index 7b17682654..324cbb3c17 100644 --- a/Packet++/header/Sll2Layer.h +++ b/Packet++/header/Sll2Layer.h @@ -66,8 +66,7 @@ namespace pcpp */ Sll2Layer(uint32_t interfaceIndex, uint16_t ARPHRDType, uint8_t packetType); - ~Sll2Layer() - {} + ~Sll2Layer() override = default; /** * Get a pointer to the Sll header. Notice this points directly to the data, so every change will change the @@ -76,7 +75,7 @@ namespace pcpp */ sll2_header* getSll2Header() const { - return (sll2_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -175,24 +174,24 @@ namespace pcpp * Currently identifies the following next layers: IPv4Layer, IPv6Layer, ArpLayer, VlanLayer, PPPoESessionLayer, * PPPoEDiscoveryLayer, MplsLayer. Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * Calculate the next protocol type for known protocols: IPv4, IPv6, ARP, VLAN */ - void computeCalculateFields(); + void computeCalculateFields() override; /** * @return Size of sll2_header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(sll2_header); } - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/SllLayer.h b/Packet++/header/SllLayer.h index 6c6d19e888..6a02e86041 100644 --- a/Packet++/header/SllLayer.h +++ b/Packet++/header/SllLayer.h @@ -60,8 +60,7 @@ namespace pcpp */ SllLayer(uint16_t packetType, uint16_t ARPHRDType); - ~SllLayer() - {} + ~SllLayer() override = default; /** * Get a pointer to the Sll header. Notice this points directly to the data, so every change will change the @@ -70,7 +69,7 @@ namespace pcpp */ sll_header* getSllHeader() const { - return (sll_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -92,12 +91,12 @@ namespace pcpp * Currently identifies the following next layers: IPv4Layer, IPv6Layer, ArpLayer, VlanLayer, PPPoESessionLayer, * PPPoEDiscoveryLayer, MplsLayer. Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of sll_header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(sll_header); } @@ -105,11 +104,11 @@ namespace pcpp /** * Calculate the next protocol type for known protocols: IPv4, IPv6, ARP, VLAN */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/SmtpLayer.h b/Packet++/header/SmtpLayer.h index 2c251b75d1..b5ffbaf80f 100644 --- a/Packet++/header/SmtpLayer.h +++ b/Packet++/header/SmtpLayer.h @@ -38,25 +38,25 @@ namespace pcpp // overridden methods /// SMTP is the always last so does nothing for this layer - void parseNextLayer() + void parseNextLayer() override {} /** * @return Get the size of the layer */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } /// Does nothing for this layer - void computeCalculateFields() + void computeCalculateFields() override {} /** * @return The OSI layer level of SMTP (Application Layer). */ - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -195,7 +195,7 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; }; /** @@ -341,7 +341,7 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; }; } // namespace pcpp diff --git a/Packet++/header/SomeIpLayer.h b/Packet++/header/SomeIpLayer.h index 930869843c..0102e9d30d 100644 --- a/Packet++/header/SomeIpLayer.h +++ b/Packet++/header/SomeIpLayer.h @@ -116,8 +116,7 @@ namespace pcpp /** * Destroy the layer object */ - ~SomeIpLayer() - {} + ~SomeIpLayer() override = default; /** * A static method that creates a SOME/IP or SOME/IP-TP layer from packet raw data. Returns PayloadLayer if data @@ -137,7 +136,7 @@ namespace pcpp */ someiphdr* getSomeIpHeader() const { - return (someiphdr*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -329,7 +328,7 @@ namespace pcpp * Get the Length of the SOME/IP header inc payload * @return size_t */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(uint32_t) * 2 + getLengthField(); } @@ -337,23 +336,23 @@ namespace pcpp /** * Does nothing for this layer */ - virtual void computeCalculateFields() + virtual void computeCalculateFields() override {} /** * Identifies the following next layers: SomeIpLayer, SomeIpTpLayer, SomeIpSdLayer. Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return The string representation of the SOME/IP layer */ - virtual std::string toString() const; + virtual std::string toString() const override; /** * @return The OSI model layer of this layer */ - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -425,8 +424,7 @@ namespace pcpp /** * Destroy the layer object */ - ~SomeIpTpLayer() - {} + ~SomeIpTpLayer() override = default; /** * Get a pointer to the basic SOME/IP-TP header. Notice this points directly to the data, so every change will @@ -435,7 +433,7 @@ namespace pcpp */ someiptphdr* getSomeIpTpHeader() const { - return (someiptphdr*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -466,18 +464,18 @@ namespace pcpp /** * Sets the message type in this layer with enabling the TP flag */ - void computeCalculateFields(); + void computeCalculateFields() override; /** * @return The string representation of the SOME/IP-TP layer */ - std::string toString() const; + std::string toString() const override; private: static const uint32_t SOMEIP_TP_MORE_FLAG_MASK = 0x01; static const uint32_t SOMEIP_TP_OFFSET_MASK = 0xFFFFFFF0; - size_t getSomeIpHeaderLen() const + size_t getSomeIpHeaderLen() const override { return sizeof(someiptphdr); } diff --git a/Packet++/header/SomeIpSdLayer.h b/Packet++/header/SomeIpSdLayer.h index b7c1bd9024..71c8bd3bf3 100644 --- a/Packet++/header/SomeIpSdLayer.h +++ b/Packet++/header/SomeIpSdLayer.h @@ -662,8 +662,7 @@ namespace pcpp /** * Destroy the layer object */ - ~SomeIpSdLayer() - {} + ~SomeIpSdLayer() override = default; /** * Checks if given port is a SOME/IP-SD protocol port @@ -746,12 +745,12 @@ namespace pcpp /** * Does nothing for this layer */ - void computeCalculateFields() {}; + void computeCalculateFields() override {}; /** * @return The string representation of the SOME/IP-SD layer */ - std::string toString() const; + std::string toString() const override; private: /** diff --git a/Packet++/header/StpLayer.h b/Packet++/header/StpLayer.h index f59dc39910..f1b3cf75fd 100644 --- a/Packet++/header/StpLayer.h +++ b/Packet++/header/StpLayer.h @@ -153,7 +153,7 @@ namespace pcpp */ stp_header* getStpHeader() const { - return (stp_header*)(m_Data); + return reinterpret_cast(m_Data); } /** @@ -215,19 +215,19 @@ namespace pcpp /** * @return The size of STP packet */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } /// Does nothing for this layer - void computeCalculateFields() + void computeCalculateFields() override {} /** * @return The OSI layer level of STP (Data Link Layer). */ - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } @@ -294,18 +294,18 @@ namespace pcpp /** * @return The size of STP TCN message */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(stp_tcn_bpdu); } /// Parses next layer - void parseNextLayer(); + void parseNextLayer() override; /** * @return Returns the protocol info as readable string */ - std::string toString() const + std::string toString() const override { return "Spanning Tree Topology Change Notification"; } @@ -356,7 +356,7 @@ namespace pcpp */ stp_conf_bpdu* getStpConfHeader() const { - return (stp_conf_bpdu*)(m_Data); + return reinterpret_cast(m_Data); } /** @@ -556,18 +556,18 @@ namespace pcpp /** * @return The size of STP configuration BPDU message */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(stp_conf_bpdu); } /// Parses next layer - void parseNextLayer(); + void parseNextLayer() override; /** * @return Returns the protocol info as readable string */ - std::string toString() const + std::string toString() const override { return "Spanning Tree Configuration"; } @@ -618,7 +618,7 @@ namespace pcpp */ rstp_conf_bpdu* getRstpConfHeader() const { - return (rstp_conf_bpdu*)(m_Data); + return reinterpret_cast(m_Data); } /** @@ -644,18 +644,18 @@ namespace pcpp /** * @return The size of Rapid STP message */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(rstp_conf_bpdu); } /// Parses next layer - void parseNextLayer(); + void parseNextLayer() override; /** * @return Returns the protocol info as readable string */ - std::string toString() const + std::string toString() const override { return "Rapid Spanning Tree"; } @@ -703,7 +703,7 @@ namespace pcpp */ mstp_conf_bpdu* getMstpHeader() const { - return (mstp_conf_bpdu*)(m_Data); + return reinterpret_cast(m_Data); } /** @@ -877,13 +877,13 @@ namespace pcpp // overridden methods /// Parses next layer - void parseNextLayer() + void parseNextLayer() override {} /** * @return Returns the protocol info as readable string */ - std::string toString() const + std::string toString() const override { return "Multiple Spanning Tree"; } diff --git a/Packet++/header/TLVData.h b/Packet++/header/TLVData.h index 54787915b4..d265c925e0 100644 --- a/Packet++/header/TLVData.h +++ b/Packet++/header/TLVData.h @@ -58,8 +58,7 @@ namespace pcpp /** * A d'tor for this class, currently does nothing */ - virtual ~TLVRecord() - {} + virtual ~TLVRecord() = default; /** * Assign a pointer to the TLV record raw data (byte array) @@ -167,7 +166,7 @@ namespace pcpp */ uint8_t* getRecordBasePtr() const { - return (uint8_t*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -246,7 +245,7 @@ namespace pcpp */ TLVRecordReader() { - m_RecordCount = (size_t)-1; + m_RecordCount = static_cast(-1); } /** @@ -260,8 +259,7 @@ namespace pcpp /** * A d'tor for this class which currently does nothing */ - virtual ~TLVRecordReader() - {} + virtual ~TLVRecordReader() = default; /** * Overload of the assignment operator for this class @@ -372,7 +370,7 @@ namespace pcpp */ size_t getTLVRecordCount(uint8_t* tlvDataBasePtr, size_t tlvDataLen) const { - if (m_RecordCount != (size_t)-1) + if (m_RecordCount != static_cast(-1)) return m_RecordCount; m_RecordCount = 0; @@ -395,7 +393,7 @@ namespace pcpp */ void changeTLVRecordCount(int changedBy) { - if (m_RecordCount != (size_t)-1) + if (m_RecordCount != static_cast(-1)) m_RecordCount += changedBy; } }; diff --git a/Packet++/header/TcpLayer.h b/Packet++/header/TcpLayer.h index fbe762f280..fe17f8f593 100644 --- a/Packet++/header/TcpLayer.h +++ b/Packet++/header/TcpLayer.h @@ -267,7 +267,7 @@ namespace pcpp /** * A d'tor for this class, currently does nothing */ - ~TcpOption() = default; + ~TcpOption() override = default; /** * @deprecated This method is deprecated, please use getTcpOptionEnumType() @@ -311,7 +311,7 @@ namespace pcpp // implement abstract methods - size_t getTotalSize() const + size_t getTotalSize() const override { if (m_Data == nullptr) return 0; @@ -323,7 +323,7 @@ namespace pcpp return static_cast(m_Data->recordLen); } - size_t getDataSize() const + size_t getDataSize() const override { if (m_Data == nullptr) return 0; @@ -389,7 +389,7 @@ namespace pcpp */ PCPP_DEPRECATED_TCP_OPTION_TYPE TcpOptionBuilder(TcpOptionType optionType, const uint8_t* optionValue, uint8_t optionValueLen) - : TLVRecordBuilder((uint8_t)optionType, optionValue, optionValueLen) + : TLVRecordBuilder(static_cast(optionType), optionValue, optionValueLen) {} /** @@ -409,7 +409,7 @@ namespace pcpp */ PCPP_DEPRECATED_TCP_OPTION_TYPE TcpOptionBuilder(TcpOptionType optionType, uint8_t optionValue) - : TLVRecordBuilder((uint8_t)optionType, optionValue) + : TLVRecordBuilder(static_cast(optionType), optionValue) {} /** @@ -427,7 +427,7 @@ namespace pcpp */ PCPP_DEPRECATED_TCP_OPTION_TYPE TcpOptionBuilder(TcpOptionType optionType, uint16_t optionValue) - : TLVRecordBuilder((uint8_t)optionType, optionValue) + : TLVRecordBuilder(static_cast(optionType), optionValue) {} /** @@ -445,7 +445,7 @@ namespace pcpp */ PCPP_DEPRECATED_TCP_OPTION_TYPE TcpOptionBuilder(TcpOptionType optionType, uint32_t optionValue) - : TLVRecordBuilder((uint8_t)optionType, optionValue) + : TLVRecordBuilder(static_cast(optionType), optionValue) {} /** @@ -507,7 +507,7 @@ namespace pcpp */ TcpLayer(uint16_t portSrc, uint16_t portDst); - ~TcpLayer() = default; + ~TcpLayer() override = default; /** * A copy constructor that copy the entire header from the other TcpLayer (including TCP options) @@ -527,7 +527,7 @@ namespace pcpp */ tcphdr* getTcpHeader() const { - return (tcphdr*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -647,12 +647,12 @@ namespace pcpp * Currently identifies the following next layers: HttpRequestLayer, HttpResponseLayer. Otherwise sets * PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of @ref tcphdr + all TCP options */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return getTcpHeader()->dataOffset * 4; } @@ -660,11 +660,11 @@ namespace pcpp /** * Calculate @ref tcphdr#headerChecksum field */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelTransportLayer; } diff --git a/Packet++/header/TelnetLayer.h b/Packet++/header/TelnetLayer.h index d57125f8f5..0689ee6468 100644 --- a/Packet++/header/TelnetLayer.h +++ b/Packet++/header/TelnetLayer.h @@ -331,25 +331,25 @@ namespace pcpp // overridden methods /// Parses the next layer. Telnet is the always last so does nothing for this layer - void parseNextLayer() + void parseNextLayer() override {} /** * @return Get the size of the layer */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } /// Does nothing for this layer - void computeCalculateFields() + void computeCalculateFields() override {} /** * @return The OSI layer level of Telnet (Application Layer). */ - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelApplicationLayer; } @@ -357,7 +357,7 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; }; } // namespace pcpp diff --git a/Packet++/header/TextBasedProtocol.h b/Packet++/header/TextBasedProtocol.h index 054f1f3caa..0e57db5174 100644 --- a/Packet++/header/TextBasedProtocol.h +++ b/Packet++/header/TextBasedProtocol.h @@ -124,7 +124,7 @@ namespace pcpp friend class HeaderField; public: - ~TextBasedProtocolMessage(); + ~TextBasedProtocolMessage() override; /** * Get a pointer to a header field by name. The search is case insensitive, meaning if a field with name "Host" @@ -247,17 +247,17 @@ namespace pcpp /** * Currently set only PayloadLayer for the rest of the data */ - virtual void parseNextLayer(); + void parseNextLayer() override; /** * @return The message length */ - size_t getHeaderLen() const; + size_t getHeaderLen() const override; /** * Does nothing for this class */ - virtual void computeCalculateFields(); + void computeCalculateFields() override; protected: TextBasedProtocolMessage(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet, diff --git a/Packet++/header/TpktLayer.h b/Packet++/header/TpktLayer.h index 29bcba8aa2..35bdbcca03 100644 --- a/Packet++/header/TpktLayer.h +++ b/Packet++/header/TpktLayer.h @@ -53,8 +53,7 @@ namespace pcpp */ TpktLayer(uint8_t version, uint16_t length); - virtual ~TpktLayer() - {} + ~TpktLayer() override = default; /** * @return TPKT reserved @@ -140,7 +139,7 @@ namespace pcpp */ tpkthdr* getTpktHeader() const { - return (tpkthdr*)m_Data; + return reinterpret_cast(m_Data); } }; diff --git a/Packet++/header/UdpLayer.h b/Packet++/header/UdpLayer.h index 44c0f85bce..f219bb20f1 100644 --- a/Packet++/header/UdpLayer.h +++ b/Packet++/header/UdpLayer.h @@ -61,7 +61,7 @@ namespace pcpp */ udphdr* getUdpHeader() const { - return (udphdr*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -88,12 +88,12 @@ namespace pcpp * Currently identifies the following next layers: DnsLayer, DhcpLayer, VxlanLayer, SipRequestLayer, * SipResponseLayer, RadiusLayer. Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of @ref udphdr */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(udphdr); } @@ -101,11 +101,11 @@ namespace pcpp /** * Calculate @ref udphdr#headerChecksum field */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelTransportLayer; } diff --git a/Packet++/header/VlanLayer.h b/Packet++/header/VlanLayer.h index a8ff158f59..32c1bae9f9 100644 --- a/Packet++/header/VlanLayer.h +++ b/Packet++/header/VlanLayer.h @@ -61,8 +61,7 @@ namespace pcpp */ VlanLayer(const uint16_t vlanID, bool cfi, uint8_t priority, uint16_t etherType = 0); - ~VlanLayer() - {} + ~VlanLayer() override = default; /** * Get a pointer to the VLAN header. Notice this points directly to the data, so every change will change the @@ -71,7 +70,7 @@ namespace pcpp */ vlan_header* getVlanHeader() const { - return (vlan_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -122,12 +121,12 @@ namespace pcpp * Currently identifies the following next layers: IPv4Layer, IPv6Layer, ArpLayer, VlanLayer, MplsLayer. * Otherwise sets PayloadLayer */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of vlan_header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(vlan_header); } @@ -135,11 +134,11 @@ namespace pcpp /** * Calculate the EtherType for known protocols: IPv4, IPv6, ARP, VLAN */ - void computeCalculateFields(); + void computeCalculateFields() override; - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/VrrpLayer.h b/Packet++/header/VrrpLayer.h index d6361521cc..48d6cc1b15 100644 --- a/Packet++/header/VrrpLayer.h +++ b/Packet++/header/VrrpLayer.h @@ -175,8 +175,7 @@ namespace pcpp Other }; - virtual ~VrrpLayer() - {} + ~VrrpLayer() override = default; /** * @return The VRRP IP Address type @@ -375,8 +374,7 @@ namespace pcpp /** * A destructor for this layer (does nothing) */ - ~VrrpV2Layer() - {} + ~VrrpV2Layer() override = default; /** * @return The VRRP advertisement interval in this message @@ -452,8 +450,7 @@ namespace pcpp /** * A destructor for this layer (does nothing) */ - ~VrrpV3Layer() - {} + ~VrrpV3Layer() override = default; /** * @return The maximum advertisement interval in this message diff --git a/Packet++/header/VxlanLayer.h b/Packet++/header/VxlanLayer.h index 87673d18ae..e31b10bcd5 100644 --- a/Packet++/header/VxlanLayer.h +++ b/Packet++/header/VxlanLayer.h @@ -93,8 +93,7 @@ namespace pcpp explicit VxlanLayer(uint32_t vni = 0, uint16_t groupPolicyID = 0, bool setGbpFlag = false, bool setPolicyAppliedFlag = false, bool setDontLearnFlag = false); - ~VxlanLayer() - {} + ~VxlanLayer() override = default; /** * Get a pointer to the VXLAN header. Notice this points directly to the data, so every change will change the @@ -103,7 +102,7 @@ namespace pcpp */ vxlan_header* getVxlanHeader() const { - return (vxlan_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -131,12 +130,12 @@ namespace pcpp /** * Next layer for VXLAN is always Ethernet */ - void parseNextLayer(); + void parseNextLayer() override; /** * @return Size of vxlan_header */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return sizeof(vxlan_header); } @@ -144,12 +143,12 @@ namespace pcpp /** * Does nothing for this layer */ - void computeCalculateFields() + void computeCalculateFields() override {} - std::string toString() const; + std::string toString() const override; - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } diff --git a/Packet++/header/WakeOnLanLayer.h b/Packet++/header/WakeOnLanLayer.h index 358bbb5a3d..5b5a999085 100644 --- a/Packet++/header/WakeOnLanLayer.h +++ b/Packet++/header/WakeOnLanLayer.h @@ -81,7 +81,7 @@ namespace pcpp */ inline wol_header* getWakeOnLanHeader() const { - return (wol_header*)m_Data; + return reinterpret_cast(m_Data); } /** @@ -151,25 +151,25 @@ namespace pcpp // overridden methods /// Parses the next layer. Wake on LAN is the always last so does nothing for this layer - void parseNextLayer() + void parseNextLayer() override {} /** * @return Get the size of the layer */ - size_t getHeaderLen() const + size_t getHeaderLen() const override { return m_DataLen; } /// Does nothing for this layer - void computeCalculateFields() + void computeCalculateFields() override {} /** * @return The OSI layer level of Wake on LAN (Data Link Layer) */ - OsiModelLayer getOsiModelLayer() const + OsiModelLayer getOsiModelLayer() const override { return OsiModelDataLinkLayer; } @@ -177,6 +177,6 @@ namespace pcpp /** * @return Returns the protocol info as readable string */ - std::string toString() const; + std::string toString() const override; }; } // namespace pcpp diff --git a/cppcheckSuppressions.txt b/cppcheckSuppressions.txt index bab0d70856..771a24fba0 100644 --- a/cppcheckSuppressions.txt +++ b/cppcheckSuppressions.txt @@ -11,5 +11,6 @@ noExplicitConstructor:Common++/header/IpAddress.h noExplicitConstructor:Common++/header/MacAddress.h noExplicitConstructor:Pcap++/header/PcapFileDevice.h -missingOverride:* +missingOverride:Pcap++/* +missingOverride:Examples/* cstyleCast:*