netfilter内核态与用户态通信之sockopt
用户态与内核态交互通信的方法不止一种,sockopt是比较方便的一个,写法也简单.
缺点就是使用 copy_from_user()/copy_to_user()完成内核和用户的通信, 效率其实不高, 多用在传递控制 选项 信息,不适合做大量的数据传输。
用户态函数:
- 发送:int setsockopt ( int sockfd, int proto, int cmd, void *data, int datelen);
- 接收:int getsockopt(int sockfd, int proto, int cmd, void *data, int datalen)
- 第一个参数是socket描述符;
- 第二个参数proto是sock协议,IP RAW的就用SOL_SOCKET/SOL_IP等,TCP/UDP socket的可用SOL_SOCKET/SOL_IP/SOL_TCP/SOL_UDP等,即高层的socket是都可以使用低层socket的命令字 的,IPPROTO_IP;
- 第三个参数cmd是操作命令字,由自己定义;
- 第四个参数是数据缓冲区起始位置指针,set操作时是将缓冲区数据写入内核,get的时候是将内核中的数 据读入该缓冲区;
- 第五个参数数据长度



