转换IP地址格式

非原创:只是学习而已。
后记:
 #define NIPQUAD(addr) \
    ((unsigned char *)&addr)[0], \
    ((unsigned char *)&addr)[1], \
    ((unsigned char *)&addr)[2], \
    ((unsigned char *)&addr)[3]
#define NIPQUAD_FMT "%u.%u.%u.%u"
转换IP地址格式
printk("source ip :%d.%d.%d.%d:%u\n",NIPQUAD(iph->saddr));//从__be32转换为常用格式
 
NIPQUAD是IPv4用
NIP6是IPv6用
 
 
netfilter的hook点
    在netfilter的hook点上为 contrack定义了如下几个挂接点,用来处理流经的ip包:        NF_IP_PRE_ROUTING : ip_conntrack_defrag -> ip_conntrack_in        NF_IP_LOCAL_IN :        ip_conntrack_help -> ip_confirm        NF_IP_LOCAL_OUT :     ip_conntrack_defrag -> ip_conntrack_local        NF_IP_POST_ROUTING :ip_conntrack_help -> ip_confirm其中ip_contrack_defrag用来处理报文分 片;ip_conntrack_in和ip_conntrack_local(内部调用ip_conntrack_in)用于conntrack为每个连 接建立模式记录,ip_conntrack,并判断报文是否符合合法的模式,不符合则丢弃;ip_conntrack_help是针对使用动态协议和端口 的连接设计的数据结构,如一个ftp连接针对数据流和控制流分别用到了两个端口,;ip_confirm判断报文所属的模式ip_conntrack是否 已经存在系统哈希中,否则加入到系统的hash中。
 
 
tuple
    tuple 结构仅仅用来标识一个连接,并不是描述一条完整的连接状态,netfilter将数据包转换成tuple结构,并根据其计算hash,在相应的链表上查询,获取相应的连接状态,如果没有查到,则表示是一个新的连接。
    内核中,描述一个包的连接状态,使用了struct ip_conntrack(ip_conntrack.h) 结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值