1 / 10
文档名称:

link使用方法.doc

格式:doc   大小:123KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

link使用方法.doc

上传人:170486494 2018/9/30 文件大小:123 KB

下载得到文件列表

link使用方法.doc

相关文档

文档介绍

文档介绍:
2010-02-04 14:56 5119人阅读 评论(1) 收藏 举报
structsocket数据结构null网络协议header
 

测试环境:
,具体请参考(注意其中的版本号不一定确切):
http://blog./sealyao/archive/2009/10/02/
 
0. 综述
以下程序基本流程如下:
link内核模块;
运行用户态程序,向内核发送连接消息,通知内核自身进程id;
内核接收用户消息,记录其进程id;
link消息;
link消息。
 
1. 内核部分
相关的数据结构变量:
[cpp] view plaincopy
44 // --------- These are link --------- //  
45 #     26  
46 struct sock *g_nl_sk = NULL;  
48 struct sockaddr_nl src_addr, dest_addr;  
50 struct iovec iov;  
52 int pid;  
53 struct msghdr msg;  
55 // ----------------------------------------- //  
 
 
[cpp] view plaincopy
45 #     26  
 
定义协议族。link_kernel_create函数中使用。
,每个协议使用唯一整数标识。用户程序可以定义任意20个协议以外的协议,用唯一整数标识。
[cpp] view plaincopy
46 struct sock *g_nl_sk = NULL;  
sock数据结构,link使用的sock,与普通socket编程中sock类似。
[cpp] view plaincopy
48 struct sockaddr_nl src_addr, dest_addr;  
link sock的源地址和目的地址。
[cpp] view plaincopy
50 struct iovec iov;  
link数据使用的数据结构。
[cpp] view plaincopy
53 struct msghdr msg;  
netlink消息头。
 
调用过程
link socket
[cpp] view plaincopy
g_nl_sk = netlink_kernel_create(&, , 0, nl_data_r    eady, NULL, THIS_MODULE);  
实现回调函数nl_data_ready
协议的数据包时由系统调用。link消息,如果第一个字符为H,则保存该消息发出者的进程号,用以向该进程发送数据包;相同,如果为E,则清除与该进程的联系。
[cpp] view plaincopy
185 void nl_data_ready(struct sk_buff *__skb)  
186 {