static void
save(const struct ipt_ip *ip, const struct ipt_entry_target*target)
{
const struct ipt_id_target_info *idinfo =
(const struct ipt_id_target_info *)target->data;
printf("--set-id 0x%x ", ntohs(idinfo->id));
}
static
struct iptables_target id
= { NULL,
"ID",
IPTABLES_VERSION,
IPT_ALIGN(sizeof(structipt_id_target_info)),
IPT_ALIGN(sizeof(structipt_id_target_info)),
&help,
&init,
&parse,
&final_check,
&print,
&save,
opts
};
void _init(void)
{
register_target(&id);
}
4. 结论
netfilter/iptables可以很方便地扩展新的目标模块,只需要按指定的方式编写代码就可以,让开发者将注意力集中在功能的具体实现上,而不用再考虑其他因素,在具体实现时可以以现成的目标模块为基础进行修改即可,甚至不需要更仔细了解内部结构的定义就可以完成编码,是一个程序模块化的很优秀的实现例子。在netfilter官方网站( )上提供patch-o-matic程序包,其中包含了许多爱好者编写的未并入Linux官方内核中的匹配和目标模块。netfilter
发表于 @ 2009年09月13日00:30:00||
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-34719-8.html
给我一次机会我想刷回9
这需要胆量和魄力