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

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

?? ip_vs_core.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
	skb->nh.iph->saddr = cp->vaddr;	ip_send_check(skb->nh.iph);	IP_VS_DBG_PKT(10, pp, skb, 0, "After SNAT");	ip_vs_out_stats(cp, skb);	ip_vs_set_state(cp, IP_VS_DIR_OUTPUT, skb, pp);	ip_vs_conn_put(cp);	skb->nfcache |= NFC_IPVS_PROPERTY;	LeaveFunction(11);	return NF_ACCEPT;  drop:	ip_vs_conn_put(cp);	kfree_skb(*pskb);	return NF_STOLEN;}/* *      Check if the packet is for VS/NAT connections, then send it *      immediately. *      Called by ip_fw_compact to detect packets for VS/NAT before *      they are changed by ipchains masquerading code. */unsigned intcheck_for_ip_vs_out(struct sk_buff **pskb, int (*okfn)(struct sk_buff *)){	unsigned int ret;	ret = ip_vs_out(NF_IP_FORWARD, pskb, NULL, NULL, NULL);	if (ret != NF_ACCEPT) {		return ret;	} else {		/* send the packet immediately if it is already mangled		   by ip_vs_out */		if ((*pskb)->nfcache & NFC_IPVS_PROPERTY) {			(*okfn)(*pskb);			return NF_STOLEN;		}	}	return NF_ACCEPT;}/* *	Handle ICMP messages in the outside-to-inside direction (incoming). *	Find any that might be relevant, check against existing connections, *	forward to the right destination host if relevant. *	Currently handles error types - unreachable, quench, ttl exceeded. */static int ip_vs_in_icmp(struct sk_buff **pskb, int *related){	struct sk_buff *skb = *pskb;	struct iphdr *iph;	struct icmphdr	icmph;	struct iphdr	ciph;	/* The ip header contained within the ICMP */	struct ip_vs_conn *cp;	struct ip_vs_protocol *pp;	unsigned int offset, ihl, verdict;	*related = 1;	/* reassemble IP fragments */	if (skb->nh.iph->frag_off & __constant_htons(IP_MF|IP_OFFSET)) {		skb = ip_vs_gather_frags(skb);		if (!skb)			return NF_STOLEN;		*pskb = skb;	}	iph = skb->nh.iph;	offset = ihl = iph->ihl * 4;	if (skb_copy_bits(skb, offset, &icmph, sizeof(icmph)) < 0)		return NF_DROP;	IP_VS_DBG(12, "Incoming ICMP (%d,%d) %u.%u.%u.%u->%u.%u.%u.%u\n",		  icmph.type, ntohs(icmp_id(&icmph)),		  NIPQUAD(iph->saddr), NIPQUAD(iph->daddr));	/*	 * Work through seeing if this is for us.	 * These checks are supposed to be in an order that means easy	 * things are checked first to speed up processing.... however	 * this means that some packets will manage to get a long way	 * down this stack and then be rejected, but that's life.	 */	if ((icmph.type != ICMP_DEST_UNREACH) &&	    (icmph.type != ICMP_SOURCE_QUENCH) &&	    (icmph.type != ICMP_TIME_EXCEEDED)) {		*related = 0;		return NF_ACCEPT;	}	/* Now find the contained IP header */	offset += sizeof(icmph);	if (skb_copy_bits(skb, offset, &ciph, sizeof(ciph)) < 0)		return NF_ACCEPT; /* The packet looks wrong, ignore */	pp = ip_vs_proto_get(ciph.protocol);	if (!pp)		return NF_ACCEPT;	/* Is the embedded protocol header present? */	if (unlikely(ciph.frag_off & __constant_htons(IP_OFFSET) &&		     pp->dont_defrag))		return NF_ACCEPT;	IP_VS_DBG_PKT(11, pp, skb, offset, "Checking incoming ICMP for");	offset += ciph.ihl * 4;	/* The embedded headers contain source and dest in reverse order */	cp = pp->conn_in_get(skb, pp, &ciph, offset, 1);	if (!cp)		return NF_ACCEPT;	verdict = NF_DROP;	/* Ensure the checksum is correct */	if (skb->ip_summed != CHECKSUM_UNNECESSARY &&	    ip_vs_checksum_complete(skb, ihl)) {		/* Failed checksum! */		IP_VS_DBG(1, "Incoming ICMP: failed checksum from %d.%d.%d.%d!\n",			  NIPQUAD(iph->saddr));		goto out;	}	/* do the statistics and put it back */	ip_vs_in_stats(cp, skb);	if (IPPROTO_TCP == ciph.protocol || IPPROTO_UDP == ciph.protocol)		offset += 2 * sizeof(__u16);	verdict = ip_vs_icmp_xmit(skb, cp, pp, offset);	/* do not touch skb anymore */  out:	__ip_vs_conn_put(cp);	return verdict;}/* *	Check if it's for virtual services, look it up, *	and send it on its way... */static unsigned intip_vs_in(unsigned int hooknum, struct sk_buff **pskb,	 const struct net_device *in, const struct net_device *out,	 int (*okfn)(struct sk_buff *)){	struct sk_buff	*skb = *pskb;	struct iphdr	*iph;	struct ip_vs_protocol *pp;	struct ip_vs_conn *cp;	int ret, restart;	int ihl;	/*	 *	Big tappo: only PACKET_HOST (neither loopback nor mcasts)	 *	... don't know why 1st test DOES NOT include 2nd (?)	 */	if (unlikely(skb->pkt_type != PACKET_HOST		     || skb->dev == &loopback_dev || skb->sk)) {		IP_VS_DBG(12, "packet type=%d proto=%d daddr=%d.%d.%d.%d ignored\n",			  skb->pkt_type,			  skb->nh.iph->protocol,			  NIPQUAD(skb->nh.iph->daddr));		return NF_ACCEPT;	}	if (skb->ip_summed == CHECKSUM_HW) {		if (skb_checksum_help(pskb, (out == NULL)))			return NF_DROP;		if (skb != *pskb)			skb = *pskb;	}	iph = skb->nh.iph;	if (unlikely(iph->protocol == IPPROTO_ICMP)) {		int related, verdict = ip_vs_in_icmp(pskb, &related);		if (related)			return verdict;		skb = *pskb;		iph = skb->nh.iph;	}	/* Protocol supported? */	pp = ip_vs_proto_get(iph->protocol);	if (unlikely(!pp))		return NF_ACCEPT;	ihl = iph->ihl << 2;	/*	 * Check if the packet belongs to an existing connection entry	 */	cp = pp->conn_in_get(skb, pp, iph, ihl, 0);	if (unlikely(!cp)) {		int v;		if (!pp->conn_schedule(skb, pp, &v, &cp))			return v;	}	if (unlikely(!cp)) {		/* sorry, all this trouble for a no-hit :) */		IP_VS_DBG_PKT(12, pp, skb, 0,			      "packet continues traversal as normal");		return NF_ACCEPT;	}	IP_VS_DBG_PKT(11, pp, skb, 0, "Incoming packet");	/* Check the server status */	if (cp->dest && !(cp->dest->flags & IP_VS_DEST_F_AVAILABLE)) {		/* the destination server is not availabe */		if (sysctl_ip_vs_expire_nodest_conn) {			/* try to expire the connection immediately */			ip_vs_conn_expire_now(cp);		} else {			/* don't restart its timer, and silently			   drop the packet. */			__ip_vs_conn_put(cp);		}		return NF_DROP;	}	ip_vs_in_stats(cp, skb);	restart = ip_vs_set_state(cp, IP_VS_DIR_INPUT, skb, pp);	if (cp->packet_xmit)		ret = cp->packet_xmit(skb, cp, pp);		/* do not touch skb anymore */	else {		IP_VS_DBG_RL("warning: packet_xmit is null");		ret = NF_ACCEPT;	}	/* increase its packet counter and check if it is needed	   to be synchronized */	atomic_inc(&cp->in_pkts);	if ((ip_vs_sync_state & IP_VS_STATE_MASTER) &&	    (cp->protocol != IPPROTO_TCP ||	     cp->state == IP_VS_TCP_S_ESTABLISHED) &&	    (atomic_read(&cp->in_pkts) % sysctl_ip_vs_sync_threshold[1]	     == sysctl_ip_vs_sync_threshold[0]))		ip_vs_sync_conn(cp);	ip_vs_conn_put(cp);	return ret;}/* *	It is hooked at the NF_IP_FORWARD chain, in order to catch ICMP *      related packets destined for 0.0.0.0/0. *      When fwmark-based virtual service is used, such as transparent *      cache cluster, TCP packets can be marked and routed to ip_vs_in, *      but ICMP destined for 0.0.0.0/0 cannot not be easily marked and *      sent to ip_vs_in_icmp. So, catch them at the NF_IP_FORWARD chain *      and send them to ip_vs_in_icmp. */static unsigned intip_vs_forward_icmp(unsigned int hooknum, struct sk_buff **pskb,		   const struct net_device *in, const struct net_device *out,		   int (*okfn)(struct sk_buff *)){	int r;	if ((*pskb)->nh.iph->protocol != IPPROTO_ICMP)		return NF_ACCEPT;	return ip_vs_in_icmp(pskb, &r);}/* After packet filtering, forward packet through VS/DR, VS/TUN,   or VS/NAT(change destination), so that filtering rules can be   applied to IPVS. */static struct nf_hook_ops ip_vs_in_ops = {	.hook		= ip_vs_in,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum        = NF_IP_LOCAL_IN,	.priority       = 100,};/* After packet filtering, change source only for VS/NAT */static struct nf_hook_ops ip_vs_out_ops = {	.hook		= ip_vs_out,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum        = NF_IP_FORWARD,	.priority       = 100,};/* After packet filtering (but before ip_vs_out_icmp), catch icmp   destined for 0.0.0.0/0, which is for incoming IPVS connections */static struct nf_hook_ops ip_vs_forward_icmp_ops = {	.hook		= ip_vs_forward_icmp,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum        = NF_IP_FORWARD,	.priority       = 99,};/* Before the netfilter connection tracking, exit from POST_ROUTING */static struct nf_hook_ops ip_vs_post_routing_ops = {	.hook		= ip_vs_post_routing,	.owner		= THIS_MODULE,	.pf		= PF_INET,	.hooknum        = NF_IP_POST_ROUTING,	.priority       = NF_IP_PRI_NAT_SRC-1,};/* *	Initialize IP Virtual Server */static int __init ip_vs_init(void){	int ret;	ret = ip_vs_control_init();	if (ret < 0) {		IP_VS_ERR("can't setup control.\n");		goto cleanup_nothing;	}	ip_vs_protocol_init();	ret = ip_vs_app_init();	if (ret < 0) {		IP_VS_ERR("can't setup application helper.\n");		goto cleanup_protocol;	}	ret = ip_vs_conn_init();	if (ret < 0) {		IP_VS_ERR("can't setup connection table.\n");		goto cleanup_app;	}	ret = nf_register_hook(&ip_vs_in_ops);	if (ret < 0) {		IP_VS_ERR("can't register in hook.\n");		goto cleanup_conn;	}	ret = nf_register_hook(&ip_vs_out_ops);	if (ret < 0) {		IP_VS_ERR("can't register out hook.\n");		goto cleanup_inops;	}	ret = nf_register_hook(&ip_vs_post_routing_ops);	if (ret < 0) {		IP_VS_ERR("can't register post_routing hook.\n");		goto cleanup_outops;	}	ret = nf_register_hook(&ip_vs_forward_icmp_ops);	if (ret < 0) {		IP_VS_ERR("can't register forward_icmp hook.\n");		goto cleanup_postroutingops;	}	IP_VS_INFO("ipvs loaded.\n");	return ret;  cleanup_postroutingops:	nf_unregister_hook(&ip_vs_post_routing_ops);  cleanup_outops:	nf_unregister_hook(&ip_vs_out_ops);  cleanup_inops:	nf_unregister_hook(&ip_vs_in_ops);  cleanup_conn:	ip_vs_conn_cleanup();  cleanup_app:	ip_vs_app_cleanup();  cleanup_protocol:	ip_vs_protocol_cleanup();	ip_vs_control_cleanup();  cleanup_nothing:	return ret;}static void __exit ip_vs_cleanup(void){	nf_unregister_hook(&ip_vs_forward_icmp_ops);	nf_unregister_hook(&ip_vs_post_routing_ops);	nf_unregister_hook(&ip_vs_out_ops);	nf_unregister_hook(&ip_vs_in_ops);	ip_vs_conn_cleanup();	ip_vs_app_cleanup();	ip_vs_protocol_cleanup();	ip_vs_control_cleanup();	IP_VS_INFO("ipvs unloaded.\n");}module_init(ip_vs_init);module_exit(ip_vs_cleanup);MODULE_LICENSE("GPL");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久99| 欧美www视频| 一区二区三区产品免费精品久久75| jizz一区二区| 综合欧美一区二区三区| 91久久精品一区二区| 亚洲3atv精品一区二区三区| 欧美人与禽zozo性伦| 久久狠狠亚洲综合| 国产亚洲污的网站| 99久久久精品| 日韩精品色哟哟| 精品国产91乱码一区二区三区| 韩国视频一区二区| 亚洲欧美日韩系列| 欧美丰满嫩嫩电影| 成人永久aaa| 亚洲成人激情综合网| 亚洲精品在线观看网站| 99久久久久免费精品国产| 亚洲国产乱码最新视频| 日韩欧美电影一二三| aaa亚洲精品一二三区| 日韩专区欧美专区| 国产目拍亚洲精品99久久精品| 一本高清dvd不卡在线观看| 欧美aaaaaa午夜精品| 国产精品国产自产拍高清av| 91精品国产综合久久久久| 国产精品一区在线观看你懂的| 亚洲三级小视频| 日韩精品专区在线影院观看| 99在线精品视频| 免费人成在线不卡| 综合久久给合久久狠狠狠97色 | 欧美高清一级片在线观看| 色综合欧美在线视频区| 美女脱光内衣内裤视频久久影院| 中文字幕一区二区三区在线播放| 欧美三区免费完整视频在线观看| 国产乱码一区二区三区| 亚洲3atv精品一区二区三区| 中文字幕一区二区三区蜜月| 日韩欧美一级精品久久| 色婷婷久久99综合精品jk白丝| 久久成人麻豆午夜电影| 亚洲图片有声小说| 国产精品视频九色porn| 日韩午夜激情电影| 欧美在线观看视频一区二区| 成人性生交大合| 国产一区在线观看视频| 亚洲成a人v欧美综合天堂| 中文字幕日韩欧美一区二区三区| 精品日韩在线观看| 欧美日韩综合在线免费观看| 成人精品免费看| 国内精品伊人久久久久av影院| 亚洲第一成人在线| 一区二区三区四区乱视频| 国产精品久线观看视频| 国产日韩欧美激情| 久久综合色婷婷| 日韩欧美在线不卡| 777亚洲妇女| 欧美精品乱码久久久久久| 在线亚洲免费视频| 在线亚洲免费视频| 日本韩国欧美国产| 91色porny蝌蚪| 91一区二区三区在线播放| 国产98色在线|日韩| 国产精品一区二区男女羞羞无遮挡| 久久精品国产**网站演员| 无码av免费一区二区三区试看| 亚洲一区二区四区蜜桃| 亚洲一区二区三区视频在线| 亚洲黄色免费网站| 亚洲黄色尤物视频| 亚洲综合色区另类av| 亚洲成人动漫精品| 天堂蜜桃91精品| 免费成人你懂的| 国产九色精品成人porny| 国产一区免费电影| 盗摄精品av一区二区三区| 丁香婷婷综合激情五月色| 国产成人免费视频| proumb性欧美在线观看| 日本高清视频一区二区| 欧美无砖专区一中文字| 在线日韩国产精品| 欧美久久久久免费| 欧美电视剧免费观看| 欧美精品一区二区三区很污很色的| 精品国产免费一区二区三区四区 | 日本久久电影网| 欧美理论电影在线| 欧美sm美女调教| 国产精品色婷婷久久58| 亚洲免费观看高清完整版在线观看| 亚洲综合色区另类av| 免费亚洲电影在线| 成人免费三级在线| 欧美亚洲一区二区三区四区| 欧美精品xxxxbbbb| 国产三级久久久| 亚洲国产视频在线| 激情小说亚洲一区| 色屁屁一区二区| 欧美一级理论片| 国产精品国产三级国产普通话蜜臀| 亚洲宅男天堂在线观看无病毒| 蜜臀国产一区二区三区在线播放 | 久久久久久亚洲综合| 中文字幕一区二区三区色视频| 午夜精品一区在线观看| 国产在线日韩欧美| 91免费国产视频网站| 欧美亚洲一区二区在线| 久久影院午夜论| 亚洲综合一二区| 国产乱码精品一区二区三| 在线影院国内精品| 欧美极品xxx| 日本一不卡视频| 成人精品小蝌蚪| 欧美一区二区精品久久911| 国产精品情趣视频| 麻豆91免费观看| 色婷婷久久久亚洲一区二区三区| 日韩美女天天操| 亚洲一区av在线| 国产盗摄一区二区三区| 在线电影院国产精品| 综合在线观看色| 国产成人免费网站| 日韩视频中午一区| 亚洲一区在线播放| av在线播放不卡| 久久精品人人做人人爽97| 日韩福利视频导航| 欧美午夜理伦三级在线观看| 欧美国产一区在线| 国产一区二区三区四区五区入口| 欧美午夜影院一区| 亚洲天堂网中文字| 国产+成+人+亚洲欧洲自线| 51精品国自产在线| 亚洲成精国产精品女| 色综合久久中文综合久久97| 国产精品入口麻豆九色| 狠狠久久亚洲欧美| 日韩手机在线导航| 免费在线观看一区| 欧美日韩国产首页在线观看| 亚洲免费观看高清完整版在线 | 亚洲va欧美va人人爽| 色综合久久久久久久| 中文字幕巨乱亚洲| 国产乱国产乱300精品| 日韩欧美一区二区久久婷婷| 亚洲国产日韩精品| 欧美做爰猛烈大尺度电影无法无天| 国产精品青草久久| av亚洲产国偷v产偷v自拍| 国产精品美日韩| av亚洲精华国产精华精| 中文字幕一区二区三区色视频| av资源网一区| 亚洲三级在线看| 欧美网站一区二区| 天天色综合成人网| 日韩一区二区电影| 国产一区激情在线| 国产欧美日韩另类一区| 不卡av在线网| 亚洲人精品午夜| 欧洲一区在线观看| 日欧美一区二区| 欧美变态口味重另类| 国产乱色国产精品免费视频| 亚洲国产精品av| 一本大道久久a久久综合婷婷| 亚洲在线成人精品| 91精品国产综合久久精品| 麻豆视频观看网址久久| 久久综合五月天婷婷伊人| 成人免费视频网站在线观看| 中文字幕在线一区| 欧美少妇bbb| 捆绑紧缚一区二区三区视频 | 色噜噜久久综合| 天天色综合成人网| 久久久91精品国产一区二区三区| 从欧美一区二区三区| 艳妇臀荡乳欲伦亚洲一区| 日韩欧美电影一区| 成人午夜碰碰视频| 午夜精品久久久久久久久|