我想在C程序中向IPFW中的表添加IP。我不想调用system(),因为这段代码必须尽可能高效。所以基本上我的问题是,有人可以解释这是如何工作的?由于没有可以使用的API,我正在审查源代码(看看如何完成添加),但这比预期花费的时间更长,如果可能的话,如果有人解释这一点会很好。
所以我要做的是当我从客户端收到连接时,我想将该客户端的IP地址放在某个表中。
提前致谢!
答案 0 :(得分:1)
这不是一个真正的答案,只是一个明显的建议。使用cvsup查看系统的源代码。然后查找ipfw.c,在那里您将看到它用于修改规则的系统调用。 ipfw程序是一个命令行工具,因此它必须位于用户区。这意味着你必须能够做它做的事情。 (虽然您必须拥有超级用户权限。)
答案 1 :(得分:0)
行。所以我找到了解决方案。
ip_fw.h中有一个结构 - ipfw_table_entry
代码看起来像这样:
...
ipfw_table_entry entry;
bzero(&entry, sizeof entry);
entry.addr = inet_addr("192.168.1.0");
entry.tbl = 100;
entry.masklen = 32;
setsockopt(ipfw_socket, IPPROTO_IP, IP_FW_TABLE_ADD, &entry, sizeof entry);