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

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

?? mdb.c

?? DHCP服務器源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	    for (p = s -> pools; p; p = p -> next) {		lptr [FREE_LEASES] = &p -> free;		lptr [ACTIVE_LEASES] = &p -> active;		lptr [EXPIRED_LEASES] = &p -> expired;		lptr [ABANDONED_LEASES] = &p -> abandoned;		lptr [BACKUP_LEASES] = &p -> backup;		for (i = FREE_LEASES; i <= BACKUP_LEASES; i++) {		    for (l = *(lptr [i]); l; l = l -> next) {#if !defined (DEBUG_DUMP_ALL_LEASES)			if (l -> hardware_addr.hlen ||			    l -> uid_len ||			    (l -> binding_state != FTS_FREE))#endif			{			    if (!write_lease (l))				    return 0;			    num_written++;			}		    }		}	    }	}	log_info ("Wrote %d leases to leases file.", num_written);	if (!commit_leases ())		return 0;	return 1;}int lease_enqueue (struct lease *comp){	struct lease **lq, *prev, *lp;	/* No queue to put it on? */	if (!comp -> pool)		return 0;	/* Figure out which queue it's going to. */	switch (comp -> binding_state) {	      case FTS_FREE:		lq = &comp -> pool -> free;		comp -> pool -> free_leases++;		comp -> sort_time = comp -> ends;		break;	      case FTS_ACTIVE:		lq = &comp -> pool -> active;		comp -> sort_time = comp -> ends;		break;	      case FTS_EXPIRED:	      case FTS_RELEASED:	      case FTS_RESET:		lq = &comp -> pool -> expired;		comp -> sort_time = comp -> ends;		break;	      case FTS_ABANDONED:		lq = &comp -> pool -> abandoned;		comp -> sort_time = comp -> ends;		break;	      case FTS_BACKUP:		lq = &comp -> pool -> backup;		comp -> pool -> backup_leases++;		comp -> sort_time = comp -> ends;		break;	      default:		log_error ("Lease with bogus binding state: %d",			   comp -> binding_state);#if defined (BINDING_STATE_DEBUG)		abort ();#endif		return 0;	}	/* Insertion sort the lease onto the appropriate queue. */	prev = (struct lease *)0;	for (lp = *lq; lp; lp = lp -> next) {		if (lp -> sort_time >= comp -> sort_time)			break;		prev = lp;	}	if (prev) {		if (prev -> next) {			lease_reference (&comp -> next, prev -> next, MDL);			lease_dereference (&prev -> next, MDL);		}		lease_reference (&prev -> next, comp, MDL);	} else {		if (*lq) {			lease_reference (&comp -> next, *lq, MDL);			lease_dereference (lq, MDL);		}		lease_reference (lq, comp, MDL);	}	return 1;}/* For a given lease, sort it onto the right list in its pool and put it   in each appropriate hash, understanding that it's already by definition   in lease_ip_addr_hash. */void lease_instantiate (const unsigned char *val, unsigned len,			struct lease *lease){	struct class *class;	/* XXX If the lease doesn't have a pool at this point, it's an	   XXX orphan, which we *should* keep around until it expires,	   XXX but which right now we just forget. */	if (!lease -> pool) {		lease_hash_delete (lease_ip_addr_hash,				   lease -> ip_addr.iabuf,				   lease -> ip_addr.len, MDL);		return;	}			/* Put the lease on the right queue. */	lease_enqueue (lease);	/* Record the lease in the uid hash if possible. */	if (lease -> uid) {		uid_hash_add (lease);	}		/* Record it in the hardware address hash if possible. */	if (lease -> hardware_addr.hlen) {		hw_hash_add (lease);	}		/* If the lease has a billing class, set up the billing. */	if (lease -> billing_class) {		class = (struct class *)0;		class_reference (&class, lease -> billing_class, MDL);		class_dereference (&lease -> billing_class, MDL);		/* If the lease is available for allocation, the billing		   is invalid, so we don't keep it. */		if (lease -> binding_state == FTS_ACTIVE ||		    lease -> binding_state == FTS_EXPIRED ||		    lease -> binding_state == FTS_RELEASED ||		    lease -> binding_state == FTS_RESET)			bill_class (lease, class);		class_dereference (&class, MDL);	}	return;}/* Run expiry events on every pool.   This is called on startup so that   any expiry events that occurred after the server stopped and before it   was restarted can be run.   At the same time, if failover support is   compiled in, we compute the balance of leases for the pool. */void expire_all_pools (){	struct shared_network *s;	struct pool *p;	struct hash_bucket *hb;	int i;	struct lease *l;	struct lease **lptr [5];	/* First, go over the hash list and actually put all the leases	   on the appropriate lists. */	lease_hash_foreach (lease_ip_addr_hash, lease_instantiate);	/* Loop through each pool in each shared network and call the	   expiry routine on the pool. */	for (s = shared_networks; s; s = s -> next) {	    for (p = s -> pools; p; p = p -> next) {		pool_timer (p);		p -> lease_count = 0;		p -> free_leases = 0;		p -> backup_leases = 0;				lptr [FREE_LEASES] = &p -> free;		lptr [ACTIVE_LEASES] = &p -> active;		lptr [EXPIRED_LEASES] = &p -> expired;		lptr [ABANDONED_LEASES] = &p -> abandoned;		lptr [BACKUP_LEASES] = &p -> backup;		for (i = FREE_LEASES; i <= BACKUP_LEASES; i++) {		    for (l = *(lptr [i]); l; l = l -> next) {			p -> lease_count++;			if (l -> ends <= cur_time) {				if (l -> binding_state == FTS_FREE)					p -> free_leases++;				else if (l -> binding_state == FTS_BACKUP)					p -> backup_leases++;			}#if defined (FAILOVER_PROTOCOL)			if (p -> failover_peer &&			    l -> tstp > l -> tsfp &&			    !(l -> flags & ON_UPDATE_QUEUE)) {				l -> desired_binding_state = l -> binding_state;				dhcp_failover_queue_update (l, 1);			}#endif		    }		}	    }	}}void dump_subnets (){	struct lease *l;	struct shared_network *s;	struct subnet *n;	struct pool *p;	struct lease **lptr [5];	int i;	log_info ("Subnets:");	for (n = subnets; n; n = n -> next_subnet) {		log_debug ("  Subnet %s", piaddr (n -> net));		log_debug ("     netmask %s",		       piaddr (n -> netmask));	}	log_info ("Shared networks:");	for (s = shared_networks; s; s = s -> next) {	    log_info ("  %s", s -> name);	    for (p = s -> pools; p; p = p -> next) {		lptr [FREE_LEASES] = &p -> free;		lptr [ACTIVE_LEASES] = &p -> active;		lptr [EXPIRED_LEASES] = &p -> expired;		lptr [ABANDONED_LEASES] = &p -> abandoned;		lptr [BACKUP_LEASES] = &p -> backup;		for (i = FREE_LEASES; i <= BACKUP_LEASES; i++) {		    for (l = *(lptr [i]); l; l = l -> next) {			    print_lease (l);		    }		}	    }	}}HASH_FUNCTIONS (lease, const unsigned char *, struct lease, lease_hash_t,		lease_reference, lease_dereference)HASH_FUNCTIONS (host, const unsigned char *, struct host_decl, host_hash_t,		host_reference, host_dereference)HASH_FUNCTIONS (class, const char *, struct class, class_hash_t,		class_reference, class_dereference)#if defined (DEBUG_MEMORY_LEAKAGE) && \		defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)extern struct hash_table *dns_zone_hash;extern struct interface_info **interface_vector;extern int interface_count;dhcp_control_object_t *dhcp_control_object;extern struct hash_table *auth_key_hash;struct hash_table *universe_hash;struct universe **universes;int universe_count, universe_max;#if 0extern int end;#endif#if defined (COMPACT_LEASES)extern struct lease *lease_hunks;#endifvoid free_everything (){	struct subnet *sc = (struct subnet *)0, *sn = (struct subnet *)0;	struct shared_network *nc = (struct shared_network *)0,		*nn = (struct shared_network *)0;	struct pool *pc = (struct pool *)0, *pn = (struct pool *)0;	struct lease *lc = (struct lease *)0, *ln = (struct lease *)0;	struct interface_info *ic = (struct interface_info *)0,		*in = (struct interface_info *)0;	struct class *cc = (struct class *)0, *cn = (struct class *)0;	struct collection *lp;	void *st = (shared_networks		    ? (shared_networks -> next		       ? shared_networks -> next -> next : 0) : 0);	int i;	/* Get rid of all the hash tables. */	if (host_hw_addr_hash)		host_free_hash_table (&host_hw_addr_hash, MDL);	host_hw_addr_hash = 0;	if (host_uid_hash)		host_free_hash_table (&host_uid_hash, MDL);	host_uid_hash = 0;	if (lease_uid_hash)		lease_free_hash_table (&lease_uid_hash, MDL);	lease_uid_hash = 0;	if (lease_ip_addr_hash)		lease_free_hash_table (&lease_ip_addr_hash, MDL);	lease_ip_addr_hash = 0;	if (lease_hw_addr_hash)		lease_free_hash_table (&lease_hw_addr_hash, MDL);	lease_hw_addr_hash = 0;	if (host_name_hash)		host_free_hash_table (&host_name_hash, MDL);	host_name_hash = 0;	if (dns_zone_hash)		dns_zone_free_hash_table (&dns_zone_hash, MDL);	dns_zone_hash = 0;#if 0	if (auth_key_hash)		auth_key_free_hash_table (&auth_key_hash, MDL);#endif	auth_key_hash = 0;	omapi_object_dereference ((omapi_object_t **)&dhcp_control_object,				  MDL);	for (lp = collections; lp; lp = lp -> next) {	    if (lp -> classes) {		class_reference (&cn, lp -> classes, MDL);		do {		    if (cn) {			class_reference (&cc, cn, MDL);			class_dereference (&cn, MDL);		    }		    if (cc -> nic) {			class_reference (&cn, cc -> nic, MDL);			class_dereference (&cc -> nic, MDL);		    }		    group_dereference (&cc -> group, MDL);		    if (cc -> hash) {			    class_free_hash_table (&cc -> hash, MDL);			    cc -> hash = (struct hash_table *)0;		    }		    class_dereference (&cc, MDL);		} while (cn);		class_dereference (&lp -> classes, MDL);	    }	}	if (interface_vector) {	    for (i = 0; i < interface_count; i++) {		if (interface_vector [i])		    interface_dereference (&interface_vector [i], MDL);	    }	    dfree (interface_vector, MDL);	    interface_vector = 0;	}	if (interfaces) {	    interface_reference (&in, interfaces, MDL);	    do {		if (in) {		    interface_reference (&ic, in, MDL);		    interface_dereference (&in, MDL);		}		if (ic -> next) {		    interface_reference (&in, ic -> next, MDL);		    interface_dereference (&ic -> next, MDL);		}		omapi_unregister_io_object ((omapi_object_t *)ic);		if (ic -> shared_network) {		    if (ic -> shared_network -> interface)			interface_dereference				(&ic -> shared_network -> interface, MDL);		    shared_network_dereference (&ic -> shared_network, MDL);		}		interface_dereference (&ic, MDL);	    } while (in);	    interface_dereference (&interfaces, MDL);	}	/* Subnets are complicated because of the extra links. */	if (subnets) {	    subnet_reference (&sn, subnets, MDL);	    do {		if (sn) {		    subnet_reference (&sc, sn, MDL);		    subnet_dereference (&sn, MDL);		}		if (sc -> next_subnet) {		    subnet_reference (&sn, sc -> next_subnet, MDL);		    subnet_dereference (&sc -> next_subnet, MDL);		}		if (sc -> next_sibling)		    subnet_dereference (&sc -> next_sibling, MDL);		if (sc -> shared_network)		    shared_network_dereference (&sc -> shared_network, MDL);		group_dereference (&sc -> group, MDL);		if (sc -> interface)		    interface_dereference (&sc -> interface, MDL);		subnet_dereference (&sc, MDL);	    } while (sn);	    subnet_dereference (&subnets, MDL);	}	/* So are shared networks. */	if (shared_networks) {	    shared_network_reference (&nn, shared_networks, MDL);	    do {		if (nn) {		    shared_network_reference (&nc, nn, MDL);		    shared_network_dereference (&nn, MDL);		}		if (nc -> next) {		    shared_network_reference (&nn, nc -> next, MDL);		    shared_network_dereference (&nc -> next, MDL);		}		/* As are pools. */		if (nc -> pools) {		    pool_reference (&pn, nc -> pools, MDL);		    do {			struct lease **lptr [5];						if (pn) {			    pool_reference (&pc, pn, MDL);			    pool_dereference (&pn, MDL);			}			if (pc -> next) {			    pool_reference (&pn, pc -> next, MDL);			    pool_dereference (&pc -> next, MDL);			}						lptr [FREE_LEASES] = &pc -> free;			lptr [ACTIVE_LEASES] = &pc -> active;			lptr [EXPIRED_LEASES] = &pc -> expired;			lptr [ABANDONED_LEASES] = &pc -> abandoned;			lptr [BACKUP_LEASES] = &pc -> backup;			/* As (sigh) are leases. */			for (i = 0; i < 5; i++) {			    if (*lptr [i]) {				lease_reference (&ln, *lptr [i], MDL);				do {				    if (ln) {					lease_reference (&lc, ln, MDL);					lease_dereference (&ln, MDL);				    }				    if (lc -> next) {					lease_reference (&ln, lc -> next, MDL);					lease_dereference (&lc -> next, MDL);				    }				    if (lc -> billing_class)				       class_dereference (&lc -> billing_class,							  MDL);				    if (lc -> state)					free_lease_state (lc -> state, MDL);				    lc -> state = (struct lease_state *)0;				    if (lc -> n_hw)					lease_dereference (&lc -> n_hw, MDL);				    if (lc -> n_uid)					lease_dereference (&lc -> n_uid

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩午夜在线视频| 狠狠久久亚洲欧美| 国产高清久久久| 精品美女在线播放| 首页国产丝袜综合| 欧美综合视频在线观看| 国产精品白丝在线| 成人黄色综合网站| 国产精品女主播在线观看| 丁香另类激情小说| 国产欧美一区二区精品仙草咪| 精品在线一区二区三区| 日韩午夜精品电影| 精品制服美女久久| 久久久久久久性| 成人一区二区三区视频在线观看 | 欧美巨大另类极品videosbest | 日本一区二区三区四区在线视频| 国产精品一区二区黑丝| 国产欧美精品区一区二区三区| 成人午夜av在线| 亚洲欧美日韩中文播放| 精品视频一区二区三区免费| 美腿丝袜亚洲三区| 国产视频视频一区| 欧亚洲嫩模精品一区三区| 午夜不卡在线视频| 精品国产精品一区二区夜夜嗨| 成人午夜激情片| 五月婷婷另类国产| 中文幕一区二区三区久久蜜桃| www.av亚洲| 日韩av电影天堂| 中文字幕巨乱亚洲| 欧美日韩免费电影| 粉嫩一区二区三区在线看| 夜夜夜精品看看| 久久天天做天天爱综合色| 色综合久久天天| 激情成人综合网| 亚洲一区二区三区四区在线| 久久久噜噜噜久久人人看| 欧美亚洲综合久久| 国产精品一区二区果冻传媒| 三级欧美在线一区| 自拍偷拍欧美精品| 国产欧美视频在线观看| 欧美一区二区三区公司| 91老师片黄在线观看| 国产在线乱码一区二区三区| 午夜伦欧美伦电影理论片| 一区二区三区日韩欧美精品| 亚洲一线二线三线久久久| 久久久91精品国产一区二区精品| 777久久久精品| 欧美三级三级三级爽爽爽| 99国产精品久久久久久久久久 | 久久福利资源站| 青青青爽久久午夜综合久久午夜| 一区二区三区四区蜜桃| 中文字幕一区二区三区四区| 中文在线资源观看网站视频免费不卡| 欧美成人一区二区三区在线观看 | 欧美日韩综合在线免费观看| 99久久99久久久精品齐齐| www.色精品| 欧美主播一区二区三区美女| 一本大道久久精品懂色aⅴ| 97se亚洲国产综合在线| 一本色道久久综合亚洲精品按摩| 色综合久久六月婷婷中文字幕| 在线免费观看成人短视频| 色老头久久综合| 在线成人免费观看| 欧美一区二区在线免费播放| 欧美大尺度电影在线| 国产夜色精品一区二区av| 国产精品天干天干在观线| 亚洲欧美一区二区不卡| 亚洲国产精品一区二区www在线| 日韩主播视频在线| 国产一区二区三区电影在线观看| 国产福利一区二区三区在线视频| 成人激情小说乱人伦| 色国产精品一区在线观看| 中文字幕精品一区二区三区精品| 国产精品天天看| 午夜成人免费电影| 福利一区二区在线观看| 欧美午夜一区二区三区 | 7777精品久久久大香线蕉| 欧美一级理论片| 国产精品久久久久影院老司 | www.爱久久.com| 欧美成人精品福利| 亚洲黄色免费电影| 激情综合色播激情啊| 欧美三级电影在线观看| 久久久久久久一区| 日韩激情一二三区| 97久久久精品综合88久久| 日韩精品一区二区三区中文不卡| 亚洲丝袜精品丝袜在线| 狠狠色综合播放一区二区| 欧美主播一区二区三区| 国产精品电影一区二区| 精品一区二区三区免费毛片爱| 欧美在线观看你懂的| 国产精品久久久久久久久果冻传媒 | 丰满亚洲少妇av| 日韩欧美精品在线| 亚洲一级在线观看| 在线观看亚洲一区| 亚洲日本中文字幕区| 成人av电影在线网| 久久蜜臀精品av| 韩日欧美一区二区三区| 日韩一区二区三区精品视频| 亚洲制服丝袜av| 色欲综合视频天天天| 日韩国产欧美在线观看| 色欧美片视频在线观看在线视频| 一区精品在线播放| 91老师片黄在线观看| 伊人色综合久久天天人手人婷| 99久久精品免费观看| 樱桃国产成人精品视频| 91首页免费视频| 洋洋av久久久久久久一区| 在线观看日韩av先锋影音电影院| 亚洲精品中文在线| 欧美精品第一页| 国内精品久久久久影院薰衣草| 久久久久国产精品麻豆| 丰满白嫩尤物一区二区| 亚洲精品写真福利| 欧美精品在线观看一区二区| 麻豆一区二区三| 中文字幕乱码一区二区免费| 91久久精品一区二区三区| 日本成人在线不卡视频| 久久精品一区二区| 91在线国产福利| 亚洲高清免费观看| 欧美精品一区二区三区高清aⅴ | 国产在线播放一区| 亚洲精品日产精品乱码不卡| 5月丁香婷婷综合| 风流少妇一区二区| 爽好久久久欧美精品| 中文成人综合网| 日韩视频永久免费| 色网站国产精品| 韩国成人福利片在线播放| 亚洲视频 欧洲视频| 2021国产精品久久精品| 在线免费观看视频一区| 国产高清精品久久久久| 日本aⅴ亚洲精品中文乱码| 一区二区中文视频| 国产午夜亚洲精品不卡| 在线不卡一区二区| 91国产精品成人| 欧美性猛片xxxx免费看久爱| 国产乱码精品一区二区三区av| 亚洲午夜一区二区三区| 中文字幕免费一区| 亚洲精品在线观看网站| 91精品啪在线观看国产60岁| 欧美中文一区二区三区| va亚洲va日韩不卡在线观看| 国产乱色国产精品免费视频| 免费成人小视频| 人人狠狠综合久久亚洲| 日韩一区精品视频| 亚洲一区欧美一区| 亚洲女人的天堂| 亚洲丝袜制服诱惑| 亚洲日本在线a| 亚洲欧美电影一区二区| 国产精品国产成人国产三级| 亚洲人成小说网站色在线 | 成人高清免费在线播放| 国产成人夜色高潮福利影视| 韩国一区二区三区| 国产丶欧美丶日本不卡视频| 国产精品中文字幕日韩精品| 国产精品一二三| 99精品国产99久久久久久白柏| 91麻豆swag| 91精品国产手机| 精品国产乱码久久久久久蜜臀| 国产亚洲一区二区三区四区| 国产欧美一区二区精品性色| 国产精品久久久久久福利一牛影视| 亚洲欧洲一区二区三区| 亚洲成av人影院| 久久精品国产99久久6| 丁香一区二区三区| 日本丰满少妇一区二区三区|