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

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

?? timer.c

?? IPv6環(huán)境下的DHCP實現(xiàn)
?? C
字號:
/*	$KAME: timer.c,v 1.2 2002/05/22 12:42:41 jinmei Exp $	*//* * Copyright (C) 2002 WIDE Project. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the project nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#include <sys/types.h>#include <sys/time.h>#include <sys/socket.h>#include <sys/queue.h>#include <netinet/in.h>#include <unistd.h>#include <syslog.h>#include <stdlib.h>#include <string.h>#if defined(__NetBSD__) || defined(__OpenBSD__)#include <search.h>#endif#include "dhcp6.h"#include "config.h"#include "common.h"#include "timer.h"#define MILLION 1000000LIST_HEAD(, dhcp6_timer) timer_head;static struct timeval tm_sentinel;static struct timeval tm_max = {0x7fffffff, 0x7fffffff};static void timeval_add __P((struct timeval *, struct timeval *,			     struct timeval *));voiddhcp6_timer_init(){	LIST_INIT(&timer_head);	tm_sentinel = tm_max;}struct dhcp6_timer *dhcp6_add_timer(timeout, timeodata)	struct dhcp6_timer *(*timeout) __P((void *));	void *timeodata;{	struct dhcp6_timer *newtimer;	if ((newtimer = malloc(sizeof(*newtimer))) == NULL) {		dprintf(LOG_ERR, "%s" "can't allocate memory", FNAME);		return(NULL);	}	memset(newtimer, 0, sizeof(*newtimer));	if (timeout == NULL) {		dprintf(LOG_ERR, "%s" "timeout function unspecified", FNAME);		exit(1);	}	newtimer->expire = timeout;	newtimer->expire_data = timeodata;	newtimer->tm = tm_max;	LIST_INSERT_HEAD(&timer_head, newtimer, link);	return(newtimer);}voiddhcp6_remove_timer(timer)	struct dhcp6_timer **timer;{	LIST_REMOVE(*timer, link);	free(*timer);	*timer = NULL;}voiddhcp6_set_timer(tm, timer)	struct timeval *tm;	struct dhcp6_timer *timer;{	struct timeval now;	/* reset the timer */	gettimeofday(&now, NULL);	timeval_add(&now, tm, &timer->tm);	/* update the next expiration time */	if (TIMEVAL_LT(timer->tm, tm_sentinel))		tm_sentinel = timer->tm;	return;}/* * Check expiration for each timer. If a timer is expired, * call the expire function for the timer and update the timer. * Return the next interval for select() call. */struct timeval *dhcp6_check_timer(){	static struct timeval returnval;	struct timeval now;	struct dhcp6_timer *tm, *tm_next;	gettimeofday(&now, NULL);	tm_sentinel = tm_max;	for (tm = LIST_FIRST(&timer_head); tm; tm = tm_next) {		tm_next = LIST_NEXT(tm, link);				if (TIMEVAL_LEQ(tm->tm, now)) {			if ((*tm->expire)(tm->expire_data) == NULL)				continue; /* timer has been freed */		}		if (TIMEVAL_LT(tm->tm, tm_sentinel))			tm_sentinel = tm->tm;	}	if (TIMEVAL_EQUAL(tm_max, tm_sentinel)) {		/* no need to timeout */		return(NULL);	} else if (TIMEVAL_LT(tm_sentinel, now)) {		/* this may occur when the interval is too small */		returnval.tv_sec = returnval.tv_usec = 0;	} else		timeval_sub(&tm_sentinel, &now, &returnval);	return(&returnval);}struct timeval *dhcp6_timer_rest(timer)	struct dhcp6_timer *timer;{	struct timeval now;	static struct timeval returnval; /* XXX */	gettimeofday(&now, NULL);	if (TIMEVAL_LEQ(timer->tm, now)) {		syslog(LOG_DEBUG,		       "<%s> a timer must be expired, but not yet",		       __FUNCTION__);		returnval.tv_sec = returnval.tv_usec = 0;	} else		timeval_sub(&timer->tm, &now, &returnval);	return(&returnval);}/* result = a + b */static voidtimeval_add(a, b, result)	struct timeval *a, *b, *result;{	long l;	if ((l = a->tv_usec + b->tv_usec) < MILLION) {		result->tv_usec = l;		result->tv_sec = a->tv_sec + b->tv_sec;	}	else {		result->tv_usec = l - MILLION;		result->tv_sec = a->tv_sec + b->tv_sec + 1;	}}/* * result = a - b * XXX: this function assumes that a >= b. */voidtimeval_sub(a, b, result)	struct timeval *a, *b, *result;{	long l;	if ((l = a->tv_usec - b->tv_usec) >= 0) {		result->tv_usec = l;		result->tv_sec = a->tv_sec - b->tv_sec;	}	else {		result->tv_usec = MILLION + l;		result->tv_sec = a->tv_sec - b->tv_sec - 1;	}}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品国产一区二区三区| 91丨九色丨蝌蚪丨老版| 欧美激情艳妇裸体舞| 欧美性感一类影片在线播放| 国产乱码精品一品二品| 日韩精品三区四区| 亚洲欧洲在线观看av| 亚洲精品一区二区三区福利 | 亚洲男帅同性gay1069| 日韩一区二区麻豆国产| 欧美伊人精品成人久久综合97| 国产一区二区三区在线观看免费| 亚洲.国产.中文慕字在线| 国产精品理论片| 久久蜜桃av一区二区天堂| 日韩一区二区三区观看| 欧美亚洲国产一区二区三区va | 亚洲成a人v欧美综合天堂下载| 国产日韩精品久久久| 精品福利视频一区二区三区| 欧美日韩高清在线播放| 在线视频国内一区二区| 99re热这里只有精品视频| 粉嫩aⅴ一区二区三区四区| 国产精品欧美一级免费| 国产精品你懂的在线| 成人sese在线| 国产一区不卡在线| 天天综合网 天天综合色| 亚洲一区二区三区在线播放| 中文字幕一区二区三区在线观看| 久久久精品中文字幕麻豆发布| 日韩一区二区不卡| 69堂国产成人免费视频| 欧美日韩二区三区| 欧美群妇大交群中文字幕| 精品视频一区二区三区免费| 在线观看亚洲专区| 欧美三级中文字幕在线观看| 在线观看www91| 欧美三级电影一区| 在线不卡一区二区| 日韩欧美色电影| 精品日韩成人av| 久久久三级国产网站| 国产精品午夜电影| 国产精品久久久久久久久久久免费看 | 亚洲精品自拍动漫在线| 最近日韩中文字幕| 亚洲一区av在线| 午夜精品一区二区三区免费视频 | 成人激情文学综合网| 91在线国产福利| 色视频欧美一区二区三区| 在线观看国产一区二区| 3751色影院一区二区三区| 日韩一卡二卡三卡四卡| 久久久久一区二区三区四区| 国产日韩亚洲欧美综合| 亚洲人成影院在线观看| 午夜在线成人av| 日本v片在线高清不卡在线观看| 老司机午夜精品| 岛国精品在线播放| 在线观看视频欧美| 日韩欧美成人一区二区| 国产免费成人在线视频| 樱桃国产成人精品视频| 男人的j进女人的j一区| 国产91富婆露脸刺激对白| 欧美羞羞免费网站| 精品美女一区二区三区| 国产精品第四页| 日日骚欧美日韩| 豆国产96在线|亚洲| 欧美日韩三级一区| 久久精品视频一区二区| 亚洲已满18点击进入久久| 久久99精品久久久久久久久久久久 | 国模无码大尺度一区二区三区| 成人激情动漫在线观看| 欧美日韩国产免费| 久久婷婷一区二区三区| 亚洲一区影音先锋| 国产精品亚洲第一| 欧美日韩中字一区| 欧美激情一区二区三区四区 | 成人中文字幕电影| 欧美视频三区在线播放| 国产亚洲视频系列| 亚州成人在线电影| jlzzjlzz欧美大全| 精品欧美久久久| 亚洲综合一区二区三区| 国产成人av一区二区三区在线 | 国产美女娇喘av呻吟久久| 欧美亚洲丝袜传媒另类| 国产日韩欧美一区二区三区综合| 亚洲成人午夜影院| www.性欧美| 国产亚洲一区二区三区四区 | 精品久久国产97色综合| 亚洲国产裸拍裸体视频在线观看乱了| 国产激情一区二区三区桃花岛亚洲| 欧美日韩精品欧美日韩精品一| 国产精品久久久久精k8 | 成人app在线观看| 日韩精品一区二区三区视频播放 | 日韩限制级电影在线观看| 亚洲美腿欧美偷拍| 成人a级免费电影| 久久综合九色综合久久久精品综合 | jizzjizzjizz欧美| 久久久久久久久一| 久久精品国产亚洲高清剧情介绍| 色视频一区二区| 综合亚洲深深色噜噜狠狠网站| 国产成人a级片| 久久亚洲免费视频| 激情综合色播激情啊| 欧美一级专区免费大片| 香蕉乱码成人久久天堂爱免费| 91网站黄www| 国产精品国产三级国产普通话蜜臀 | 一区二区三区毛片| 色综合欧美在线| 亚洲丝袜另类动漫二区| 99久久国产综合色|国产精品| 欧美激情一区不卡| 国产99精品在线观看| 国产人妖乱国产精品人妖| 国产在线视频一区二区三区| 日韩欧美高清dvd碟片| 久久国产剧场电影| 精品日韩99亚洲| 国内精品国产三级国产a久久| 精品日韩在线观看| 国产乱码精品1区2区3区| 久久精品视频网| 国产91丝袜在线18| 亚洲欧洲国产日本综合| 91日韩一区二区三区| 一区二区三区中文字幕精品精品 | 蜜乳av一区二区| 精品国产sm最大网站| 国产黄色成人av| 国产精品日日摸夜夜摸av| 99视频精品全部免费在线| 亚洲猫色日本管| 欧美三级中文字| 免费看欧美女人艹b| 久久蜜桃av一区二区天堂| 高清日韩电视剧大全免费| 中文字幕一区二区三区蜜月| 色婷婷av一区二区三区gif| 香蕉成人啪国产精品视频综合网| 欧美一区二区三区影视| 国产麻豆精品在线| 最新欧美精品一区二区三区| 99re这里只有精品首页| 午夜精品视频在线观看| 精品国产百合女同互慰| 成人av在线影院| 亚洲一级不卡视频| 精品成人佐山爱一区二区| 波多野结衣中文一区| 亚洲大型综合色站| 久久色中文字幕| 色综合天天做天天爱| 蜜臀精品一区二区三区在线观看| 久久久精品2019中文字幕之3| 色域天天综合网| 久久精品国产亚洲5555| 亚洲色图视频网站| 日韩情涩欧美日韩视频| av在线不卡观看免费观看| 偷拍日韩校园综合在线| 国产欧美1区2区3区| 欧美日韩免费一区二区三区| 狠狠狠色丁香婷婷综合激情| 亚洲欧美日韩在线播放| 精品欧美一区二区久久| 色婷婷av一区| 国产精品一二三四| 婷婷开心激情综合| 中文在线一区二区| 日韩一级片网址| 91免费观看在线| 国产一区二区精品在线观看| 夜夜亚洲天天久久| 国产欧美一区二区三区在线看蜜臀 | 亚洲成av人在线观看| 国产精品美女久久久久高潮| 欧美一区二区成人| 91久久精品国产91性色tv| 国产精品69毛片高清亚洲| 亚洲成人免费电影| 18欧美亚洲精品| 久久久久久99精品| 日韩欧美国产一区二区在线播放 |