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

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

?? mdb.c

?? open source dhcp server client etc...
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
{	/* If there are statements to execute when the lease is	   released, execute them. */#if defined (NSUPDATE)	ddns_removals (lease);#endif	if (lease -> on_release) {		execute_statements ((struct binding_value **)0,				    packet, lease, (struct client_state *)0,				    packet -> options,				    (struct option_state *)0, /* XXX */				    &lease -> scope, lease -> on_release);		if (lease -> on_release)			executable_statement_dereference (&lease -> on_release,							  MDL);	}	/* We do either the on_release or the on_expiry events, but	   not both (it's possible that they could be the same,	   in any case). */	if (lease -> on_expiry)		executable_statement_dereference (&lease -> on_expiry, MDL);	if (lease -> binding_state != FTS_FREE &&	    lease -> binding_state != FTS_BACKUP &&	    lease -> binding_state != FTS_RELEASED &&	    lease -> binding_state != FTS_EXPIRED &&	    lease -> binding_state != FTS_RESET) {		if (lease -> on_commit)			executable_statement_dereference (&lease -> on_commit,							  MDL);		/* Blow away any bindings. */		if (lease -> scope)			binding_scope_dereference (&lease -> scope, MDL);		lease -> ends = cur_time;#if defined (FAILOVER_PROTOCOL)		if (lease -> pool && lease -> pool -> failover_peer) {			lease -> next_binding_state = FTS_RELEASED;		} else {			lease -> next_binding_state = FTS_FREE;		}#else		lease -> next_binding_state = FTS_FREE;#endif		supersede_lease (lease, (struct lease *)0, 1, 1, 1);	}}/* Abandon the specified lease (set its timeout to infinity and its   particulars to zero, and re-hash it as appropriate. */void abandon_lease (lease, message)	struct lease *lease;	const char *message;{	struct lease *lt = (struct lease *)0;	if (!lease_copy (&lt, lease, MDL))		return;	lt -> ends = cur_time; /* XXX */	lt -> next_binding_state = FTS_ABANDONED;	log_error ("Abandoning IP address %s: %s",	      piaddr (lease -> ip_addr), message);	lt -> hardware_addr.hlen = 0;	if (lt -> uid && lt -> uid != lt -> uid_buf)		dfree (lt -> uid, MDL);	lt -> uid = (unsigned char *)0;	lt -> uid_len = 0;	lt -> uid_max = 0;	supersede_lease (lease, lt, 1, 1, 1);	lease_dereference (&lt, MDL);}/* Abandon the specified lease (set its timeout to infinity and its   particulars to zero, and re-hash it as appropriate. */void dissociate_lease (lease)	struct lease *lease;{	struct lease *lt = (struct lease *)0;	if (!lease_copy (&lt, lease, MDL))		return;#if defined (FAILOVER_PROTOCOL)	if (lease -> pool && lease -> pool -> failover_peer) {		lt -> next_binding_state = FTS_RESET;	} else {		lt -> next_binding_state = FTS_FREE;	}#else	lt -> next_binding_state = FTS_FREE;#endif	lt -> ends = cur_time; /* XXX */	lt -> hardware_addr.hlen = 0;	if (lt -> uid && lt -> uid != lt -> uid_buf)		dfree (lt -> uid, MDL);	lt -> uid = (unsigned char *)0;	lt -> uid_len = 0;	lt -> uid_max = 0;	supersede_lease (lease, lt, 1, 1, 1);	lease_dereference (&lt, MDL);}/* Timer called when a lease in a particular pool expires. */void pool_timer (vpool)	void *vpool;{	struct pool *pool;	struct lease *lt = (struct lease *)0;	struct lease *next = (struct lease *)0;	struct lease *lease = (struct lease *)0;	struct lease **lptr [5];	TIME next_expiry = MAX_TIME;	int i;	pool = (struct pool *)vpool;#define FREE_LEASES 0	lptr [FREE_LEASES] = &pool -> free;#define ACTIVE_LEASES 1	lptr [ACTIVE_LEASES] = &pool -> active;#define EXPIRED_LEASES 2	lptr [EXPIRED_LEASES] = &pool -> expired;#define ABANDONED_LEASES 3	lptr [ABANDONED_LEASES] = &pool -> abandoned;#define BACKUP_LEASES 4	lptr [BACKUP_LEASES] = &pool -> backup;	for (i = FREE_LEASES; i <= BACKUP_LEASES; i++) {		/* If there's nothing on the queue, skip it. */		if (!*(lptr [i]))			continue;#if defined (FAILOVER_PROTOCOL)		if (pool -> failover_peer &&		    pool -> failover_peer -> me.state != partner_down) {			/* The secondary can't remove a lease from the			   active state except in partner_down. */			if (i == ACTIVE_LEASES &&			    pool -> failover_peer -> i_am == secondary)				continue;			/* Leases in an expired state don't move to			   free because of a timeout unless we're in			   partner_down. */			if (i == EXPIRED_LEASES)				continue;		}#endif				lease_reference (&lease, *(lptr [i]), MDL);		while (lease) {			/* Remember the next lease in the list. */			if (next)				lease_dereference (&next, MDL);			if (lease -> next)				lease_reference (&next, lease -> next, MDL);			/* If we've run out of things to expire on this list,			   stop. */			if (lease -> sort_time > cur_time) {				if (lease -> sort_time < next_expiry)					next_expiry = lease -> sort_time;				break;			}			/* If there is a pending state change, and			   this lease has gotten to the time when the			   state change should happen, just call			   supersede_lease on it to make the change			   happen. */			if (lease -> next_binding_state !=			    lease -> binding_state)				supersede_lease (lease,						 (struct lease *)0, 1, 1, 1);			lease_dereference (&lease, MDL);			if (next)				lease_reference (&lease, next, MDL);		}		if (next)			lease_dereference (&next, MDL);		if (lease)			lease_dereference (&lease, MDL);	}	if (next_expiry != MAX_TIME) {		pool -> next_event_time = next_expiry;		add_timeout (pool -> next_event_time, pool_timer, pool,			     (tvref_t)pool_reference,			     (tvunref_t)pool_dereference);	} else		pool -> next_event_time = MIN_TIME;}/* Locate the lease associated with a given IP address... */int find_lease_by_ip_addr (struct lease **lp, struct iaddr addr,			   const char *file, int line){	return lease_hash_lookup (lp, lease_ip_addr_hash,				  addr.iabuf, addr.len, file, line);}int find_lease_by_uid (struct lease **lp, const unsigned char *uid,		       unsigned len, const char *file, int line){	if (len == 0)		return 0;	return lease_hash_lookup (lp, lease_uid_hash, uid, len, file, line);}int find_lease_by_hw_addr (struct lease **lp,			   const unsigned char *hwaddr, unsigned hwlen,			   const char *file, int line){	if (hwlen == 0)		return 0;	return lease_hash_lookup (lp, lease_hw_addr_hash,				  hwaddr, hwlen, file, line);}/* Add the specified lease to the uid hash. */void uid_hash_add (lease)	struct lease *lease;{	struct lease *head = (struct lease *)0;	struct lease *next = (struct lease *)0;	/* If it's not in the hash, just add it. */	if (!find_lease_by_uid (&head, lease -> uid, lease -> uid_len, MDL))		lease_hash_add (lease_uid_hash, lease -> uid,				lease -> uid_len, lease, MDL);	else {		/* Otherwise, attach it to the end of the list. */		while (head -> n_uid) {			lease_reference (&next, head -> n_uid, MDL);			lease_dereference (&head, MDL);			lease_reference (&head, next, MDL);			lease_dereference (&next, MDL);		}		lease_reference (&head -> n_uid, lease, MDL);		lease_dereference (&head, MDL);	}}/* Delete the specified lease from the uid hash. */void uid_hash_delete (lease)	struct lease *lease;{	struct lease *head = (struct lease *)0;	struct lease *scan;	/* If it's not in the hash, we have no work to do. */	if (!find_lease_by_uid (&head, lease -> uid, lease -> uid_len, MDL)) {		if (lease -> n_uid)			lease_dereference (&lease -> n_uid, MDL);		return;	}	/* If the lease we're freeing is at the head of the list,	   remove the hash table entry and add a new one with the	   next lease on the list (if there is one). */	if (head == lease) {		lease_hash_delete (lease_uid_hash,				   lease -> uid, lease -> uid_len, MDL);		if (lease -> n_uid) {			lease_hash_add (lease_uid_hash,					lease -> n_uid -> uid,					lease -> n_uid -> uid_len,					lease -> n_uid, MDL);			lease_dereference (&lease -> n_uid, MDL);		}	} else {		/* Otherwise, look for the lease in the list of leases		   attached to the hash table entry, and remove it if		   we find it. */		for (scan = head; scan -> n_uid; scan = scan -> n_uid) {			if (scan -> n_uid == lease) {				lease_dereference (&scan -> n_uid, MDL);				if (lease -> n_uid) {					lease_reference (&scan -> n_uid,							 lease -> n_uid, MDL);					lease_dereference (&lease -> n_uid,							   MDL);				}				break;			}		}	}	lease_dereference (&head, MDL);}/* Add the specified lease to the hardware address hash. */void hw_hash_add (lease)	struct lease *lease;{	struct lease *head = (struct lease *)0;	struct lease *next = (struct lease *)0;	/* If it's not in the hash, just add it. */	if (!find_lease_by_hw_addr (&head, lease -> hardware_addr.hbuf,				    lease -> hardware_addr.hlen, MDL))		lease_hash_add (lease_hw_addr_hash,				lease -> hardware_addr.hbuf,				lease -> hardware_addr.hlen,				lease, MDL);	else {		/* Otherwise, attach it to the end of the list. */		while (head -> n_hw) {			lease_reference (&next, head -> n_hw, MDL);			lease_dereference (&head, MDL);			lease_reference (&head, next, MDL);			lease_dereference (&next, MDL);		}		lease_reference (&head -> n_hw, lease, MDL);		lease_dereference (&head, MDL);	}}/* Delete the specified lease from the hardware address hash. */void hw_hash_delete (lease)	struct lease *lease;{	struct lease *head = (struct lease *)0;	struct lease *next = (struct lease *)0;	/* If it's not in the hash, we have no work to do. */	if (!find_lease_by_hw_addr (&head, lease -> hardware_addr.hbuf,				    lease -> hardware_addr.hlen, MDL)) {		if (lease -> n_hw)			lease_dereference (&lease -> n_hw, MDL);		return;	}	/* If the lease we're freeing is at the head of the list,	   remove the hash table entry and add a new one with the	   next lease on the list (if there is one). */	if (head == lease) {		lease_hash_delete (lease_hw_addr_hash,				   lease -> hardware_addr.hbuf,				   lease -> hardware_addr.hlen, MDL);		if (lease -> n_hw) {			lease_hash_add (lease_hw_addr_hash,					lease -> n_hw -> hardware_addr.hbuf,					lease -> n_hw -> hardware_addr.hlen,					lease -> n_hw, MDL);			lease_dereference (&lease -> n_hw, MDL);		}	} else {		/* Otherwise, look for the lease in the list of leases		   attached to the hash table entry, and remove it if		   we find it. */		while (head -> n_hw) {			if (head -> n_hw == lease) {				lease_dereference (&head -> n_hw, MDL);				if (lease -> n_hw) {					lease_reference (&head -> n_hw,							 lease -> n_hw, MDL);					lease_dereference (&lease -> n_hw,							   MDL);				}				break;			}			lease_reference (&next, head -> n_hw, MDL);			lease_dereference (&head, MDL);			lease_reference (&head, next, MDL);			lease_dereference (&next, MDL);		}	}	if (head)		lease_dereference (&head, MDL);}/* Write all interesting leases to permanent storage. */int write_leases (){	struct lease *l;	struct shared_network *s;	struct pool *p;	struct host_decl *hp;	struct group_object *gp;	struct hash_bucket *hb;	int i;	int num_written;	struct lease **lptr [5];	/* Write all the dynamically-created group declarations. */	if (group_name_hash) {	    num_written = 0;	    for (i = 0; i < group_name_hash -> hash_count; i++) {		for (hb = group_name_hash -> buckets [i];		     hb; hb = hb -> next) {			gp = (struct group_object *)hb -> value;			if ((gp -> flags & GROUP_OBJECT_DYNAMIC) ||			    ((gp -> flags & GROUP_OBJECT_STATIC) &&			     (gp -> flags & GROUP_OBJECT_DELETED))) {				if (!write_group (gp))					return 0;				++num_written;			}		}	    }	    log_info ("Wrote %d group decls to leases file.", num_written);	}	/* Write all the deleted host declarations. */	if (host_name_hash) {	    num_written = 0;	    for (i = 0; i < host_name_hash -> hash_count; i++) {		for (hb = host_name_hash -> buckets [i];		     hb; hb = hb -> next) {			hp = (struct host_decl *)hb -> value;			if (((hp -> flags & HOST_DECL_STATIC) &&			     (hp -> flags & HOST_DECL_DELETED))) {				if (!write_host (hp))					return 0;				++num_written;			}		}	    }	    log_info ("Wrote %d deleted host decls to leases file.",		      num_written);	}	/* Write all the new, dynamic host declarations. */	if (host_name_hash) {	    num_written = 0;	    for (i = 0; i < host_name_hash -> hash_count; i++) {		for (hb = host_name_hash -> buckets [i];		     hb; hb = hb -> next) {			hp = (struct host_decl *)hb -> value;			if ((hp -> flags & HOST_DECL_DYNAMIC)) {				if (!write_host (hp))					++num_written;			}		}	    }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费高清在线一区| 精品99一区二区三区| 欧美日韩一区二区在线观看视频| 欧美色精品在线视频| 91精品国产入口在线| 久久久欧美精品sm网站| 亚洲欧洲精品天堂一级 | 久久福利资源站| 国产91综合一区在线观看| 91丨九色porny丨蝌蚪| 欧美精品自拍偷拍动漫精品| www久久精品| 亚洲精品日日夜夜| 九色综合狠狠综合久久| 91一区二区在线| 91精品国产综合久久福利软件 | 韩国成人福利片在线播放| 成人午夜激情影院| 欧美久久久一区| 国产视频一区在线播放| 亚洲国产sm捆绑调教视频| 国产成人在线色| 91精品国产欧美一区二区| 国产精品美女久久久久久久久久久| 亚洲第一av色| va亚洲va日韩不卡在线观看| 欧美一区二区不卡视频| 亚洲色图另类专区| 另类小说图片综合网| 一本色道久久综合亚洲aⅴ蜜桃 | 日韩精品欧美精品| 成人蜜臀av电影| 欧美一区二区三区视频| 综合激情网...| 国产在线精品免费av| 欧美日韩精品欧美日韩精品一| 中文欧美字幕免费| 麻豆免费精品视频| 欧美三日本三级三级在线播放| 中文字幕乱码久久午夜不卡| 青青草国产成人av片免费| 91精彩视频在线观看| 国产视频一区在线观看| 美国精品在线观看| 欧美日韩一区二区三区在线| 亚洲天堂2016| 粉嫩av一区二区三区| 精品福利av导航| 日韩国产欧美视频| 欧美三级蜜桃2在线观看| 中文字幕亚洲不卡| 风间由美性色一区二区三区| 精品国产一区二区亚洲人成毛片| 亚洲国产精品久久一线不卡| 91丨九色丨蝌蚪富婆spa| 国产三级欧美三级| 国产在线视频一区二区| 日韩一区二区三区免费看| 亚洲va欧美va国产va天堂影院| 93久久精品日日躁夜夜躁欧美| 国产日韩欧美综合在线| 国内精品伊人久久久久影院对白| 91精品国产色综合久久不卡蜜臀 | 欧美理论片在线| 亚洲激情男女视频| 一本久久a久久免费精品不卡| 国产精品久久久久一区| 成人免费视频播放| 国产精品欧美一区二区三区| 国产91露脸合集magnet| 日本一区二区三区四区| 国产二区国产一区在线观看| 久久久蜜臀国产一区二区| 国产高清久久久| 国产欧美一区二区三区沐欲| 国产福利一区二区三区| 国产精品欧美一区二区三区| 北岛玲一区二区三区四区 | 91啪亚洲精品| 日韩毛片高清在线播放| 色综合久久久久综合99| 亚洲视频你懂的| 日本精品一区二区三区高清| 亚洲精品视频在线观看网站| 在线国产电影不卡| 亚洲午夜激情av| 欧美精品精品一区| 美女视频黄 久久| 久久亚洲捆绑美女| 国产mv日韩mv欧美| 亚洲欧洲精品成人久久奇米网| 99久久精品免费精品国产| 伊人一区二区三区| 欧美影院午夜播放| 日本视频中文字幕一区二区三区| 日韩三级免费观看| 国产福利一区在线| 亚洲欧美在线视频| 欧美视频精品在线观看| 青青草国产成人av片免费| 久久久精品免费网站| 91一区二区在线| 日韩制服丝袜av| 久久综合九色综合欧美就去吻 | 国产精品盗摄一区二区三区| 一本到一区二区三区| 五月天丁香久久| 久久综合视频网| 97久久久精品综合88久久| 亚洲成a人片在线不卡一二三区 | 国产精品亚洲专一区二区三区| 中文一区二区在线观看| 在线观看不卡一区| 久久国产综合精品| 国产精品免费久久久久| 欧美日韩国产天堂| 国产精品影视网| 一区二区三区不卡视频在线观看| 欧美一级片在线看| 丁香网亚洲国际| 亚洲图片欧美一区| 久久噜噜亚洲综合| 欧美午夜精品一区二区三区| 狠狠色丁香婷婷综合| 亚洲精品国产成人久久av盗摄| 日韩免费看的电影| 91在线观看免费视频| 久久99九九99精品| 亚洲激情在线激情| 久久久精品tv| 欧美日韩国产在线观看| 成人av先锋影音| 日本亚洲视频在线| 亚洲天堂2016| 久久亚洲欧美国产精品乐播| 欧美人动与zoxxxx乱| 成人晚上爱看视频| 蜜桃av一区二区三区电影| 亚洲日本韩国一区| 久久这里只有精品6| 欧美日本高清视频在线观看| 99精品在线免费| 国产一区二区美女| 天天亚洲美女在线视频| 中文字幕一区三区| 欧美一二区视频| 在线免费亚洲电影| 盗摄精品av一区二区三区| 奇米777欧美一区二区| 亚洲激情在线激情| 亚洲国产精品黑人久久久| 日韩欧美不卡一区| 欧美日韩国产高清一区二区| 99热99精品| 国产精品99久久久久久宅男| 蜜桃av一区二区三区| 午夜久久久影院| 亚洲精品国产a久久久久久| 中文文精品字幕一区二区| wwww国产精品欧美| 欧美一区二区成人| 3d成人动漫网站| 欧美日韩久久不卡| 在线免费亚洲电影| 91首页免费视频| 成人av电影观看| 国产成人精品免费一区二区| 精品亚洲成a人| 伦理电影国产精品| 日产欧产美韩系列久久99| 亚洲国产另类精品专区| 玉米视频成人免费看| 亚洲图片激情小说| 国产精品久久久爽爽爽麻豆色哟哟| www国产精品av| 久久九九99视频| 久久久天堂av| 国产欧美一区二区精品性色| 久久久一区二区| 久久综合狠狠综合久久激情| 2023国产精华国产精品| www亚洲一区| 国产婷婷一区二区| 欧美国产日韩亚洲一区| 国产欧美一区二区精品久导航 | 成人午夜视频在线| 成人午夜视频在线观看| 99视频有精品| 97精品视频在线观看自产线路二| av在线不卡免费看| 97久久精品人人做人人爽| 在线免费观看日韩欧美| 欧美日韩黄色影视| 欧美电影免费观看高清完整版 | 黑人精品欧美一区二区蜜桃| 久久福利视频一区二区| 国内精品自线一区二区三区视频| 国产精品91xxx| 成人高清视频免费观看| 97精品久久久午夜一区二区三区 |