亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ipchains_core.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
		if ((chain = find_label(new->fwt_label)) == NULL)			ret = ENOENT;		else {			struct sk_buff *tmp_skb;			int hdrlen;			hdrlen = sizeof(struct ip_fwpkt) -				sizeof(struct in_addr) -				IFNAMSIZ;			ip = &(new->fwt_packet.fwp_iph);			/* Fix this one up by hand, who knows how many			 * tools will break if we start to barf on this.			 */			if (ntohs(ip->tot_len) > hdrlen)				ip->tot_len = htons(hdrlen);			if (ip->ihl != sizeof(struct iphdr) / sizeof(u32)) {				duprintf("ip_fw_ctl: ip->ihl=%d, want %d\n",					 ip->ihl,					 sizeof(struct iphdr) / sizeof(u32));				ret = EINVAL;			} else if ((tmp_skb = alloc_skb(hdrlen,							GFP_ATOMIC)) == NULL) {				duprintf("ip_fw_ctl: tmp_skb alloc failure\n");				ret = EFAULT;			} else {				skb_reserve(tmp_skb, hdrlen);				skb_push(tmp_skb, hdrlen);				memcpy(tmp_skb->data, ip, hdrlen);				tmp_skb->nh.raw =					(unsigned char *) tmp_skb->data;				ret = ip_fw_check(new->fwt_packet.fwp_vianame,						  NULL, chain,						  &tmp_skb, SLOT_NUMBER(), 1);				kfree_skb(tmp_skb);				switch (ret) {				case FW_ACCEPT:					ret = 0; break;				case FW_REDIRECT:					ret = ECONNABORTED; break;				case FW_MASQUERADE:					ret = ECONNRESET; break;				case FW_REJECT:					ret = ECONNREFUSED; break;					/* Hack to help diag; these only get					   returned when testing. */				case FW_SKIP+1:					ret = ELOOP; break;				case FW_SKIP:					ret = ENFILE; break;				default: /* FW_BLOCK */					ret = ETIMEDOUT; break;				}			}		}		FWC_READ_UNLOCK(&ip_fw_lock);		return ret;	}	case IP_FW_MASQ_TIMEOUTS: {		ret = ip_fw_masq_timeouts(m, len);	}	break;	case IP_FW_REPLACE: {		struct ip_fwkernel *ip_fwkern;		struct ip_fwnew *new = m;		if (len != sizeof(struct ip_fwnew)		    || !check_label(new->fwn_label))			ret = EINVAL;		else if ((chain = find_label(new->fwn_label)) == NULL)			ret = ENOENT;		else if ((ip_fwkern = convert_ipfw(&new->fwn_rule, &ret))			 != NULL)			ret = replace_in_chain(chain, ip_fwkern,					       new->fwn_rulenum);	}	break;	case IP_FW_APPEND: {		struct ip_fwchange *new = m;		struct ip_fwkernel *ip_fwkern;		if (len != sizeof(struct ip_fwchange)		    || !check_label(new->fwc_label))			ret = EINVAL;		else if ((chain = find_label(new->fwc_label)) == NULL)			ret = ENOENT;		else if ((ip_fwkern = convert_ipfw(&new->fwc_rule, &ret))			 != NULL)			ret = append_to_chain(chain, ip_fwkern);	}	break;	case IP_FW_INSERT: {		struct ip_fwkernel *ip_fwkern;		struct ip_fwnew *new = m;		if (len != sizeof(struct ip_fwnew)		    || !check_label(new->fwn_label))			ret = EINVAL;		else if ((chain = find_label(new->fwn_label)) == NULL)			ret = ENOENT;		else if ((ip_fwkern = convert_ipfw(&new->fwn_rule, &ret))			 != NULL)			ret = insert_in_chain(chain, ip_fwkern,					      new->fwn_rulenum);	}	break;	case IP_FW_DELETE: {		struct ip_fwchange *new = m;		struct ip_fwkernel *ip_fwkern;		if (len != sizeof(struct ip_fwchange)		    || !check_label(new->fwc_label))			ret = EINVAL;		else if ((chain = find_label(new->fwc_label)) == NULL)			ret = ENOENT;		else if ((ip_fwkern = convert_ipfw(&new->fwc_rule, &ret))			 != NULL) {			ret = del_rule_from_chain(chain, ip_fwkern);			kfree(ip_fwkern);		}	}	break;	case IP_FW_DELETE_NUM: {		struct ip_fwdelnum *new = m;		if (len != sizeof(struct ip_fwdelnum)		    || !check_label(new->fwd_label))			ret = EINVAL;		else if ((chain = find_label(new->fwd_label)) == NULL)			ret = ENOENT;		else ret = del_num_from_chain(chain, new->fwd_rulenum);	}	break;	case IP_FW_CREATECHAIN: {		if (len != sizeof(ip_chainlabel)) {			duprintf("create_chain: bad size %i\n", len);			ret = EINVAL;		}		else ret = create_chain(m);	}	break;	case IP_FW_DELETECHAIN: {		if (len != sizeof(ip_chainlabel)) {			duprintf("delete_chain: bad size %i\n", len);			ret = EINVAL;		}		else ret = del_chain(m);	}	break;	case IP_FW_POLICY: {		struct ip_fwpolicy *new = m;		if (len != sizeof(struct ip_fwpolicy)		    || !check_label(new->fwp_label))			ret = EINVAL;		else if ((chain = find_label(new->fwp_label)) == NULL)			ret = ENOENT;		else if (chain != IP_FW_INPUT_CHAIN			 && chain != IP_FW_FORWARD_CHAIN			 && chain != IP_FW_OUTPUT_CHAIN) {			duprintf("change_policy: can't change policy on user"				 " defined chain.\n");			ret = EINVAL;		}		else {		        int pol = FW_SKIP;			find_special(new->fwp_policy, &pol);			switch(pol) {			case FW_MASQUERADE:				if (chain != IP_FW_FORWARD_CHAIN) {					ret = EINVAL;					break;				}				/* Fall thru... */			case FW_BLOCK:			case FW_ACCEPT:			case FW_REJECT:				ret = change_policy(chain, pol);				break;			default:			        duprintf("change_policy: bad policy `%s'\n",					 new->fwp_policy);				ret = EINVAL;			}		}		break;	}	default:		duprintf("ip_fw_ctl:  unknown request %d\n",cmd);		ret = ENOPROTOOPT;	}	FWC_WRITE_UNLOCK_IRQ(&ip_fw_lock, flags);	return ret;}/* Returns bytes used - doesn't NUL terminate */static int dump_rule(char *buffer,		     const char *chainlabel,		     const struct ip_fwkernel *rule){	int len;	unsigned int i;	__u64 packets = 0, bytes = 0;	FWC_HAVE_LOCK(fwc_wlocks);	for (i = 0; i < NUM_SLOTS; i++) {		packets += rule->counters[i].pcnt;		bytes += rule->counters[i].bcnt;	}	len=sprintf(buffer,		    "%9s "			/* Chain name */		    "%08X/%08X->%08X/%08X "	/* Source & Destination IPs */		    "%.16s "			/* Interface */		    "%X %X "			/* fw_flg and fw_invflg fields */		    "%u "			/* Protocol */		    "%-9u %-9u %-9u %-9u "	/* Packet & byte counters */		    "%u-%u %u-%u "		/* Source & Dest port ranges */		    "A%02X X%02X "		/* TOS and and xor masks */		    "%08X "			/* Redirection port */		    "%u "			/* fw_mark field */		    "%u "			/* output size */		    "%9s\n",			/* Target */		    chainlabel,		    ntohl(rule->ipfw.fw_src.s_addr),		    ntohl(rule->ipfw.fw_smsk.s_addr),		    ntohl(rule->ipfw.fw_dst.s_addr),		    ntohl(rule->ipfw.fw_dmsk.s_addr),		    (rule->ipfw.fw_vianame)[0] ? rule->ipfw.fw_vianame : "-",		    rule->ipfw.fw_flg,		    rule->ipfw.fw_invflg,		    rule->ipfw.fw_proto,		    (__u32)(packets >> 32), (__u32)packets,		    (__u32)(bytes >> 32), (__u32)bytes,		    rule->ipfw.fw_spts[0], rule->ipfw.fw_spts[1],		    rule->ipfw.fw_dpts[0], rule->ipfw.fw_dpts[1],		    rule->ipfw.fw_tosand, rule->ipfw.fw_tosxor,		    rule->ipfw.fw_redirpt,		    rule->ipfw.fw_mark,		    rule->ipfw.fw_outputsize,		    branchname(rule->branch,rule->simplebranch));	duprintf("dump_rule: %i bytes done.\n", len);	return len;}/* File offset is actually in records, not bytes. */static int ip_chain_procinfo(char *buffer, char **start,			     off_t offset, int length){	struct ip_chain *i;	struct ip_fwkernel *j = ip_fw_chains->chain;	unsigned long flags;	int len = 0;	int last_len = 0;	off_t upto = 0;	duprintf("Offset starts at %lu\n", offset);	duprintf("ip_fw_chains is 0x%0lX\n", (unsigned long int)ip_fw_chains);	/* Need a write lock to lock out ``readers'' which update counters. */	FWC_WRITE_LOCK_IRQ(&ip_fw_lock, flags);	for (i = ip_fw_chains; i; i = i->next) {	    for (j = i->chain; j; j = j->next) {		if (upto == offset) break;		duprintf("Skipping rule in chain `%s'\n",			 i->label);		upto++;	    }	    if (upto == offset) break;	}	/* Don't init j first time, or once i = NULL */	for (; i; (void)((i = i->next) && (j = i->chain))) {		duprintf("Dumping chain `%s'\n", i->label);		for (; j; j = j->next, upto++, last_len = len)		{			len += dump_rule(buffer+len, i->label, j);			if (len > length) {				duprintf("Dumped to %i (past %i).  "					 "Moving back to %i.\n",					 len, length, last_len);				len = last_len;				goto outside;			}		}	}outside:	FWC_WRITE_UNLOCK_IRQ(&ip_fw_lock, flags);	buffer[len] = '\0';	duprintf("ip_chain_procinfo: Length = %i (of %i).  Offset = %li.\n",		 len, length, upto);	/* `start' hack - see fs/proc/generic.c line ~165 */	*start=(char *)((unsigned int)upto-offset);	return len;}static int ip_chain_name_procinfo(char *buffer, char **start,				  off_t offset, int length){	struct ip_chain *i;	int len = 0,last_len = 0;	off_t pos = 0,begin = 0;	unsigned long flags;	/* Need a write lock to lock out ``readers'' which update counters. */	FWC_WRITE_LOCK_IRQ(&ip_fw_lock, flags);	for (i = ip_fw_chains; i; i = i->next)	{		unsigned int j;		__u32 packetsHi = 0, packetsLo = 0, bytesHi = 0, bytesLo = 0;		for (j = 0; j < NUM_SLOTS; j++) {			packetsLo += i->reent[j].counters.pcnt & 0xFFFFFFFF;			packetsHi += ((i->reent[j].counters.pcnt >> 32)				      & 0xFFFFFFFF);			bytesLo += i->reent[j].counters.bcnt & 0xFFFFFFFF;			bytesHi += ((i->reent[j].counters.bcnt >> 32)				    & 0xFFFFFFFF);		}		/* print the label and the policy */		len+=sprintf(buffer+len,"%s %s %i %u %u %u %u\n",			     i->label,branchname(NULL, i->policy),i->refcount,			     packetsHi, packetsLo, bytesHi, bytesLo);		pos=begin+len;		if(pos<offset) {			len=0;			begin=pos;		}		else if(pos>offset+length) {			len = last_len;			break;		}		last_len = len;	}	FWC_WRITE_UNLOCK_IRQ(&ip_fw_lock, flags);	*start = buffer+(offset-begin);	len-=(offset-begin);	if(len>length)		len=length;	return len;}/* *	Interface to the generic firewall chains. */int ipfw_input_check(struct firewall_ops *this, int pf,		     struct net_device *dev, void *arg,		     struct sk_buff **pskb){	return ip_fw_check(dev->name,			   arg, IP_FW_INPUT_CHAIN, pskb, SLOT_NUMBER(), 0);}int ipfw_output_check(struct firewall_ops *this, int pf,		      struct net_device *dev, void *arg,		      struct sk_buff **pskb){	/* Locally generated bogus packets by root. <SIGH>. */	if ((*pskb)->len < sizeof(struct iphdr) ||	    (*pskb)->nh.iph->ihl * 4 < sizeof(struct iphdr))		return FW_ACCEPT;	return ip_fw_check(dev->name,			   arg, IP_FW_OUTPUT_CHAIN, pskb, SLOT_NUMBER(), 0);}int ipfw_forward_check(struct firewall_ops *this, int pf,		       struct net_device *dev, void *arg,		       struct sk_buff **pskb){	return ip_fw_check(dev->name,			   arg, IP_FW_FORWARD_CHAIN, pskb, SLOT_NUMBER(), 0);}struct firewall_ops ipfw_ops = {	.fw_forward	=	ipfw_forward_check,	.fw_input	=	ipfw_input_check,	.fw_output	=	ipfw_output_check,};int ipfw_init_or_cleanup(int init){	struct proc_dir_entry *proc;	int ret = 0;	unsigned long flags;	if (!init) goto cleanup;#ifdef DEBUG_IP_FIREWALL_LOCKING	fwc_wlocks = fwc_rlocks = 0;#endif#if defined(CONFIG_NETLINK_DEV) || defined(CONFIG_NETLINK_DEV_MODULE)	ipfwsk = netlink_kernel_create(NETLINK_FIREWALL, NULL);	if (ipfwsk == NULL)		goto cleanup_nothing;#endif	ret = register_firewall(PF_INET, &ipfw_ops);	if (ret < 0)		goto cleanup_netlink;	proc = proc_net_create(IP_FW_PROC_CHAINS, S_IFREG | S_IRUSR | S_IWUSR,			       ip_chain_procinfo);	if (proc) proc->owner = THIS_MODULE;	proc = proc_net_create(IP_FW_PROC_CHAIN_NAMES,			       S_IFREG | S_IRUSR | S_IWUSR,			       ip_chain_name_procinfo);	if (proc) proc->owner = THIS_MODULE;	IP_FW_INPUT_CHAIN = ip_init_chain(IP_FW_LABEL_INPUT, 1, FW_ACCEPT);	IP_FW_FORWARD_CHAIN = ip_init_chain(IP_FW_LABEL_FORWARD, 1, FW_ACCEPT);	IP_FW_OUTPUT_CHAIN = ip_init_chain(IP_FW_LABEL_OUTPUT, 1, FW_ACCEPT);	return ret; cleanup:	unregister_firewall(PF_INET, &ipfw_ops);	FWC_WRITE_LOCK_IRQ(&ip_fw_lock, flags);	while (ip_fw_chains) {		struct ip_chain *next = ip_fw_chains->next;		clear_fw_chain(ip_fw_chains);		kfree(ip_fw_chains);		ip_fw_chains = next;	}	FWC_WRITE_UNLOCK_IRQ(&ip_fw_lock, flags);	proc_net_remove(IP_FW_PROC_CHAINS);	proc_net_remove(IP_FW_PROC_CHAIN_NAMES); cleanup_netlink:#if defined(CONFIG_NETLINK_DEV) || defined(CONFIG_NETLINK_DEV_MODULE)	sock_release(ipfwsk->sk_socket); cleanup_nothing:#endif	return ret;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色porny在线视频| 综合亚洲深深色噜噜狠狠网站| 一区二区三区欧美日韩| 91片黄在线观看| 亚洲综合一区二区三区| 色哦色哦哦色天天综合| 亚洲精品国产高清久久伦理二区| 色婷婷av一区二区三区大白胸 | 欧美精品在线视频| 丝袜亚洲精品中文字幕一区| 日韩免费成人网| 国产精品99久久久久| 1024亚洲合集| 制服丝袜激情欧洲亚洲| 精品亚洲porn| 亚洲免费视频中文字幕| 538prom精品视频线放| 国产美女久久久久| 亚洲精品精品亚洲| 欧美精品一区二区不卡 | 日韩理论片一区二区| 欧美日韩一区二区欧美激情| 国产专区欧美精品| 亚洲精品一二三| 日韩免费成人网| av电影在线观看一区| 日韩av电影免费观看高清完整版| 久久嫩草精品久久久久| 91国偷自产一区二区使用方法| 麻豆久久一区二区| 亚洲色图一区二区三区| 欧美精品一区二区不卡| 在线观看欧美精品| 国产精品18久久久久久久久| 亚洲午夜在线电影| 国产欧美精品区一区二区三区| 精品视频一区 二区 三区| 国产成人免费在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品久久久久一区二区三区共| 欧美日韩黄色一区二区| 99re热视频精品| 精品一区二区三区视频| 亚洲成人综合视频| 最新日韩av在线| 久久婷婷国产综合精品青草| 制服丝袜亚洲播放| 欧美视频一区二区| 97精品久久久久中文字幕 | 午夜不卡av在线| 国产精品欧美久久久久无广告| 91精品国产91久久综合桃花 | 欧美日韩一区精品| 成人av电影在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲成人手机在线| 亚洲一区二区免费视频| 亚洲欧洲国产日韩| 国产精品久久影院| 久久这里只有精品视频网| 日韩亚洲欧美高清| 91精品国产高清一区二区三区| 在线观看国产日韩| 色噜噜狠狠成人网p站| 99re这里只有精品首页| 99久久99久久综合| 成人精品小蝌蚪| www.成人网.com| 99re热这里只有精品视频| 波多野结衣一区二区三区| 国产成a人无v码亚洲福利| 国产在线视频一区二区| 韩国精品一区二区| 国产成人午夜99999| 国产精品一区二区在线观看不卡 | 男男视频亚洲欧美| 三级久久三级久久| 日本v片在线高清不卡在线观看| 一级做a爱片久久| 亚洲国产成人91porn| 香港成人在线视频| 免费一级片91| 国精品**一区二区三区在线蜜桃| 国产在线不卡视频| 国产1区2区3区精品美女| 成人一级片在线观看| 99免费精品视频| 欧美亚洲禁片免费| 7777精品伊人久久久大香线蕉的 | 99久久国产免费看| 91行情网站电视在线观看高清版| 欧美色大人视频| 日韩欧美的一区二区| 久久久久国产精品麻豆ai换脸| 国产精品色噜噜| 一区二区免费在线| 日本免费新一区视频| 国产一区二区中文字幕| 99国产精品视频免费观看| 欧美中文字幕亚洲一区二区va在线 | 91精品在线一区二区| 日韩免费成人网| 国产精品天天看| 一区二区三区四区激情| 三级影片在线观看欧美日韩一区二区 | 日韩欧美卡一卡二| 亚洲国产精品国自产拍av| 一区二区三区精品在线观看| 蜜臀av国产精品久久久久| 成人av先锋影音| 欧美片在线播放| 国产欧美精品区一区二区三区 | 国产精品国产三级国产aⅴ原创 | 国产丝袜在线精品| 亚洲一区在线观看免费| 麻豆成人91精品二区三区| eeuss鲁片一区二区三区| 欧美精品在线观看一区二区| 国产午夜亚洲精品午夜鲁丝片| 亚洲国产裸拍裸体视频在线观看乱了| 精品制服美女久久| 色偷偷一区二区三区| 精品国免费一区二区三区| 日韩一区日韩二区| 国内精品第一页| 欧美日韩免费不卡视频一区二区三区| 久久精品视频网| 日韩成人一区二区三区在线观看| 成人黄动漫网站免费app| 欧美一区二区三区视频| 最新成人av在线| 国产精品18久久久| 91精品国产欧美一区二区| 亚洲欧美一区二区三区久本道91 | 欧美日韩国产不卡| 日韩一区在线播放| 国产盗摄精品一区二区三区在线 | 国产欧美日本一区视频| 日日夜夜精品视频天天综合网| av不卡在线观看| 国产婷婷色一区二区三区在线| 香港成人在线视频| 欧美在线小视频| 国产精品美女久久久久久久网站| 久久国产精品99久久人人澡| 欧美日韩三级一区二区| 亚洲精品成人a在线观看| 成人综合婷婷国产精品久久蜜臀| 日韩视频免费直播| 性欧美疯狂xxxxbbbb| 色婷婷亚洲综合| 亚洲欧美自拍偷拍色图| 成人av网站在线观看| 欧美国产日韩在线观看| 国产伦理精品不卡| 久久免费午夜影院| 国内偷窥港台综合视频在线播放| 欧美一区二区免费观在线| 三级一区在线视频先锋| 欧美精品高清视频| 亚洲一区免费视频| 91福利视频网站| 亚洲成人自拍偷拍| 欧美日韩一级二级| 亚洲成年人网站在线观看| 欧美无乱码久久久免费午夜一区| 亚洲一区中文在线| 欧美日韩大陆在线| 日本网站在线观看一区二区三区| 91精品久久久久久久91蜜桃| 日韩激情中文字幕| 日韩欧美一区二区不卡| 国内久久精品视频| 国产片一区二区三区| 成人黄色小视频| 亚洲美女区一区| 91麻豆精品91久久久久同性| 美女国产一区二区| 久久久不卡网国产精品二区| 国产91精品精华液一区二区三区| 国产精品欧美经典| 欧美在线观看视频在线| 五月激情综合色| 久久影院视频免费| 不卡视频一二三四| 亚洲一区二区在线免费观看视频| 欧美日韩精品欧美日韩精品一| 日韩一区欧美二区| 久久精品日产第一区二区三区高清版 | 精品乱人伦小说| 成人一区在线观看| 亚洲黄色性网站| 日韩亚洲欧美成人一区| 国产伦精品一区二区三区视频青涩 | 久久福利视频一区二区| 中文字幕精品一区二区精品绿巨人| 91视频观看视频| 日韩二区在线观看| 中文字幕制服丝袜一区二区三区| 日本丶国产丶欧美色综合|