/* * Copyright (c) 2017-2024 OARC, Inc. * Copyright (c) 2011-2017, IIS - The Internet Foundation in Sweden * All rights reserved. * * This file is part of PacketQ. * * PacketQ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PacketQ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PacketQ. If not, see . */ #ifndef __packetq_icmp_h #define __packetq_icmp_h #include #include #include #include #include #include "output.h" #include "packet_handler.h" #include "sql.h" #include "tcp.h" namespace packetq { class Parse_icmp : public Packet_handler { public: enum { COLUMN_TYPE = IP_header_to_table::COLUMN_FRAGMENTS + 1, COLUMN_CODE, COLUMN_ECHO_IDENTIFIER, COLUMN_ECHO_SEQUENCE, COLUMN_DU_PROTOCOL, COLUMN_DU_SRC_ADDR, COLUMN_DU_DST_ADDR, COLUMN_DESC }; Parse_icmp(); virtual void on_table_created(Table* table, const std::vector& columns); virtual Packet::ParseResult parse(Packet& packet, const std::vector& columns, Row& destination_row, bool sample); void add_packet_columns(); void add_lookup_tables(); private: Str_conv converter; IP_header_to_table m_ip_helper; Int_accessor acc_type; Int_accessor acc_code; Int_accessor acc_echo_identifier; Int_accessor acc_echo_sequence; Int_accessor acc_du_protocol; Text_accessor acc_du_src_addr; Text_accessor acc_du_dst_addr; Text_accessor acc_desc; }; } // namespace packetq #endif // __packetq_icmp_h