feat(packet-sniffer): add CLI options for IP filtering and masking
This commit is contained in:
@@ -0,0 +1,30 @@
|
|||||||
|
#include "packet_sniffer_cli.hpp"
|
||||||
|
#include <boost/program_options/value_semantic.hpp>
|
||||||
|
|
||||||
|
PacketSnifferCli::PacketSnifferCli()
|
||||||
|
: CliBase("Packet Sniffer Options")
|
||||||
|
, ip_("")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void PacketSnifferCli::setupOptions()
|
||||||
|
{
|
||||||
|
// clang-format off
|
||||||
|
desc_.add_options()
|
||||||
|
("help,h", "Show help")
|
||||||
|
("ip,H", withDefault(ip_, "<IP>"), "Local IPv4 to sniff (e.g. 192.168.1.42)")
|
||||||
|
("mask,m", boost::program_options::value<bool>()->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<std::string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PacketSnifferCli::isMaskEnabled() const
|
||||||
|
{
|
||||||
|
const auto it = vm_.find("mask");
|
||||||
|
return (it != vm_.end()) ? it->second.as<bool>() : false;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "cli_base.hpp"
|
||||||
|
#include "option_utils.hpp"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class PacketSnifferCli : public CliBase, protected OptionUtils
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PacketSnifferCli();
|
||||||
|
|
||||||
|
std::string getIp() const;
|
||||||
|
bool isMaskEnabled() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void setupOptions() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string ip_;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user