linux内核netfilter的实现以及ipset
netfilter的实现机制基于四个层次的匹配,数据包在每个层次都要经过一个过滤链表,第一个层次就是hook,众所周知linux内核中一共拥有5个hooks,当然你也可以自己修改内核在任何地方添加hook;第二个层次就是每个hook下面的tables,每一个hook都过挂载零个或者若干个tables,数据包要一个一个经过这些tables;第三个层次就是rule,每个table下面拥有零个或者若干个rule,数据包要依次经过这些rules,只要有一个rule对数据包进行了裁决,那么将不再经过该hook的该table的对应rule的后面rules;第四个层次是matchs,和rules的遍历正好相反,数据包只有在对应rule下面的所有的matchs都匹配后才算匹配。
在内核中,netfilter是由下面4个核心结构体支撑起来的:
struct xt_table_info
{
unsigned int size;
unsigned int number;
unsigned int initial_entries;
unsigned int hook_entry[NF_IP_NUMHOOKS];
unsigned int underflow[NF_IP_NUMHOOKS];
char *entries[NR_CPUS];
};
entries[cpu]指向了一个ipt_entry数组,该数组的内存组织形式是平坦的,通过ipt_entry的next_offset字段进行遍历:
struct ipt_entry
{
struct ipt_ip ip;
unsigned int nfcache;
u_int16_t target_offset;
u_int16_t next_offset;
unsigned int comefrom;
struct xt_counters counters;
unsigned char elems[0];
};
elems指向了一块平坦内存模式的,包含了若干个matchs和一个target,target通过target_offset来定位,各个matchs正如上面所说,通过next_offset来进行遍历的:
struct xt_entry_match
{
union {
struct {
u_int16_t match_size;
char name[XT_FUNCTION_MAXNAMELEN-1];
u_int8_t revision;
} user;
struct {
&nbs
相关文档:
惠普服务器网卡问题,据说是缓冲池已满,可以用两张光盘修复,参考下边的资料
1. Firmware Maintenance CD 8.70(下载后刻录压缩包内的ISO为引导盘引导重启服务器)
http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&cc=us&prodTyp ......
最近需要在Linux系统下编译多个Fortran程序,在网上搜索了一下,但是资料不多,也许因为这个问题比较简单,不值一提,但还是把我知道的
写出来,供大家参考:
方法一:
假如现在有两个Fortran程序fun.f90和main.f90,其中
main.f90是主程序,fun.f90是在主程序中调用的子程序,将这两个文件放到一个目录下,使 ......
ZZ 自http://dev.firnow.com/course/6_system/linux/Linuxjs/200896/139627.html
.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
......
(1)帧缓冲设备跟TTY的关系。需要关注tty跟帧缓冲设备的关系,一般情况下帧缓冲设备是可以独立操作的,但是如果为了保证单独占用不被抢占,似乎还要关联一个tty终端。这里用的是虚终端VT。
虚终端,也叫虚屏,它的英文名字为virtual terminal,缩写为VT或vt。在Unix系统用户中,虚终端有着 ......
1 红帽
rpm -ivh 安装
-e 删除
-u 升级
-q 查询
2 ubuntu
deb dpkg -i 安装
&n ......