nicklezhang
驱动牛犊
驱动牛犊
  • 注册日期2004-03-29
  • 最后登录2017-06-19
  • 粉丝0
  • 关注0
  • 积分24分
  • 威望145点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2229回复:11

请教:linux下的passthru(80分已放)

楼主#
更多 发布于:2004-05-21 17:25
    我需要在linux下实现一个类似passthru功能的东东,但是我没有接触过linux,不过我看过Rtl8139 linux下的网卡驱动源代码。开发linux下passthru这样的东东应该从什么地方入口呢?怎么实现?  
    欢迎各位多提意见,5.27号放分。谢谢

[编辑 -  5/31/04 by  nicklezhang]
cmymfc
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2012-06-20
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望8点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-23 09:48
linux下也有ndis啊, 看来没有白学
nicklezhang
驱动牛犊
驱动牛犊
  • 注册日期2004-03-29
  • 最后登录2017-06-19
  • 粉丝0
  • 关注0
  • 积分24分
  • 威望145点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-05-25 16:37
我顶,谁能给点建议呢,我让我少走点弯路。过几天我就要朝这方面努力了
yangguoo
驱动小牛
驱动小牛
  • 注册日期2003-07-09
  • 最后登录2008-07-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-26 10:47
在Linux 内核中有五条内置的规则链(input chain, forward chain, output chain。。。。还有。。。),分别对应接收检测,转发检测和发送检测(内置链不可删除),每一条chain 包含一系列过滤规则及链的缺省策略.利用各规则链可以对输入、转发、和输出的数据包进行过滤。这些叫钩子(hook)函数,此hook非彼hook比windows下的强大多了,直接在网路层,你可以利用钩子函数编写自己的程序,编译成内核模块,insmod加载。
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img][size=3]跟我比灌水,年[/size]
nicklezhang
驱动牛犊
驱动牛犊
  • 注册日期2004-03-29
  • 最后登录2017-06-19
  • 粉丝0
  • 关注0
  • 积分24分
  • 威望145点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-05-27 10:28
你说的是不是那五个Filter hook:NF_IP_PRE_ROUTING, NF_IP_LOCAL_IN, NF_IP_FORWARD, NF_IP_LOCAL_OUT, NF_IP_POST_ROUTING,在这些里面只能判断数据包的去留或转发等等吧,我需要修改数据包,好像在这里不能实现。此hook比windows2000下的ip packet filter有什么强大之处我也没来得及关心过。
迟一点放分,问题解决方法征集中...
ljjlovernet
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2004-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-29 16:32
在内核/net/中

你可以在ip_forwar.c中的forward函数来处理路由转发来的包,最好做成模块,随时安装到系统中。
在ipv4.c中有ip_rcv函数处理收到的包,有个*send*函数处理发出的包。


要注意这些操作是针对哪一块网卡的
我是来学习的。不打扫卫生
nicklezhang
驱动牛犊
驱动牛犊
  • 注册日期2004-03-29
  • 最后登录2017-06-19
  • 粉丝0
  • 关注0
  • 积分24分
  • 威望145点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-05-31 16:09
ljjlovernet能否说详细点,我任务催的很急,所以我没时间自己查阅资料了,如果你能说明白点那就太好了:
1.ip_forward.c是不是已经被编译进内核,如果我修改该文件,然后再重新编译,那我的网络模块岂不是和别的linux的网络模块不一样了?linux的内核是可以自立任意修改再重新编译的么?
2.做成模块是不是就不需要每次调试时重新编译内核?
3.怎样做成模块?
等待你的回答,提前放分。
zhuxianggl
驱动牛犊
驱动牛犊
  • 注册日期2003-12-23
  • 最后登录2010-04-01
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-31 16:58
你可以在内核里注册函数接口,如果函数接口为NULL时就不做IPSEC处理,就不会和别人的不一样了。模块里要把ipsec处理的函数注册在接口上。

做成模块每次编译模块就可以了,内核只做一次修改就行了。以后只需要加载和卸载模块。

做模块就不好说了,需要找本内核编程的书看一下先。
zhuxianggl
驱动牛犊
驱动牛犊
  • 注册日期2003-12-23
  • 最后登录2010-04-01
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-31 17:00
我就是ljjlovernet,不好意思,别人的ID.
yangguoo
驱动小牛
驱动小牛
  • 注册日期2003-07-09
  • 最后登录2008-07-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-01 15:13
直接编译系统内核比较麻烦你可以以可加载内核模块的形式编译,编译命令为:
gcc -O -c -Wall
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img][size=3]跟我比灌水,年[/size]
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-04 13:44
linux下面修改数据还要自己分配一个skb_buf么?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
ljjlovernet
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2004-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-05 10:25
不用吧,
我是来学习的。不打扫卫生
游客

返回顶部