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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ip_vs_proto.c

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? C
字號:
/* * ip_vs_proto.c: transport protocol load balancing support for IPVS * * Version:     $Id: ip_vs_proto.c,v 1.2 2003/04/18 09:03:16 wensong Exp $ * * Authors:     Wensong Zhang <wensong@linuxvirtualserver.org> *              Julian Anastasov <ja@ssi.bg> * *              This program is free software; you can redistribute it and/or *              modify it under the terms of the GNU General Public License *              as published by the Free Software Foundation; either version *              2 of the License, or (at your option) any later version. * * Changes: * */#include <linux/module.h>#include <linux/kernel.h>#include <linux/skbuff.h>#include <linux/in.h>#include <linux/ip.h>#include <net/protocol.h>#include <net/tcp.h>#include <net/udp.h>#include <asm/system.h>#include <linux/stat.h>#include <linux/proc_fs.h>#include <net/ip_vs.h>/* * IPVS protocols can only be registered/unregistered when the ipvs * module is loaded/unloaded, so no lock is needed in accessing the * ipvs protocol table. */#define IP_VS_PROTO_TAB_SIZE		32	/* must be power of 2 */#define IP_VS_PROTO_HASH(proto)		((proto) & (IP_VS_PROTO_TAB_SIZE-1))static struct ip_vs_protocol *ip_vs_proto_table[IP_VS_PROTO_TAB_SIZE];/* *	register an ipvs protocol */int register_ip_vs_protocol(struct ip_vs_protocol *pp){	unsigned hash = IP_VS_PROTO_HASH(pp->protocol);	pp->next = ip_vs_proto_table[hash];	ip_vs_proto_table[hash] = pp;	if (pp->init != NULL)		pp->init(pp);	return 0;}/* *	unregister an ipvs protocol */int unregister_ip_vs_protocol(struct ip_vs_protocol *pp){	struct ip_vs_protocol **pp_p;	unsigned hash = IP_VS_PROTO_HASH(pp->protocol);	pp_p = &ip_vs_proto_table[hash];	for (; *pp_p; pp_p = &(*pp_p)->next) {		if (*pp_p == pp) {			*pp_p = pp->next;			if (pp->exit != NULL)				pp->exit(pp);			return 0;		}	}	return -ESRCH;}/* *	get ip_vs_protocol object by its proto. */struct ip_vs_protocol * ip_vs_proto_get(unsigned short proto){	struct ip_vs_protocol *pp;	unsigned hash = IP_VS_PROTO_HASH(proto);	for (pp = ip_vs_proto_table[hash]; pp; pp = pp->next) {		if (pp->protocol == proto)			return pp;	}	return NULL;}/* *	Propagate event for state change to all protocols */void ip_vs_protocol_timeout_change(int flags){	struct ip_vs_protocol *pp;	int i;	for (i = 0; i < IP_VS_PROTO_TAB_SIZE; i++) {		for (pp = ip_vs_proto_table[i]; pp; pp = pp->next) {			if (pp->timeout_change)				pp->timeout_change(pp, flags);		}	}}int *ip_vs_create_timeout_table(int *table, int size){	int *t;	t = kmalloc(size, GFP_ATOMIC);	if (t == NULL)		return NULL;	memcpy(t, table, size);	return t;}/* *	Set timeout value for state specified by name */intip_vs_set_state_timeout(int *table, int num, char **names, char *name, int to){	int i;	if (!table || !name || !to)		return -EINVAL;	for (i = 0; i < num; i++) {		if (strcmp(names[i], name))			continue;		table[i] = to * HZ;		return 0;	}	return -ENOENT;}const char * ip_vs_state_name(__u16 proto, int state){	struct ip_vs_protocol *pp = ip_vs_proto_get(proto);	if (pp == NULL || pp->state_name == NULL)		return "ERR!";	return pp->state_name(state);}voidip_vs_tcpudp_debug_packet(struct ip_vs_protocol *pp,			  const struct sk_buff *skb,			  int offset,			  const char *msg){	char buf[128];	__u16 ports[2];	struct iphdr iph;	if (skb_copy_bits(skb, offset, &iph, sizeof(iph)) < 0)		sprintf(buf, "%s TRUNCATED", pp->name);	else if (iph.frag_off & __constant_htons(IP_OFFSET))		sprintf(buf, "%s %u.%u.%u.%u->%u.%u.%u.%u frag",			pp->name, NIPQUAD(iph.saddr),			NIPQUAD(iph.daddr));	else if (skb_copy_bits(skb, offset + iph.ihl*4, ports, sizeof(ports)) < 0)		sprintf(buf, "%s TRUNCATED %u.%u.%u.%u->%u.%u.%u.%u",			pp->name,			NIPQUAD(iph.saddr),			NIPQUAD(iph.daddr));	else		sprintf(buf, "%s %u.%u.%u.%u:%u->%u.%u.%u.%u:%u",			pp->name,			NIPQUAD(iph.saddr),			ntohs(ports[0]),			NIPQUAD(iph.daddr),			ntohs(ports[1]));	printk(KERN_DEBUG "IPVS: %s: %s\n", msg, buf);}int ip_vs_protocol_init(void){	char protocols[64];#define REGISTER_PROTOCOL(p)			\	do {					\		register_ip_vs_protocol(p);	\		strcat(protocols, ", ");	\		strcat(protocols, (p)->name);	\	} while (0)	protocols[0] = '\0';	protocols[2] = '\0';#ifdef CONFIG_IP_VS_PROTO_TCP	REGISTER_PROTOCOL(&ip_vs_protocol_tcp);#endif#ifdef CONFIG_IP_VS_PROTO_UDP	REGISTER_PROTOCOL(&ip_vs_protocol_udp);#endif#ifdef CONFIG_IP_VS_PROTO_ICMP	REGISTER_PROTOCOL(&ip_vs_protocol_icmp);#endif#ifdef CONFIG_IP_VS_PROTO_AH	REGISTER_PROTOCOL(&ip_vs_protocol_ah);#endif#ifdef CONFIG_IP_VS_PROTO_ESP	REGISTER_PROTOCOL(&ip_vs_protocol_esp);#endif	IP_VS_INFO("Registered protocols (%s)\n", &protocols[2]);	return 0;}void ip_vs_protocol_cleanup(void){	struct ip_vs_protocol *pp;	int i;	/* unregister all the ipvs protocols */	for (i = 0; i < IP_VS_PROTO_TAB_SIZE; i++) {		while ((pp = ip_vs_proto_table[i]) != NULL)			unregister_ip_vs_protocol(pp);	}}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人亚洲综合色影视| 成人一区二区三区| 久久国产婷婷国产香蕉| 国产福利电影一区二区三区| 天天射综合影视| 国产大陆亚洲精品国产| 久久久精品国产免费观看同学| 亚洲一区在线电影| 福利一区在线观看| 精品理论电影在线| 婷婷综合五月天| 91精品国产一区二区三区| 亚洲天堂精品视频| 国产精品亚洲视频| 精品国产一区久久| 日韩一区精品字幕| 欧美怡红院视频| 亚洲视频一二三区| 欧美日韩国产小视频| 亚洲美女少妇撒尿| 懂色av一区二区在线播放| 亚洲欧美一区二区久久| 欧美日韩精品一区二区三区 | 亚洲电影在线播放| 日韩精品高清不卡| 精品伦理精品一区| 丁香五精品蜜臀久久久久99网站| 亚洲精品一二三区| 色综合色狠狠综合色| 久久精品欧美日韩| 六月婷婷色综合| 久久久久久免费毛片精品| 色婷婷精品久久二区二区蜜臀av | 欧美高清在线一区| 麻豆成人av在线| 欧美一二区视频| 日韩高清在线观看| 日韩一级黄色片| av资源网一区| 亚洲乱码一区二区三区在线观看| 制服丝袜亚洲精品中文字幕| 日韩黄色小视频| 中文字幕不卡一区| 7777精品伊人久久久大香线蕉超级流畅 | 久久激情五月婷婷| 亚洲黄色小视频| 日韩精品自拍偷拍| 国产一区二区主播在线| 久久综合九色综合97婷婷女人| 久久国产福利国产秒拍| 亚洲欧美激情插| 国产性做久久久久久| 欧美精品久久99| 精品一二线国产| 中文字幕+乱码+中文字幕一区| 欧美精品亚洲二区| 97精品国产露脸对白| 亚洲伊人色欲综合网| 国产欧美一区二区精品秋霞影院| 成人99免费视频| 又紧又大又爽精品一区二区| 亚洲综合区在线| 国产精品美女久久久久av爽李琼| 成人av中文字幕| 精品一区二区三区日韩| 欧美一级久久久| 欧美唯美清纯偷拍| 亚洲一区二区三区激情| 中文字幕欧美区| 久久久久国色av免费看影院| 日韩一区二区在线免费观看| 欧美调教femdomvk| 色系网站成人免费| 91免费在线播放| 视频一区欧美精品| 夜色激情一区二区| 26uuu国产一区二区三区| 欧美日韩成人激情| 欧美日韩一级二级三级| 国产91在线观看| 国产一区二区伦理| 国产麻豆精品在线观看| 国产乱人伦偷精品视频不卡| 精品亚洲欧美一区| 国内不卡的二区三区中文字幕| 一区二区三区视频在线看| 中文字幕一区二区日韩精品绯色| 欧美一级艳片视频免费观看| 欧美美女一区二区在线观看| 欧美肥妇毛茸茸| 日韩一区和二区| 久久奇米777| 国产亚洲精品中文字幕| 久久精品在这里| 国产精品久久久久久久久久久免费看| 日韩欧美国产一区二区三区| 日韩免费看的电影| 久久久久久久电影| 国产精品三级av| 一区二区三区资源| 视频在线观看91| 国产在线精品一区二区 | 美女视频黄a大片欧美| 日韩成人av影视| 极品少妇xxxx精品少妇| 国产另类ts人妖一区二区| 成人精品亚洲人成在线| 在线亚洲高清视频| 9人人澡人人爽人人精品| 色综合久久天天| 亚洲精品国产第一综合99久久 | 免费不卡在线观看| 亚洲午夜在线观看视频在线| 亚洲成精国产精品女| 天堂蜜桃一区二区三区| 国产一区二区0| 色综合天天做天天爱| 99久久99久久精品免费观看| 欧美视频在线一区二区三区 | 国产精品自拍在线| 91免费观看国产| 欧美一区二区视频免费观看| 国产日韩高清在线| 亚洲18影院在线观看| 国产福利一区在线观看| 欧美日韩国产a| 国产欧美日韩在线看| 午夜日韩在线电影| 高清国产午夜精品久久久久久| 欧洲亚洲精品在线| 久久一留热品黄| 亚洲图片欧美色图| 国产成人免费视频| 亚洲人精品一区| 久久精品国产色蜜蜜麻豆| 一本色道久久加勒比精品| 精品欧美久久久| 亚洲一区在线免费观看| 国产成人精品影视| 日韩午夜三级在线| 一区二区三区日韩精品| 国产精品一区在线观看乱码 | 欧美乱妇15p| 中文字幕日韩精品一区| 久久精品国产第一区二区三区| 成人av在线电影| 欧美成人性战久久| 亚洲国产欧美另类丝袜| 99国产精品国产精品久久| 欧美sm美女调教| 亚洲成人动漫在线观看| 99国产精品国产精品毛片| 日本一区二区电影| 精品亚洲porn| 日韩一区二区三区在线视频| 亚洲国产综合视频在线观看| 99精品一区二区| 中文字幕制服丝袜成人av| 国产精品一区二区久久不卡| 欧美va亚洲va国产综合| 日韩影院在线观看| 欧美日韩综合色| 亚洲自拍偷拍图区| 99精品一区二区三区| 亚洲欧洲日产国码二区| 成人av在线影院| 综合久久国产九一剧情麻豆| 国产成人在线视频网址| 国产亚洲欧美激情| 国产福利一区在线| 国产精品卡一卡二| caoporen国产精品视频| 国产精品久久毛片av大全日韩| 国产91在线|亚洲| 中文字幕一区二区三区在线观看| bt欧美亚洲午夜电影天堂| 综合欧美一区二区三区| 色婷婷av一区二区三区大白胸| 樱桃国产成人精品视频| 欧美亚洲尤物久久| 日韩中文字幕一区二区三区| 91精品一区二区三区在线观看| 日本视频中文字幕一区二区三区| 欧美肥妇毛茸茸| 国产一区二区三区在线观看精品 | 一区二区三区自拍| 欧美系列日韩一区| 污片在线观看一区二区| 欧美一级久久久久久久大片| 另类调教123区| 国产亚洲一本大道中文在线| 粉嫩av一区二区三区| 综合久久综合久久| 欧美日韩免费观看一区三区| 日本三级亚洲精品| 国产欧美日韩在线观看| 一本色道久久综合狠狠躁的推荐| 首页综合国产亚洲丝袜| 欧美大片在线观看| 成人一级片在线观看|