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

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

?? lib.c

?? This is the first ever open source implementation of Dynamic Host Configuration Protocol for IPv6 (D
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include "stdhead.h"#include "lib.h"void write_to_log (char * str, int time_flag){   time_t curr_time;   int time_length;   char *str_curr_time;   int log_fd;    if ((log_fd= open (DEFAULT_EVENT_LOG_FILE, O_CREAT|O_APPEND|O_RDWR, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH)) == -1)   {	printf ("Failed to open event log file.\n");	return;   }      if (time_flag)   {	curr_time = time (&curr_time);	str_curr_time = ctime (&curr_time);	write (log_fd, str_curr_time, strlen (str_curr_time));	write (log_fd, "\t", 1);   }   if ((write (log_fd, str, strlen (str))) == -1)	printf ("Failed to log event.\n");   if (time_flag)	write (log_fd, "\n", 1);   close (log_fd);}	// Safe free functionvoid safe_free (void *ptr){   if (ptr)	free (ptr);}// Join an IPv6 multicast groupint mcast_join (int socket, char *interface_name, char *mcast_addr){   struct ipv6_mreq mreq6;      mreq6.ipv6mr_interface = if_nametoindex (interface_name);   inet_pton (AF_INET6, mcast_addr, &mreq6.ipv6mr_multiaddr);   return (setsockopt (socket, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq6, sizeof (mreq6)));}void build_linked_list (char *m, int len, struct DHCP_MESSAGE *dhcp_message){    int index = 0, i;    struct OPTIONS *opt;        dhcp_message -> u_msg_type.buffer[0] = m[index++];    for (i = 2; i >= 0; i--)	dhcp_message -> u_trans_id.buffer[i] = m[index++];    dhcp_message -> u_trans_id.buffer[3] = 0;    opt = (struct OPTIONS *) malloc (sizeof (struct OPTIONS));    read_option (m, index, len, opt);    dhcp_message -> opt = opt;}void print_linked_list_contents (struct DHCP_MESSAGE *dhcp_message){    struct OPTIONS *q;    struct DUID *d;    struct DUID1 *d1;    struct DUID2 *d2;    struct DUID3 *d3;    struct IA *ia;    struct IA_ADDRESS *ia_addr;    struct PREFERENCE *pref_ptr;    struct STATUS_CODE *sc_ptr;    int i;    char name[64];        printf ("\nMessage type = %d\n", dhcp_message -> u_msg_type.msg_type);    printf ("Transaction ID = %d\n\n", dhcp_message -> u_trans_id.trans_id);    q = dhcp_message -> opt;    if (!q)    {	printf ("No options defined!\n");	return;   }	    do    {	switch (q -> u_opt_code.opt_code)	{	    case OPTION_CLIENTID :	    case OPTION_SERVERID :		printf ("Option type = %d\n", q -> u_opt_code.opt_code);		printf ("DUID length = %d\n", q -> u_opt_len.opt_len);		d = q -> opt_data;		printf ("DUID type = %d\n", d -> u_duid_type.duid_type);				if (d -> u_duid_type.duid_type == 1)		{		    d1 = d -> duid_type;		    		    printf ("Time = %d\n", d1 -> u_time.time);		    printf ("Hardware type = %d\nHardware address = ", d1 -> u_haddr_type.haddr_type);		    for (i = 0; i < 6; i++)		    {			printf ("%x", d1 -> link_layer_address[i]);			if (i != 5)			    printf (":");		    }		    printf ("\n\n");		}		else if (d -> u_duid_type.duid_type == 2)		{		    d2 = d -> duid_type;		    		    printf ("Identifier length = %d\nIdentifier = ", d2 -> u_identifier_length.identifier_length);		    for (i = 0; i < d2 -> u_identifier_length.identifier_length; i++)			printf ("%d", d2 -> identifier[i]);		    printf ("\nDomain name = ");		    for (i = 0; i < d2 -> domain_name_len; i++)			printf ("%c", d2 -> domain_name[i]);		}		else if (d -> u_duid_type.duid_type == 3)		{		    d3 = d -> duid_type;		    		    printf ("Hardware type = %d\nHardware address = ", d3 -> u_haddr_type.haddr_type);		    for (i = 0; i < 6; i++)		    {			printf ("%x", d3 -> link_layer_address[i]);			if (i != 5)			    printf (":");		    }		    printf ("\n\n");		}    				q = d -> opt;		break;			    case OPTION_IA :		printf ("Option type = IA option\n");		printf ("option length = %d\n", q -> u_opt_len.opt_len);		ia = q -> opt_data;		printf ("IAID = %x\n", ia -> u_iaid.iaid);		printf ("T1 = %d\n", ia -> u_t1.t1);		printf ("T2 = %d\n", ia -> u_t2.t2);		printf ("Status code for IA = %d\n\n", ia -> status);		q = ia -> opt;		break;			    case OPTION_IAADDR :		printf ("Option type = IA address option\n");		printf ("option length = %d\n", q -> u_opt_len.opt_len);		ia_addr = q -> opt_data;		printf ("Temporary address bit = %d\n", ia_addr -> t_bit);		printf ("Address status = %d\n", ia_addr -> addr_status);		printf ("Prefix length of the address = %d\n", ia_addr -> prefix_length);		printf ("IPv6 Address = %s\n", inet_ntop (AF_INET6, ia_addr -> addr, name, 64));		printf ("Preferred lifetime = %d", ia_addr -> u_pref_lifetime.pref_lifetime);		printf ("\nValid lifetime = %d", ia_addr -> u_valid_lifetime.valid_lifetime);		printf ("\n\n");		q = ia_addr -> opt;		break;			    case OPTION_PREFERENCE :		printf ("Option type = Preference option\n");		printf ("option length = %d\n", q -> u_opt_len.opt_len);		pref_ptr = q -> opt_data;				printf ("Preference value = %d\n\n", pref_ptr -> preference_value);		q = pref_ptr -> opt;		break;			    case OPTION_STATUS_CODE :		printf ("Option type = Status code\n");		printf ("option length = %d\n", q -> u_opt_len.opt_len);		sc_ptr = q -> opt_data;				printf ("Status code = %d\nStatus message = ", sc_ptr -> u_status_code.status_code);		for (i = 0; i < q -> u_opt_len.opt_len - 2; i++)		    printf ("%c", sc_ptr -> message[i]);		printf ("\n\n");		q = sc_ptr -> opt;		break;			   default :		printf ("Invalid option type\n\n");		q = 0;		break;	}    }    while (q);}/*     This function converts the message from the linked list into a character    buffer. It returns the length of the buffer.*/int store_in_buffer (struct DHCP_MESSAGE *dhcp_message, char *buff){    int i;    char *start = buff;    struct OPTIONS *options_ptr;    struct DUID *duid_ptr;    struct DUID1 *duid1_ptr;    struct DUID2 *duid2_ptr;    struct DUID3 *duid3_ptr;    struct IA *ia_ptr;    struct IA_ADDRESS *ia_addr_ptr;    struct PREFERENCE *pref_ptr;    struct STATUS_CODE *sc_ptr;    // MESSAGE TYPE    *buff = dhcp_message->u_msg_type.buffer[0];    buff++;        // TRANSACTION ID    for (i = 2; i >= 0; i--)    {	*buff = dhcp_message->u_trans_id.buffer[i];	buff++;    }        options_ptr = dhcp_message->opt;    while (options_ptr)    {	// OPTIONS CODE	*buff = options_ptr->u_opt_code.buffer[1];	buff++;    	*buff = options_ptr->u_opt_code.buffer[0];	buff++;	    	// OPTIONS LEN        *buff = options_ptr->u_opt_len.buffer[1];        buff++;        *buff = options_ptr->u_opt_len.buffer[0];        buff++;    	switch (options_ptr -> u_opt_code.opt_code)        {    	    case OPTION_CLIENTID :	    case OPTION_SERVERID :		duid_ptr = (struct DUID *) options_ptr->opt_data;    				// DUID TYPE		*buff = duid_ptr->u_duid_type.buffer[1];    		buff++;    		*buff = duid_ptr->u_duid_type.buffer[0];    		buff++;				switch (duid_ptr -> u_duid_type.duid_type)		{		    case 1 :					duid1_ptr = (struct DUID1 *) duid_ptr->duid_type;    			// DUID HARDWARE ADDRESS TYPE    			*buff = duid1_ptr->u_haddr_type.buffer[1];        		buff++;	   		*buff = duid1_ptr->u_haddr_type.buffer[0];			buff++;			// Time field			for (i = 3; i >= 0; i--)			{			    *buff = duid1_ptr->u_time.buffer[i];					    buff++;		        }						// DUID HARDWARE ADDRESS			for (i = duid1_ptr -> haddr_len; i >= 0; i--)			{			    *buff = duid1_ptr->link_layer_address[i];					    buff++;		        }			break;					    case 2 :    			duid2_ptr = (struct DUID2 *) duid_ptr->duid_type;    			// Identifier length    			*buff = duid2_ptr->u_identifier_length.buffer[1];        		buff++;	   		*buff = duid2_ptr->u_identifier_length.buffer[0];			buff++;			// Identifier			for (i = duid2_ptr->u_identifier_length.identifier_length; i >= 0; i--)			{			    *buff = duid2_ptr-> identifier[i];			    buff++;		        }						// Domain name			for (i = duid2_ptr -> domain_name_len; i >= 0; i--)			{			    *buff = duid2_ptr-> domain_name[i];					    buff++;		        }			break;					    case 3 :			duid3_ptr = (struct DUID3 *) duid_ptr->duid_type;            			// DUID HARDWARE ADDRESS TYPE    			*buff = duid3_ptr->u_haddr_type.buffer[1];        		buff++;	   		*buff = duid3_ptr->u_haddr_type.buffer[0];			buff++;			// DUID HARDWARE ADDRESS			for (i = duid3_ptr -> haddr_len; i >= 0; i--)			{			    *buff = duid3_ptr->link_layer_address[i];					    buff++;		        }			break;		}			    		// GO TO THE NEXT OPTIONS HEADER		options_ptr = duid_ptr->opt;		break;			    case OPTION_IA :		// IA OPTION DATA		ia_ptr = (struct IA *)options_ptr->opt_data;       		// IAID    		for (i = 3; i >= 0; i--)		{	    	    *buff = ia_ptr->u_iaid.buffer[i];	    	    buff++;		}	        		//  T1    		for (i = 3; i >= 0; i--)    		{	    	    *buff = ia_ptr->u_t1.buffer[i];	    	    buff++;		}	    		// T2		for (i = 3; i >= 0; i--)		{	    	    *buff = ia_ptr->u_t2.buffer[i];	    	    buff++;		}    		// STATUS    		*buff = ia_ptr->status;    		buff++;       		options_ptr = ia_ptr->opt;		break;	    	    case OPTION_IAADDR :		ia_addr_ptr = (struct IA_ADDRESS *) options_ptr->opt_data;   		// ADDRESS STATUS		*buff = ia_addr_ptr->addr_status;				// TEMPORARY ADDRESS BIT		if (ia_addr_ptr -> t_bit)		    *buff = *buff & (1 << 7);		else		    *buff = *buff & (0 << 7);		buff++;    		//  PREFIX LENGTH    		*buff = ia_addr_ptr->prefix_length;		buff++;        		// IPv6 ADDRESS		for (i = 15; i >= 0; i--)		{	    	    *buff = ia_addr_ptr->addr[i];	    	    buff++;		}    		// PREFERRED LIFETIME		for (i = 3; i >= 0; i--)		{	    	    *buff = ia_addr_ptr->u_pref_lifetime.buffer[i];	    	    buff++;		}		// VALID LIFETIME		for (i = 3; i >= 0; i--)		{	    	    *buff = ia_addr_ptr->u_valid_lifetime.buffer[i];	    	    buff++;		}    		// OPTIONS FIELD OF THE IA ADDRESS OPTION		// Not considered yet		// NEXT OPTION		options_ptr = ia_addr_ptr->opt;		break;			    case OPTION_PREFERENCE :		pref_ptr = (struct PREFERENCE *) options_ptr -> opt_data;				// Preference value		*buff = pref_ptr -> preference_value;		buff++;				// Next option		options_ptr = pref_ptr -> opt;		break;			    case OPTION_STATUS_CODE :		sc_ptr = (struct STATUS_CODE *) options_ptr -> opt_data;				// Status code		for (i = 1; i >= 0; i--)		{		    *buff = sc_ptr -> u_status_code.buffer[i];		    buff++;		}				// Status message		for (i = options_ptr -> u_opt_len.opt_len - 2; i >= 0; i--)		{		    *buff = sc_ptr -> message[i];		    buff++;		}		// NEXT OPTION		options_ptr = sc_ptr->opt;		break;	}    }	    // RETURN THE TOTAL NUMBER OF BYTES    return (abs (start-buff));}u_int8_t convert_character_to_hex (char ch){    u_int8_t hex;        if (ch >= '0' && ch <= '9')    	hex = ch - '0';    else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区三区二区| 久久精品日产第一区二区三区高清版 | 国产丶欧美丶日本不卡视频| 99精品偷自拍| 久久在线观看免费| 舔着乳尖日韩一区| 91免费观看在线| 国产亚洲福利社区一区| 三级一区在线视频先锋| 99综合影院在线| 久久久久久久国产精品影院| 亚洲电影在线免费观看| 色综合视频在线观看| 国产拍揄自揄精品视频麻豆| 美女视频黄 久久| 欧美日本一道本| 亚洲一区免费视频| 一本大道av伊人久久综合| 国产女主播视频一区二区| 激情综合网av| 精品久久久久久综合日本欧美 | 日韩av一区二区三区四区| 色婷婷久久久综合中文字幕| 国产精品毛片久久久久久| 国产一区二三区| 久久午夜免费电影| 捆绑变态av一区二区三区| 欧美另类久久久品| 天天综合日日夜夜精品| 欧美日韩在线三级| 亚洲国产一区二区三区青草影视 | 欧美乱熟臀69xxxxxx| 亚洲第一综合色| 欧美日韩一区二区三区高清| 亚洲成人自拍网| 欧美精品自拍偷拍| 蜜桃传媒麻豆第一区在线观看| 欧美一区二区国产| 久久91精品久久久久久秒播| 中文字幕一区二区三区不卡在线| 99视频超级精品| 一区二区三区欧美亚洲| 欧美探花视频资源| 日韩av一区二| 久久综合色天天久久综合图片| 国产乱码精品1区2区3区| 久久先锋影音av| www..com久久爱| 亚洲自拍偷拍av| 日韩一区二区三区免费看| 老司机免费视频一区二区三区| 国产婷婷色一区二区三区| 成人涩涩免费视频| 亚洲影院在线观看| 欧美一区二区视频在线观看2022| 免费精品视频在线| 国产日韩欧美亚洲| 欧美综合欧美视频| 蜜桃视频在线一区| 国产女同互慰高潮91漫画| 91福利视频网站| 久久精品久久久精品美女| 日本一区二区三区四区在线视频 | 亚洲精品videosex极品| 欧美日韩视频在线观看一区二区三区| 日韩在线一区二区| 国产精品女同互慰在线看| 在线观看日韩精品| 国产一区欧美日韩| 亚洲电影你懂得| 中文字幕va一区二区三区| 欧美丝袜丝nylons| 国产·精品毛片| 日韩国产欧美在线观看| 国产欧美日韩不卡| 欧美精品成人一区二区三区四区| 国产成人精品一区二区三区四区 | 三级影片在线观看欧美日韩一区二区| 精品国产免费人成在线观看| 色综合天天综合| 国产伦精一区二区三区| 亚洲成va人在线观看| 国产精品久久精品日日| 日韩西西人体444www| av一区二区不卡| 久久99精品国产.久久久久久 | 蜜臀精品一区二区三区在线观看| 久久久国际精品| 日韩欧美高清在线| 欧美日韩激情在线| 99久久er热在这里只有精品15| 美女脱光内衣内裤视频久久网站| 国产精品综合二区| 视频一区二区三区入口| 亚洲六月丁香色婷婷综合久久| 精品乱人伦小说| 欧美一区二区三区精品| 欧美性色欧美a在线播放| 91在线云播放| 99久久综合国产精品| 国产精品亚洲视频| 国产一区二区三区四区在线观看| 日韩成人精品在线观看| 丝瓜av网站精品一区二区| 亚洲一区二区三区四区在线| 亚洲欧洲性图库| 国产精品久久久久久久久免费丝袜 | 日韩va欧美va亚洲va久久| 亚洲午夜精品网| 一区二区三区在线视频免费 | 久久久亚洲综合| 欧美刺激午夜性久久久久久久| 欧美美女一区二区在线观看| 91美女片黄在线| 91美女在线观看| 91免费在线播放| 在线观看视频91| 欧美日韩精品一区二区天天拍小说| 色婷婷激情一区二区三区| 91丨porny丨中文| 在线亚洲人成电影网站色www| 91网站最新地址| 91成人免费电影| 欧美老女人在线| 日韩片之四级片| 精品久久一区二区三区| 久久嫩草精品久久久精品一| 国产亚洲福利社区一区| 国产精品夫妻自拍| 一区二区在线免费| 亚洲成人黄色小说| 久久99国产精品尤物| 成人高清视频在线| 色域天天综合网| 欧美久久一二三四区| 26uuu亚洲综合色| 综合久久给合久久狠狠狠97色| 一区二区在线观看视频| 免费人成黄页网站在线一区二区| 国模大尺度一区二区三区| 91在线丨porny丨国产| 欧美精品第一页| 欧美高清在线一区二区| 亚洲一卡二卡三卡四卡五卡| 日韩中文字幕亚洲一区二区va在线| 精品一区二区三区在线播放 | 国产一区二区剧情av在线| 成人黄色小视频在线观看| 欧美揉bbbbb揉bbbbb| 久久网站热最新地址| 一区二区三区中文字幕电影| 久久精品久久综合| 91香蕉视频在线| 久久综合一区二区| 亚洲国产精品自拍| 国产91色综合久久免费分享| 欧美日韩色一区| 中文字幕乱码一区二区免费| 亚洲国产成人精品视频| 国产精品一区专区| 欧美日韩久久不卡| 国产精品短视频| 精品一区二区三区免费观看| 色香蕉久久蜜桃| 日本一区二区视频在线| 日本大胆欧美人术艺术动态| 91亚洲永久精品| 久久嫩草精品久久久久| 日韩精品五月天| 成人免费毛片aaaaa**| 日韩欧美一区在线| 亚洲小说欧美激情另类| 成人av电影在线网| 欧美精品一区二区在线观看| 亚洲一区av在线| 99国产精品久久久久久久久久| 欧美不卡一二三| 天堂影院一区二区| 欧美亚洲一区二区在线| 国产精品久久久久久久裸模| 国产主播一区二区| 欧美一区二区成人6969| 亚洲成av人影院| 在线视频国产一区| 亚洲欧美偷拍三级| av一区二区久久| 欧美国产精品劲爆| 国产成a人无v码亚洲福利| 精品国产乱码久久久久久久久| 水蜜桃久久夜色精品一区的特点 | 欧美老肥妇做.爰bbww| 亚洲精品乱码久久久久久黑人| 成人一级片在线观看| 国产丝袜在线精品| 国产成人aaa| 国产精品初高中害羞小美女文| 风间由美性色一区二区三区| 久久久久亚洲综合| 国产91精品一区二区| 国产精品伦一区|