用户态封装的IP报文 使用内核钩子函数进行路由转发 如何实现呢?
时间:2010-10-25
来源:互联网
用户态封装的IP报文: BYTE * p_BufferPacket
point_IP = (IP_HEADER*)p_BufferPacket
数据报文长度(不包括IP头):arg_lengh;
unsigned int hook_PocketEncap(unsigned int hooknum,
struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
struct sk_buff *skb = NULL;
skb =*pskb;
/* IP头部填充*/
memcpy(skb-> network_header, dwSize_IP, point_IP);
/* Data数据填充*/
memcpy(skb-> tail, dwSize, ++point_IP);
return NF_ACCEPT;
}
int init_module()
{
struct nf_hook_ops nfho;
/*填充钩子结构体*/
nfho.hook = hook_func; /*函数接口*/
nfho.hooknum = NF_INET_PPOST_ROUTING; /*发送*/
nfho.pf = PF_INET;
nfho.priority = NF_IP_PRI_FIRST; /*优先级*/
/*注册钩子结构体*/
nf_register_hook(&nfho);
return 0;
}
我这样写代码可以吗? 过程是这样的:
需求:从套接字接受一个报文,修目的IP后,想利用LINUX内核 进行IP层转发
用户态修改过的IP报文 如何才能让内核认识呢? 我这样直接拷贝不行吧? 如何和套接字缓存区 联系上呢?
哪位大侠帮忙指点一下吧 如果借助内核转发3层IP报文的话 也就是路由转发 转发到某一个路由器上, 有哪些实现方法? 代码应该怎么写呢。
万分感谢!!!
point_IP = (IP_HEADER*)p_BufferPacket
数据报文长度(不包括IP头):arg_lengh;
unsigned int hook_PocketEncap(unsigned int hooknum,
struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
struct sk_buff *skb = NULL;
skb =*pskb;
/* IP头部填充*/
memcpy(skb-> network_header, dwSize_IP, point_IP);
/* Data数据填充*/
memcpy(skb-> tail, dwSize, ++point_IP);
return NF_ACCEPT;
}
int init_module()
{
struct nf_hook_ops nfho;
/*填充钩子结构体*/
nfho.hook = hook_func; /*函数接口*/
nfho.hooknum = NF_INET_PPOST_ROUTING; /*发送*/
nfho.pf = PF_INET;
nfho.priority = NF_IP_PRI_FIRST; /*优先级*/
/*注册钩子结构体*/
nf_register_hook(&nfho);
return 0;
}
我这样写代码可以吗? 过程是这样的:
需求:从套接字接受一个报文,修目的IP后,想利用LINUX内核 进行IP层转发
用户态修改过的IP报文 如何才能让内核认识呢? 我这样直接拷贝不行吧? 如何和套接字缓存区 联系上呢?
哪位大侠帮忙指点一下吧 如果借助内核转发3层IP报文的话 也就是路由转发 转发到某一个路由器上, 有哪些实现方法? 代码应该怎么写呢。
万分感谢!!!
作者: xufeng917 发布时间: 2010-10-25
修改报文要考虑的环节比较多。
想利用 Netfilter 的hook 函数,那么就要对 NF 有一定程度的了解。
如果你是要出来进入系统的包,那么数据包是先经过 IP 层,如果是需要转发的包,数据包就不会往上层传输了。 感觉LZ 的一些概念没有搞清楚。
想利用 Netfilter 的hook 函数,那么就要对 NF 有一定程度的了解。
如果你是要出来进入系统的包,那么数据包是先经过 IP 层,如果是需要转发的包,数据包就不会往上层传输了。 感觉LZ 的一些概念没有搞清楚。
作者: Godbach 发布时间: 2010-10-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28