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

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

?? mdb.c

?? DHCP服務器源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
	if (comp -> scope)		binding_scope_dereference (&comp -> scope, MDL);	if (lease -> scope) {		binding_scope_reference (&comp -> scope, lease -> scope, MDL);		binding_scope_dereference (&lease -> scope, MDL);	}	if (comp -> agent_options)		option_chain_head_dereference (&comp -> agent_options, MDL);	if (lease -> agent_options) {		/* Only retain the agent options if the lease is still		   affirmatively associated with a client. */		if (lease -> next_binding_state == FTS_ACTIVE ||		    lease -> next_binding_state == FTS_EXPIRED)			option_chain_head_reference (&comp -> agent_options,						     lease -> agent_options,						     MDL);		option_chain_head_dereference (&lease -> agent_options, MDL);	}	/* Record the hostname information in the lease. */	if (comp -> client_hostname)		dfree (comp -> client_hostname, MDL);	comp -> client_hostname = lease -> client_hostname;	lease -> client_hostname = (char *)0;	if (lease -> on_expiry) {		if (comp -> on_expiry)			executable_statement_dereference (&comp -> on_expiry,							  MDL);		executable_statement_reference (&comp -> on_expiry,						lease -> on_expiry,						MDL);	}	if (lease -> on_commit) {		if (comp -> on_commit)			executable_statement_dereference (&comp -> on_commit,							  MDL);		executable_statement_reference (&comp -> on_commit,						lease -> on_commit,						MDL);	}	if (lease -> on_release) {		if (comp -> on_release)			executable_statement_dereference (&comp -> on_release,							  MDL);		executable_statement_reference (&comp -> on_release,						lease -> on_release, MDL);	}		/* Record the lease in the uid hash if necessary. */	if (enter_uid && comp -> uid) {		uid_hash_add (comp);	}		/* Record it in the hardware address hash if necessary. */	if (enter_hwaddr && lease -> hardware_addr.hlen) {		hw_hash_add (comp);	}	#if defined (FAILOVER_PROTOCOL)	comp -> cltt = lease -> cltt;	comp -> tstp = lease -> tstp;	comp -> tsfp = lease -> tsfp;#endif /* FAILOVER_PROTOCOL */	comp -> ends = lease -> ends;	comp -> next_binding_state = lease -> next_binding_state;      just_move_it:	if (!comp -> pool) {		log_error ("Supersede_lease: lease %s with no pool.",			   piaddr (comp -> ip_addr));		return 0;	}	/* Figure out which queue it's on. */	switch (comp -> binding_state) {	      case FTS_FREE:		lq = &comp -> pool -> free;		comp -> pool -> free_leases--;		break;	      case FTS_ACTIVE:		lq = &comp -> pool -> active;		break;	      case FTS_EXPIRED:	      case FTS_RELEASED:	      case FTS_RESET:		lq = &comp -> pool -> expired;		break;	      case FTS_ABANDONED:		lq = &comp -> pool -> abandoned;		break;	      case FTS_BACKUP:		lq = &comp -> pool -> backup;		comp -> pool -> backup_leases--;		break;	      default:		log_error ("Lease with bogus binding state: %d",			   comp -> binding_state);#if defined (BINDING_STATE_DEBUG)		abort ();#endif		return 0;	}	/* Remove the lease from its current place in its current	   timer sequence. */	prev = (struct lease *)0;	for (lp = *lq; lp; lp = lp -> next) {		if (lp == comp)			break;		prev = lp;	}	if (!lp) {		log_error ("Lease with binding state %s not on its queue.",			   (comp -> binding_state < 1 ||			    comp -> binding_state > FTS_LAST)			   ? "unknown"			   : binding_state_names [comp -> binding_state - 1]);		return 0;	}		if (prev) {		lease_dereference (&prev -> next, MDL);		if (comp -> next) {			lease_reference (&prev -> next, comp -> next, MDL);			lease_dereference (&comp -> next, MDL);		}	} else {		lease_dereference (lq, MDL);		if (comp -> next) {			lease_reference (lq, comp -> next, MDL);			lease_dereference (&comp -> next, MDL);		}	}	/* Make the state transition. */	if (commit || !pimmediate)		make_binding_state_transition (comp);	/* Put the lease back on the appropriate queue.    If the lease	   is corrupt (as detected by lease_enqueue), don't go any farther. */	if (!lease_enqueue (comp))		return 0;	/* If this is the next lease that will timeout on the pool,	   zap the old timeout and set the timeout on this pool to the	   time that the lease's next event will happen.		   	   We do not actually set the timeout unless commit is true -	   we don't want to thrash the timer queue when reading the	   lease database.  Instead, the database code calls the	   expiry event on each pool after reading in the lease file,	   and the expiry code sets the timer if there's anything left	   to expire after it's run any outstanding expiry events on	   the pool. */	if ((commit || !pimmediate) &&	    comp -> sort_time != MIN_TIME &&	    comp -> sort_time > cur_time &&	    (comp -> sort_time < comp -> pool -> next_event_time ||	     comp -> pool -> next_event_time == MIN_TIME)) {		comp -> pool -> next_event_time = comp -> sort_time;		add_timeout (comp -> pool -> next_event_time,			     pool_timer, comp -> pool,			     (tvref_t)pool_reference,			     (tvunref_t)pool_dereference);	}	if (commit) {		if (!write_lease (comp))			return 0;		if (!commit_leases ())			return 0;	}#if defined (FAILOVER_PROTOCOL)	if (propogate) {		comp -> desired_binding_state = comp -> binding_state;		if (!dhcp_failover_queue_update (comp, pimmediate))			return 0;	}#endif	/* If the current binding state has already expired, do an	   expiry event right now. */	/* XXX At some point we should optimize this so that we don't	   XXX write the lease twice, but this is a safe way to fix the	   XXX problem for 3.0 (I hope!). */	if ((commit || !pimmediate) &&	    comp -> sort_time < cur_time &&	    comp -> next_binding_state != comp -> binding_state)		pool_timer (comp -> pool);	return 1;}void make_binding_state_transition (struct lease *lease){#if defined (FAILOVER_PROTOCOL)	dhcp_failover_state_t *peer;	if (lease && lease -> pool && lease -> pool -> failover_peer)		peer = lease -> pool -> failover_peer;	else		peer = (dhcp_failover_state_t *)0;#endif	/* If the lease was active and is now no longer active, but isn't	   released, then it just expired, so do the expiry event. */	if (lease -> next_binding_state != lease -> binding_state &&	    ((#if defined (FAILOVER_PROTOCOL)		    peer &&		    lease -> binding_state == FTS_EXPIRED &&		    (lease -> next_binding_state == FTS_FREE ||		     lease -> next_binding_state == FTS_BACKUP)) ||	     (!peer &&#endif	      lease -> binding_state == FTS_ACTIVE &&	      lease -> next_binding_state != FTS_RELEASED))) {#if defined (NSUPDATE)		ddns_removals (lease);#endif		if (lease -> on_expiry) {			execute_statements ((struct binding_value **)0,					    (struct packet *)0, lease,					    (struct client_state *)0,					    (struct option_state *)0,					    (struct option_state *)0, /* XXX */					    &lease -> scope,					    lease -> on_expiry);			if (lease -> on_expiry)				executable_statement_dereference					(&lease -> on_expiry, MDL);		}				/* No sense releasing a lease after it's expired. */		if (lease -> on_release)			executable_statement_dereference (&lease -> on_release,							  MDL);		/* Get rid of client-specific bindings that are only		   correct when the lease is active. */		if (lease -> billing_class)			unbill_class (lease, lease -> billing_class);		if (lease -> agent_options)			option_chain_head_dereference (&lease -> agent_options,						       MDL);		if (lease -> client_hostname) {			dfree (lease -> client_hostname, MDL);			lease -> client_hostname = (char *)0;		}		if (lease -> host)			host_dereference (&lease -> host, MDL);		/* Send the expiry time to the peer. */		lease -> tstp = lease -> ends;	}	/* If the lease was active and is now released, do the release	   event. */	if (lease -> next_binding_state != lease -> binding_state &&	    ((#if defined (FAILOVER_PROTOCOL)		    peer &&		    lease -> binding_state == FTS_RELEASED &&		    (lease -> next_binding_state == FTS_FREE ||		     lease -> next_binding_state == FTS_BACKUP)) ||	     (!peer &&#endif	      lease -> binding_state == FTS_ACTIVE &&	      lease -> next_binding_state == FTS_RELEASED))) {#if defined (NSUPDATE)		ddns_removals (lease);#endif		if (lease -> on_release) {			execute_statements ((struct binding_value **)0,					    (struct packet *)0, lease,					    (struct client_state *)0,					    (struct option_state *)0,					    (struct option_state *)0, /* XXX */					    &lease -> scope,					    lease -> on_release);			executable_statement_dereference (&lease -> on_release,							  MDL);		}				/* A released lease can't expire. */		if (lease -> on_expiry)			executable_statement_dereference (&lease -> on_expiry,							  MDL);		/* Get rid of client-specific bindings that are only		   correct when the lease is active. */		if (lease -> billing_class)			unbill_class (lease, lease -> billing_class);		if (lease -> agent_options)			option_chain_head_dereference (&lease -> agent_options,						       MDL);		if (lease -> client_hostname) {			dfree (lease -> client_hostname, MDL);			lease -> client_hostname = (char *)0;		}		if (lease -> host)			host_dereference (&lease -> host, MDL);		/* Send the release time (should be == cur_time) to the		   peer. */		lease -> tstp = lease -> ends;	}#if defined (DEBUG_LEASE_STATE_TRANSITIONS)	log_debug ("lease %s moves from %s to %s",		   piaddr (lease -> ip_addr),		   binding_state_print (lease -> binding_state),		   binding_state_print (lease -> next_binding_state));#endif	lease -> binding_state = lease -> next_binding_state;	switch (lease -> binding_state) {	      case FTS_ACTIVE:#if defined (FAILOVER_PROTOCOL)		if (lease -> pool && lease -> pool -> failover_peer)			lease -> next_binding_state = FTS_EXPIRED;		else#endif			lease -> next_binding_state = FTS_FREE;		break;	      case FTS_EXPIRED:	      case FTS_RELEASED:	      case FTS_ABANDONED:	      case FTS_RESET:		lease -> next_binding_state = FTS_FREE;		/* If we are not in partner_down, leases don't go from		   EXPIRED to FREE on a timeout - only on an update.		   If we're in partner_down, they expire at mclt past		   the time we entered partner_down. */		if (lease -> pool -> failover_peer &&		    lease -> pool -> failover_peer -> me.state == partner_down)			lease -> tsfp =			    (lease -> pool -> failover_peer -> me.stos +			     lease -> pool -> failover_peer -> mclt);		break;	      case FTS_FREE:	      case FTS_BACKUP:		lease -> next_binding_state = lease -> binding_state;		break;	}#if defined (DEBUG_LEASE_STATE_TRANSITIONS)	log_debug ("lease %s: next binding state %s",		   piaddr (lease -> ip_addr),		   binding_state_print (lease -> next_binding_state));#endif}/* Copy the contents of one lease into another, correctly maintaining   reference counts. */int lease_copy (struct lease **lp,		struct lease *lease, const char *file, int line){	struct lease *lt = (struct lease *)0;	isc_result_t status;	status = lease_allocate (&lt, MDL);	if (status != ISC_R_SUCCESS)		return 0;	lt -> ip_addr = lease -> ip_addr;	lt -> starts = lease -> starts;	lt -> ends = lease -> ends;	lt -> timestamp = lease -> timestamp;	lt -> uid_len = lease -> uid_len;	lt -> uid_max = lease -> uid_max;	if (lease -> uid == lease -> uid_buf) {		lt -> uid = lt -> uid_buf;		memcpy (lt -> uid_buf, lease -> uid_buf, sizeof lt -> uid_buf);	} else if (!lease -> uid_max) {		lt -> uid = (unsigned char *)0;	} else {		lt -> uid = dmalloc (lt -> uid_max, MDL);		if (!lt -> uid) {			lease_dereference (&lt, MDL);			return 0;		}		memcpy (lt -> uid, lease -> uid, lease -> uid_max);	}	if (lease -> client_hostname) {		lt -> client_hostname =			dmalloc (strlen (lease -> client_hostname) + 1, MDL);		if (!lt -> client_hostname) {			lease_dereference (&lt, MDL);			return 0;		}		strcpy (lt -> client_hostname, lease -> client_hostname);	}	if (lease -> scope)		binding_scope_reference (&lt -> scope, lease -> scope, MDL);	if (lease -> agent_options)		option_chain_head_reference (&lt -> agent_options,					     lease -> agent_options, MDL);	host_reference (&lt -> host, lease -> host, file, line);	subnet_reference (&lt -> subnet, lease -> subnet, file, line);	pool_reference (&lt -> pool, lease -> pool, file, line);	class_reference (&lt -> billing_class,			 lease -> billing_class, file, line);	lt -> hardware_addr = lease -> hardware_addr;	if (lease -> on_expiry)		executable_statement_reference (&lt -> on_expiry,						lease -> on_expiry,						file, line);	if (lease -> on_commit)		executable_statement_reference (&lt -> on_commit,						lease -> on_commit,						file, line);	if (lease -> on_release)		executable_statement_reference (&lt -> on_release,						lease -> on_release,						file, line);	lt -> flags = lease -> flags;	lt -> tstp = lease -> tstp;	lt -> tsfp = lease -> tsfp;	lt -> cltt = lease -> cltt;	lt -> binding_state = lease -> binding_state;	lt -> next_binding_state = lease -> next_binding_state;	status = lease_reference (lp, lt, file, line);	lease_dereference (&lt, MDL);	return status == ISC_R_SUCCESS;}/* Release the specified lease and re-hash it as appropriate. */void release_lease (lease, packet)	struct lease *lease;	struct packet *packet;{	/* 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,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱国产乱300精品| 久久久亚洲精华液精华液精华液| 91精品久久久久久久91蜜桃| 精品久久国产字幕高潮| 亚洲男同1069视频| 国产麻豆日韩欧美久久| 91精品国产色综合久久不卡蜜臀 | 亚洲欧洲成人自拍| 美国一区二区三区在线播放| 97成人超碰视| 国产天堂亚洲国产碰碰| 蜜臀av性久久久久蜜臀aⅴ| 91社区在线播放| 国产亚洲综合在线| 久久99国产乱子伦精品免费| 色狠狠一区二区三区香蕉| 国产校园另类小说区| 麻豆91精品91久久久的内涵| 欧美做爰猛烈大尺度电影无法无天| 国产日产精品1区| 久久国产精品色婷婷| 欧美日韩国产在线观看| 依依成人精品视频| 色一情一乱一乱一91av| 国产精品久久免费看| 国产传媒欧美日韩成人| 亚洲精品一区二区三区四区高清| 五月天欧美精品| 精品视频全国免费看| 亚洲午夜一区二区三区| 色94色欧美sute亚洲线路一久| 中文字幕精品综合| jlzzjlzz欧美大全| 中文字幕日韩av资源站| 99精品欧美一区| 亚洲青青青在线视频| 91视频国产资源| 亚洲一二三四在线| 4438成人网| 奇米综合一区二区三区精品视频| 欧美一区二区三区白人| 日韩精品电影在线| 日韩免费视频线观看| 久久超碰97中文字幕| 精品久久久网站| 粉嫩蜜臀av国产精品网站| 久久久久97国产精华液好用吗| 国产91丝袜在线18| 亚洲黄色av一区| 欧美日本国产视频| 国产一区二区三区观看| 中文在线一区二区| 日本道在线观看一区二区| 一区二区三区在线观看动漫 | 日韩欧美色综合网站| 国内精品国产成人| 中文字幕一区不卡| 7799精品视频| 国产成人av资源| 亚洲精品你懂的| 日韩一二三四区| 97se亚洲国产综合自在线| 一区二区三区欧美日韩| 日韩视频免费直播| 成人丝袜18视频在线观看| 亚洲综合激情网| ww久久中文字幕| 一本色道久久综合狠狠躁的推荐| 日韩高清在线电影| 亚洲欧美自拍偷拍| 日韩一区二区影院| a级精品国产片在线观看| 日韩国产欧美一区二区三区| 国产日韩精品视频一区| 欧美日韩一区高清| 成人免费av资源| 日本vs亚洲vs韩国一区三区| 国产精品色噜噜| 日韩免费看的电影| 91激情五月电影| 丁香婷婷综合激情五月色| 亚洲一区二区美女| 中文字幕免费观看一区| 欧美大白屁股肥臀xxxxxx| 99久久99精品久久久久久| 麻豆国产欧美日韩综合精品二区| 中文字幕字幕中文在线中不卡视频| 日韩一区二区精品| 欧美性感一类影片在线播放| 国产成a人亚洲精| 久久国产婷婷国产香蕉| 天天综合色天天综合色h| 国产精品传媒入口麻豆| 国产婷婷精品av在线| 日韩一区二区三区四区五区六区| 91视频你懂的| 91污片在线观看| 高清久久久久久| 国产一区二区精品在线观看| 亚洲成a人v欧美综合天堂| 亚洲色图另类专区| 国产精品久久久久影院老司| 日韩精品一区二区三区在线播放| 在线观看成人免费视频| 成人av在线网站| 国产白丝精品91爽爽久久| 久久er99热精品一区二区| 秋霞午夜鲁丝一区二区老狼| 亚洲一区二区成人在线观看| 亚洲桃色在线一区| 综合网在线视频| 日韩一区在线看| 中文字幕中文字幕一区二区| 国产色产综合色产在线视频| 久久综合九色综合97婷婷女人| 日韩视频一区在线观看| 日韩欧美一区中文| 亚洲精品一区在线观看| 久久综合色婷婷| 国产清纯白嫩初高生在线观看91| 久久久影院官网| 国产精品美女久久久久久2018| 中文字幕+乱码+中文字幕一区| 国产亚洲欧美日韩在线一区| 欧美国产激情二区三区| 国产精品久久久久婷婷二区次| 亚洲欧洲av一区二区三区久久| 亚洲视频你懂的| 一区二区三区日韩精品视频| 一区二区三区免费| 日韩有码一区二区三区| 麻豆精品国产传媒mv男同| 国产精品99久久久久久宅男| 国产成人h网站| 在线观看亚洲一区| 欧美一区二区视频在线观看2020| 欧美成人欧美edvon| 久久久99免费| 亚洲欧美日韩综合aⅴ视频| 亚洲成人精品一区| 久久er99热精品一区二区| 成人福利电影精品一区二区在线观看| 成人av动漫网站| 911精品产国品一二三产区| 2020国产精品自拍| 综合亚洲深深色噜噜狠狠网站| 亚洲成人免费电影| 国产福利不卡视频| 欧美视频一区二区三区四区| 精品日韩成人av| 亚洲猫色日本管| 精品一区二区三区欧美| 99久久99久久精品免费观看 | 91精品福利在线| 欧美xxxxxxxx| 尤物av一区二区| 国产一区二区三区四区在线观看| 99国产精品国产精品毛片| 日韩欧美一级二级三级久久久| 中文字幕一区二区三区乱码在线| 日韩电影在线看| 91社区在线播放| 国产三级欧美三级日产三级99| 亚洲.国产.中文慕字在线| 成人一区二区三区视频| 欧美精品一二三| 亚洲精品视频在线| 国产精品资源站在线| 这里是久久伊人| 亚洲国产精品久久久久婷婷884| 精品亚洲成a人| 在线电影一区二区三区| 日韩伦理免费电影| 国产91在线观看| 久久蜜桃av一区二区天堂| 日韩精品国产精品| 欧美日韩亚洲丝袜制服| 日韩一区中文字幕| 福利91精品一区二区三区| 精品电影一区二区| 亚洲国产精品久久久久秋霞影院| 成人av免费观看| 中文字幕不卡三区| 国产成人亚洲综合色影视| 日韩欧美黄色影院| 日韩和欧美的一区| 欧美日韩二区三区| 亚洲国产va精品久久久不卡综合| 成人黄色软件下载| 国产精品色哟哟网站| 豆国产96在线|亚洲| 国产欧美一区二区在线| 精品一区二区久久| 欧美精品一区二区在线观看| 午夜精品福利久久久| 欧美精品1区2区| 香蕉成人伊视频在线观看| 欧美日韩亚洲高清一区二区| 亚洲免费av网站| 欧美色手机在线观看|