diff --git a/src/cli/packet_sniffer_cli.cpp b/src/cli/packet_sniffer_cli.cpp new file mode 100644 index 0000000..5604753 --- /dev/null +++ b/src/cli/packet_sniffer_cli.cpp @@ -0,0 +1,30 @@ +#include "packet_sniffer_cli.hpp" +#include + +PacketSnifferCli::PacketSnifferCli() + : CliBase("Packet Sniffer Options") + , ip_("") +{ +} + +void PacketSnifferCli::setupOptions() +{ + // clang-format off + desc_.add_options() + ("help,h", "Show help") + ("ip,H", withDefault(ip_, ""), "Local IPv4 to sniff (e.g. 192.168.1.42)") + ("mask,m", boost::program_options::value()->default_value(false)->implicit_value(true), + "Mask IP addresses in output (demo)"); + // clang-format on +} + +std::string PacketSnifferCli::getIp() const +{ + return vm_.at("ip").as(); +} + +bool PacketSnifferCli::isMaskEnabled() const +{ + const auto it = vm_.find("mask"); + return (it != vm_.end()) ? it->second.as() : false; +} diff --git a/src/cli/packet_sniffer_cli.hpp b/src/cli/packet_sniffer_cli.hpp new file mode 100644 index 0000000..4fa36d9 --- /dev/null +++ b/src/cli/packet_sniffer_cli.hpp @@ -0,0 +1,19 @@ +#pragma once +#include "cli_base.hpp" +#include "option_utils.hpp" +#include + +class PacketSnifferCli : public CliBase, protected OptionUtils +{ + public: + PacketSnifferCli(); + + std::string getIp() const; + bool isMaskEnabled() const; + + protected: + void setupOptions() override; + + private: + std::string ip_; +};