#include #include #include #include class Packet { public: std::string sourceIP; std::string destinationIP; int port; Packet(std::string src, std::string dest, int p) : sourceIP(src), destinationIP(dest), port(p) {} }; class PacketFilter { private: std::vector blockedIPs; public: void addBlockedIP(const std::string& ip) { blockedIPs.push_back(ip); } bool isBlocked(const Packet& packet) { return std::find(blockedIPs.begin(), blockedIPs.end(), packet.sourceIP) != blockedIPs.end(); } void processPacket(const Packet& packet) { if (isBlocked(packet)) { std::cout << "Blocked packet from: " << packet.sourceIP << std::endl; } else { std::cout << "Allowed packet from: " << packet.sourceIP << std::endl; } } }; int main() { PacketFilter filter; filter.addBlockedIP("192.168.1.10"); filter.addBlockedIP("10.0.0.5"); std::vector packets = { Packet("192.168.1.10", "192.168.1.1", 80), Packet("10.0.0.5", "192.168.1.2", 443), Packet("192.168.1.20", "192.168.1.3", 22), Packet("172.16.0.1", "192.168.1.4", 8080) }; for (const auto& packet : packets) { filter.processPacket(packet); } return 0; }