原帖由 platinum 于 2005-12-16 15:05 发表
里面有太多的结构体不了解,而对应的 include 文件又不好找,且 include 文件里面有可能又存在嵌套 include
对于我这样的水平,该如何学啊 ^_^
原帖由 platinum 于 2005-12-16 15:05 发表
里面有太多的结构体不了解,而对应的 include 文件又不好找,且 include 文件里面有可能又存在嵌套 include
对于我这样的水平,该如何学啊 ^_^
原帖由 albcamus 于 2005-12-16 15:26 发表
白金兄习惯在什么系统下工作?
如果是linux,我用vim+ctags足够浏览整个kernel了。
ctags -R arch/i386 fs include/asm-i386 include/asm-generic include/asm-net ……
vim
:ts the-symbol
:tf ── ...
原帖由 独孤九贱 于 2005-12-16 15:35 发表
albcamus:你不是也在看Netfilter?能不能把你看的分享出来,继续写下去呢……?
原帖由 benjiam 于 2005-12-16 16:14 发表
你们常说得 注册函数 或者 hook 这个是什么原理实现的呢?
普通程序怎么做? 我想到的是函数指针
给个简单的例子 ok?
原帖由 albcamus 于 2005-12-16 15:26 发表
白金兄习惯在什么系统下工作?
如果是linux,我用vim+ctags足够浏览整个kernel了。
ctags -R arch/i386 fs include/asm-i386 include/asm-generic include/asm-net ……
vim
:ts the-symbol
:tf ── ...
原帖由 独孤九贱 于 2005-12-16 15:22 发表
我是先找结构中重要的成员拿下来(网上找资料,源码中本来的注释),剩下的就在读代码的时候,再明白一些,最后个别的,到现在也没有明白。
至于不好找的问题,应该不会吧,SourceInsight很好跟的。
原帖由 platinum 于 2005-12-16 16:37 发表
albcamus 兄,看来我和你们差的不是一清半点啊,我一定要赶上
如果问了一些白痴问题的话,千万不要怪罪![]()
原帖由 benjiam 于 2005-12-16 16:51 发表
先将钩子函数置于一个全局变量中,它是一个二维数组,当程序运行至某个节点,调用NF_HOOK,判断是否有注册的函数,有则转向执行注册的函数,再回来继续执行,否则,直接就继续运行了;
当然,这种要框架支持, ...
原帖由 caibird3rd 于 2005-12-17 00:50 发表
大家可以根据自己的体会随便谈谈
netfilter这个东西,有什么不足之处?
批判的学习才有更大的收获呀!
原帖由 思一克 于 2005-12-20 15:19 发表
To JIU JIAN
你看的有问题吧。我看的是match的匹配过程根本没有遍历双向链表呀。否则IPTABLE的效率就太低了。也许我错了。
你还是慢点写。IPT_MATCH_ITERATE 不遍历双向链表而是查数组。那个ipt_match结构 ...
原帖由 platinum 于 2005-12-20 21:54 发表
我在看 ipt_mark.c 时,有一个 IPT_ALIGN,于是用 ctags 去跟,发现 ip_tables.h 里有如下定义
[code]
#define IPT_ALIGN(s) (((s) + (__alignof__(struct ipt_entry)-1)) & ~(__alignof__(struct ipt_entr ...
原帖由 platinum 于 2005-12-21 09:49 发表
谢谢一克和九贱,再菜菜地问一下,为什么一定要对齐啊,什么情况下一定非要对齐不可 ^_^
还有,这些知识哪里有讲,如果我想学,应该看什么书?LDD 吗?还是 GNU/LINUX 编程指南,还是别的?
相对于答案,我更 ...
原帖由 platinum 于 2005-12-23 12:13 发表
排练节目,哇咔咔![]()
原帖由 platinum 于 2005-12-23 16:01 发表
千万不能修改代码去掉 ip_conntrack 功能
我虽然看不懂,但是我知道那个功能是必不可少的,因为 netfilter 是基于状态检测的,如果那个功能去掉了基本就没什么可用的了
新的内核如果打了 patch 之后会,载入 ip ...
原帖由 guotie 于 2006-1-8 18:39 发表
我认为,一个数据报在netfilter处理的过程中,一直是在softirq中进行的,因此,不可能被其他softirq打断,
如果在一个netfilter的动作,也即target中,直接调用dev_queue_xmit()来发送自己构造的数据报,会出现 ...
原帖由 wwwspirit 于 2006-2-22 10:13 发表
我有一处不明白。还望各位多指点:
规则的组织方式是struct ipt_ip + struct ipt_entry_match + struct ipt_entry_match + ... + struct ipt_entry_target;
而规则在初始化的时候(建立的时候),需要分 ...
原帖由 wwwspirit 于 2006-2-22 13:00 发表
那我修改要修改ipt_entry,或者修改ipt_entry_match怎么办呢?
如果我只需要添加一条match,那是不是就必须添加一条规则,而无法在已有的规则中添加match?
原帖由 wwwspirit 于 2006-2-22 13:11 发表
如果我需要增加一条match呢?
是不是就要增加一条新的规则??
原帖由 wwwspirit 于 2006-2-22 13:24 发表
谢谢独孤大侠指点。
我最近比较忙,过几天再认真拜读一下netfilter代码。到时候如有问题再请教![]()
原帖由 wwwspirit 于 2006-2-23 09:01 发表
在问一个问题:
用户用iptables添加规则,用户命令的解析由iptables完成,iptables是把用户的命令组织为规则,然后通过socket传递给netfilter的吗?如果是这样的话,那iptables是不是也必须知道每一条match如何构 ...
原帖由 wwwspirit 于 2006-2-23 09:51 发表
如果要在用户态就把规则/match封装好,必然要在内核和用户两个模块维护两份关键数据结构,这样影响模块化,且也不易于日后扩展和维护。
原帖由 tomorrow0530 于 2006-3-28 21:44 发表
我看了你的iptables的分析
然后接着看netfilter的分析
写得好详细,这是强啊~~~~
限于水平,这个地方不懂
unsigned int hook_entry[NF_IP_NUMHOOKS]={ [NF_IP_LOCAL_IN] 0,
[NF_IP_FORWARD] sizeof( ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |