首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>网络管理>网络管理>正文

Linux下的网络HOOK实现以及使用方法

http://www.oklinux.cn  2007-03-19  来源: 赛迪网技术社区   会员收藏  游客收藏  【 】 

最近疯狂的研究Linux的种种功能,也颇有心得,这里讲述一下Linux下的Net的Hook,使用net的Hook可以实现很多很多非常底层的功能,比如过滤报文,做防火墙,做代理等等。

Now,Let's Go!

使用的是Linux 2.6.19.1的内核代码。

首先是 在./Source/net/netfilter/core.c文件中的函数 nf_register_hook:

static DEFINE_SPINLOCK(nf_hook_lock);

int nf_register_hook(struct nf_hook_ops *reg)

{

struct list_head *i;

spin_lock_bh(&nf_hook_lock);

list_for_each(i, &nf_hooks[reg->pf][reg->hooknum]) {

if (reg->priority < ((struct nf_hook_ops *)i)->priority)

break;

}

list_add_rcu(®->list, i->prev);

spin_unlock_bh(&nf_hook_lock);

synchronize_net();

return 0;

}

EXPORT_SYMBOL(nf_register_hook);

void nf_unregister_hook(struct nf_hook_ops *reg)

{

spin_lock_bh(&nf_hook_lock);

list_del_rcu(®->list);

spin_unlock_bh(&nf_hook_lock);

synchronize_net();

}

EXPORT_SYMBOL(nf_unregister_hook);

int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n)

{

unsigned int i;

int err = 0;

for (i = 0; i < n; i++) {

err = nf_register_hook(®[i]);

if (err)

goto err;

}

return err;

err:

if (i > 0)

nf_unregister_hooks(reg, i);

return err;

}

EXPORT_SYMBOL(nf_register_hooks);

void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n)

{

unsigned int i;

for (i = 0; i < n; i++)

nf_unregister_hook(®[i]);

}

EXPORT_SYMBOL(nf_unregister_hooks);

 

[1] [2] 下一页  

共6页: 上一页 1 [2] [3] [4] [5] [6] 下一页

上一篇:使用Linux脚本对无线网络进行管理   下一篇:Linux系统如何让双网卡合“一”而用


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux系统如何让双网卡合“一”而用
·使用Linux脚本对无线网络进行管理
·实现Windows与Unix、Linux间数据交换
·嵌入式Linux在工业控制领域中的应用
·RedHat9.0下的DNS和虚拟主机的配置
·用 DCOP 连接 KDE 应用程序
·走进Linux世界,纯正的网络操作系统
·Linux串口上网的简单实现
·Linux操作系统下的离线浏览器介绍
·运行在网络处理器上的嵌入式Linux系统
·嵌入式Linux平台的多协议路由器的设计
·如何用cdma 1x手机连接Linux电脑上网
·网络管理-安装CVS Server和Web CVS
·为两个网段安装DHCP服务器
·Zebra使用手册
·网络OS 认识Linux远程桌面控制
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·RedHat Enterprise Linux基本网络配置
·在Linux系统下一个网卡设置多个IP的方
·Linux操作系统下安装配置jython编程环
·Linux下更改网卡的物理地址Mac Address
·详细讲解Linux系统下有关网络设置的问
·Linux操作系统下DHCP简单设置
·Linux操作系统下安装ProFTPD
·建立Linux操作系统两用户之间的信任关
·Linux系统下实现网卡冗余
·Windows系统下用Xmanager远程登陆Linux
·Linux系统下基本网络参数DNS的设置
·Linux系统下DHCP的安装方法详细介绍
  阅读排行
·Linux串口上网的简单实现
·用 DCOP 连接 KDE 应用程序
·使用Linux脚本对无线网络进行管理
·RedHat9.0下的DNS和虚拟主机的配置
·实现Windows与Unix、Linux间数据交换
·Linux系统如何让双网卡合“一”而用
·网络OS 认识Linux远程桌面控制
·嵌入式Linux在工业控制领域中的应用
·运行在网络处理器上的嵌入式Linux系统
·手把手教你建WAMP动态wiki网站(图)
·Linux安全攻略 全面了解系统备份
·Linux下超级终端Minicom的使用方法
·Linux 网络栈剖析
·探查Linux系统DNS服务器运行状况的方法
·介绍一些关于RAID与SCSI的基本概念
网摘收藏: