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

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

?? mdb.c

?? DHCP服務(wù)器源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
				    (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;			}		}	    }	    log_info ("Wrote %d new dynamic host decls to leases file.",		      num_written);	}#if defined (FAILOVER_PROTOCOL)	/* Write all the failover states. */	if (!dhcp_failover_write_all_states ())		return 0;#endif	/* Write all the leases. */	num_written = 0;	for (s = shared_networks; s; s = s -> next) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区网站| 久久精品国产一区二区三 | 伊人婷婷欧美激情| 国产精品欧美极品| 国产欧美精品区一区二区三区 | 丝袜亚洲另类欧美| 三级一区在线视频先锋| 爽好多水快深点欧美视频| 午夜视频久久久久久| 天天av天天翘天天综合网| 国产91丝袜在线18| 免费一级片91| 国产成人亚洲精品青草天美| 国产成人精品免费网站| 99久久777色| 在线精品亚洲一区二区不卡| 欧美日本一道本在线视频| 欧美日韩国产片| 日韩精品中文字幕一区二区三区 | 欧美三级日本三级少妇99| 欧美军同video69gay| 欧美一区二区视频在线观看| 精品成人a区在线观看| 国产丝袜在线精品| 国产精品久久久久久久久快鸭 | 国产午夜精品一区二区三区视频| 国产日韩av一区二区| 亚洲六月丁香色婷婷综合久久| 亚洲免费观看在线观看| 午夜日韩在线电影| 狠狠狠色丁香婷婷综合激情| 成人激情免费视频| 91国在线观看| 精品久久久久久久久久久久包黑料 | 精品福利视频一区二区三区| 中文成人av在线| 亚洲bt欧美bt精品777| 激情文学综合插| 91丨porny丨户外露出| 欧美男生操女生| 日本一区二区在线不卡| 亚洲一区二区三区四区在线观看 | 中文字幕中文字幕在线一区| 一区二区三区精品| 久久99精品一区二区三区三区| 成人一区二区三区视频在线观看 | 久久久噜噜噜久久人人看| 亚洲人成网站色在线观看| 日韩av一区二| 99久久婷婷国产精品综合| 欧美一区二区在线视频| 国产精品欧美久久久久一区二区| 午夜精品久久久久久久99水蜜桃| 精品一区二区三区视频在线观看| 色菇凉天天综合网| 亚洲视频免费观看| 久久成人免费电影| 欧美手机在线视频| 亚洲国产精品成人久久综合一区| 五月激情六月综合| 91小视频在线| 久久综合色鬼综合色| 亚洲一区二区三区自拍| 丰满少妇在线播放bd日韩电影| 欧美精品亚洲二区| 成人欧美一区二区三区1314| 久久99久久精品| 欧美二区在线观看| 一区二区三区在线免费观看| 国产宾馆实践打屁股91| 欧美一区二区高清| 亚洲午夜影视影院在线观看| 成人丝袜18视频在线观看| 精品久久人人做人人爰| 日韩精品乱码免费| 欧美影院精品一区| 国产精品国产三级国产普通话三级 | 久久黄色级2电影| 欧美视频三区在线播放| 日韩毛片高清在线播放| 国产精品影视在线| 日韩精品中文字幕在线不卡尤物| 午夜一区二区三区在线观看| aaa国产一区| 欧美国产欧美综合| 国产成人av影院| 久久久久久久免费视频了| 久久av中文字幕片| 日韩欧美色综合网站| 五月天一区二区| 欧美天天综合网| 亚洲精品欧美激情| 91美女蜜桃在线| 18成人在线视频| 99久久久国产精品免费蜜臀| 中文av字幕一区| av在线不卡免费看| 国产精品理论片在线观看| 国产成人在线免费观看| 久久一区二区三区四区| 国产一区二区三区久久久| 欧美精品一区二区久久婷婷| 激情综合色丁香一区二区| 精品日韩欧美在线| 国产乱码精品一品二品| 2021久久国产精品不只是精品| 久久成人免费网站| 椎名由奈av一区二区三区| 色综合久久综合| 亚洲图片自拍偷拍| 51精品秘密在线观看| 青青草成人在线观看| 日韩一区二区在线播放| 蜜桃av噜噜一区| www国产精品av| 国产不卡视频在线播放| 17c精品麻豆一区二区免费| 色天使久久综合网天天| 亚洲一区二区高清| 在线成人小视频| 国产一区二区在线观看视频| 国产女人18毛片水真多成人如厕| 不卡视频一二三| 亚洲在线观看免费| 日韩亚洲欧美一区二区三区| 国产一区二三区| 国产精品传媒视频| 欧美午夜视频网站| 精品在线亚洲视频| 国产精品成人一区二区艾草 | 久久女同互慰一区二区三区| 国产成人午夜电影网| 亚洲欧美另类在线| 欧美精品日韩精品| 国产精品综合久久| 一区二区在线观看免费| 日韩一区二区精品在线观看| 国产成人精品一区二区三区网站观看| 中文字幕一区二区三区四区不卡 | 亚洲国产精品av| 欧美日韩在线精品一区二区三区激情| 捆绑调教一区二区三区| 亚洲国产成人私人影院tom| 欧美色精品天天在线观看视频| 麻豆精品视频在线观看| 国产精品国产三级国产专播品爱网 | 日韩你懂的电影在线观看| 波多野结衣亚洲一区| 午夜伊人狠狠久久| 欧美激情综合五月色丁香小说| 欧美丝袜丝交足nylons图片| 国产乱人伦偷精品视频免下载 | 日本电影欧美片| 色欧美乱欧美15图片| 久久电影国产免费久久电影 | 91在线国内视频| 麻豆成人久久精品二区三区红| 中文字幕一区二区三区在线观看| 91精品国产入口| 91一区在线观看| 久久国内精品视频| 一个色综合网站| 国产亚洲精品资源在线26u| 欧美日韩精品一区二区天天拍小说| 国产精品资源在线看| 亚洲成人免费电影| 国产精品毛片无遮挡高清| 欧美一区二区三区四区在线观看| 99久久99久久久精品齐齐| 久久爱www久久做| 亚洲网友自拍偷拍| 中文字幕一区二区三| 欧美精品一区二区高清在线观看| 91国偷自产一区二区三区成为亚洲经典 | 色94色欧美sute亚洲线路一ni| 激情国产一区二区| 日精品一区二区| 一二三区精品福利视频| 亚洲国产精品ⅴa在线观看| 欧美成人艳星乳罩| 在线电影欧美成精品| 在线亚洲免费视频| 99视频精品在线| 国产精品中文字幕日韩精品| 日韩高清不卡在线| 亚洲成av人片在线观看无码| 最新高清无码专区| 中文字幕一区二区三区不卡在线| 26uuu国产在线精品一区二区| 欧美老人xxxx18| 欧美日韩国产免费一区二区 | 91精品福利在线一区二区三区| 91天堂素人约啪| 成人高清视频免费观看| 国产美女视频91| 久久精品国产亚洲a| 蜜桃在线一区二区三区| 五月天一区二区| 午夜精品久久久久| 亚洲国产精品久久人人爱|