netfilter_netfilter安装_linux netfilter(8)

电脑杂谈  发布时间:2017-03-09 11:06:42  来源:网络整理

I think load() method is better as far as usage is concerned because you can easily place your DLL in any directory.

——————————————————————————————————————————

解决用户态与内核态交涉问题 ,以后再整理一篇博客出来

基本原理:

iptable好像走的是

sockfd=socket(AF_INET, SOCK_RAW, IPPROTO_RAW)

setsockopt(sockfd, IPPROTO_IP, ......)

ip_setsockopt 如果发现不在范围的选项,可能会调用nf_setsockopt

而后者就会检查nf_register_sockopt注册的了

如果level 不是 SOL_SOCKET这个的话,应该就调用sock->ops->setsockopt()吧,这个地方没找到在初始化。

按照版主的说法,应该在这个里面实现选项的查找,然后没有查找到的话,调用nf_setsockopt

设计基本定下用netlink实现用户态到内核态的即时通讯了.

今天在公司基本看了一天的netlink,因为没环境,所以得晚上回来弄,后来发现2.6.24内核版本后做了改动,主要还是再create上面,把以前用while控制的读取消息队列,该成了自动绑定```

刚弄完内核模块的任务,明天看看用户态的实现,今天也是晚上睡了会,所以很晚才弄,接触过这么久的linux,这次才真正感觉弄了点实质的东西,呵呵```` 毕业设计估计老师望着我急,我也只能望着他干瞪眼了``

我的小乖乖开始通讯了:ICMP网络层抓截取数据包实现如下

关于自旋锁:

自旋锁最多只能被一个可执行线程持有。自旋锁不会引起调用者睡眠,如果一个执行线程试图获得一个已经被持有的自旋锁,那么线程就会一直进行忙循环,一直等待下去,在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。

由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。

信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进 程上下文使用(_trylock的变种能够在中断上下文使用);而自旋锁适合于保持时间非常短的情况,因为一个被争用的自旋锁使得请求它的线程在等待重新 可用时自旋,特别浪费处理时间,这是自旋锁的要害之处,所以自旋锁不应该被长时间持有。

**

**

关于与内核通讯小结:

方式:bootloader,sysfs,sysctl,系统调用,netlink,procfs,seq_file,debugfs,relayfs

**

bootloader

内核启动参数方式是单向的,即只能向内核传递,而不能从内核获取,并且它是启动时候为内核传递参数,正因为这个存在,用户态才可以在系统启动时候为操作系统设置环境了.

这种方式可以加载到新内核中了.

#include <linux/kernel.h>

#include <linux/init.h>

#include <linux/string.h>

#define MAX_SIZE 5

static int setup_example_int;

static int setup_example_int_array[MAX_SIZE];

static char setup_example_string[16];


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36628-8.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...