⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipt_tos.c

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 C
字号:
/* This is a module which is used for setting the TOS field of a packet. */#include <linux/module.h>#include <linux/skbuff.h>#include <linux/ip.h>#include <net/checksum.h>#include <linux/netfilter_ipv4/ip_tables.h>#include <linux/netfilter_ipv4/ipt_TOS.h>static unsigned inttarget(struct sk_buff **pskb,       unsigned int hooknum,       const struct net_device *in,       const struct net_device *out,       const void *targinfo,       void *userinfo){	struct iphdr *iph = (*pskb)->nh.iph;	const struct ipt_tos_target_info *tosinfo = targinfo;	if ((iph->tos & IPTOS_TOS_MASK) != tosinfo->tos) {		u_int16_t diffs[2];		/* raw socket (tcpdump) may have clone of incoming                   skb: don't disturb it --RR */		if (skb_cloned(*pskb) && !(*pskb)->sk) {			struct sk_buff *nskb = skb_copy(*pskb, GFP_ATOMIC);			if (!nskb)				return NF_DROP;			kfree_skb(*pskb);			*pskb = nskb;			iph = (*pskb)->nh.iph;		}		diffs[0] = htons(iph->tos) ^ 0xFFFF;		iph->tos = (iph->tos & IPTOS_PREC_MASK) | tosinfo->tos;		diffs[1] = htons(iph->tos);		iph->check = csum_fold(csum_partial((char *)diffs,		  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -