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

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

?? ospf_receive_packet.c

?? vxworks下ospf協議棧
?? C
?? 第 1 頁 / 共 2 頁
字號:
	swapped_auth_type = net_to_host_short (sptr_ospf_header->authentication_type);	if (swapped_auth_type == OSPF_AUTHENTICATION_MD5)		{		if (sptr_ospf_header->checksum == 0x0000)			{			return (PASS);			}		else			{			OSPF_PRINTF_ALARM (OSPF_ALARM_PRINTF, "OSPF: Invalid checksum in ospf packet header\r\n");			return (FAIL);			}		}	else		{		authentication_field = sptr_ospf_header->authentication_field;			/* save the authentication field in a temporary buffer */		/* sptr_ospf_header->authentication_field.key[0] = sptr_ospf_header->authentication_field.key[1] = 0x00000000L; */		memset (sptr_ospf_header->authentication_field.key_or_plain_text_passwd, 0x0, OSPF_AUTHENTICATION_SIMPLE_SIZE);		if ((calculate_ip_checksum (NULL, (BYTE *) sptr_ospf_header, (USHORT) size_of_ospf_packet) == 0x0000))			{			return_type = PASS;			}		else			{			OSPF_PRINTF_ALARM (OSPF_ALARM_PRINTF, "OSPF: Invalid checksum in ospf packet header\r\n");			return_type = FAIL;			}		sptr_ospf_header->authentication_field = authentication_field;			/* restore authentication field to it's original value */		return (return_type);		}}/*****************************************//* section 8.2, second bullet item under verifying OSPF packet header (page 57-58) */static enum TEST ospf_verify_area_id_and_get_neighbor (OSPF_HEADER *sptr_ospf_header,OSPF_INTERFACE **ptr_to_sptr_interface, ULONG source_address,	OSPF_NEIGHBOR **ptr_to_sptr_neighbor){	ULONG router_id;	ULONG area_id;	enum TEST test_result;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_verify_area_id_and_get_neighbor\r\n");	router_id = net_to_host_long (sptr_ospf_header->router_id);	area_id = net_to_host_long (sptr_ospf_header->area_id);	/* check if the Area ID of the packet matches the Area ID of the receiving interface */	if (( (*ptr_to_sptr_interface) != NULL ) && (area_id == (*ptr_to_sptr_interface)->sptr_area->area_id))		{		/*		 * the packet has been sent over a single hop, and is not a virtual link, so make sure the packet's IP source address is on		 * the same network as the receiving interface		 */		if ( (*ptr_to_sptr_interface)->type != OSPF_POINT_TO_POINT)			{			if ((source_address & (*ptr_to_sptr_interface)->netmask) != ( (*ptr_to_sptr_interface)->address & (*ptr_to_sptr_interface)->netmask))				{				OSPF_PRINTF_ALARM (OSPF_ALARM_PRINTF, "OSPF: Source address doesn't belong to this interface\r\n");				return (FAIL);				}			}		/* Find the neighbor */		switch ( (*ptr_to_sptr_interface)->type)			{			case OSPF_BROADCAST:			case OSPF_NBMA:				{				for (*ptr_to_sptr_neighbor = (*ptr_to_sptr_interface)->sptr_neighbor; *ptr_to_sptr_neighbor != NULL;					*ptr_to_sptr_neighbor = (*ptr_to_sptr_neighbor)->sptr_forward_link)					{					if ((*ptr_to_sptr_neighbor)->id == router_id)						{						break;												/* found the neighbor we're looking for */						}					}				break;				}			case OSPF_POINT_TO_POINT:			case OSPF_POINT_TO_MULTIPOINT:	/* __NBMA_PTMP__ */				{				*ptr_to_sptr_neighbor = (*ptr_to_sptr_interface)->sptr_neighbor;				if (*ptr_to_sptr_neighbor != NULL)					{					if (((*ptr_to_sptr_neighbor)->id == 0x00000000L) || ((*ptr_to_sptr_neighbor)->id != router_id))						{						*ptr_to_sptr_neighbor = NULL;								/* Unknown router ID, or unknown address */						}					}				break;				}			default:				{				break;				}			}		if ((*ptr_to_sptr_neighbor == NULL) && (sptr_ospf_header->type != OSPF_HELLO_PACKET))			{			OSPF_PRINTF_ALARM (OSPF_ALARM_PRINTF, "OSPF: No neighbor found\r\n");			return (FAIL);			}		else			{			return (PASS);			}		}	else		{		/* packet should be from a virtual link */		test_result = ospf_verify_area_id_and_virtual_neighbor (router_id, area_id, ptr_to_sptr_interface, ptr_to_sptr_neighbor);		return (test_result);		}}/****************************************************************************************************************/static enum TEST ospf_verify_area_id_and_virtual_neighbor (ULONG router_id, ULONG area_id, OSPF_INTERFACE **ptr_to_sptr_interface, OSPF_NEIGHBOR **ptr_to_sptr_neighbor){	OSPF_INTERFACE_NODE *sptr_virtual_interface_node;	OSPF_INTERFACE *sptr_virtual_interface;	enum BOOLEAN I_am_an_area_border_router;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_verify_area_id_and_virtual_neighbor\r\n");	I_am_an_area_border_router = ospf_check_if_area_border_router ();	if (I_am_an_area_border_router == FALSE) 							/* make sure the receiving router is an area border router */		{		return (FAIL);		}	for (sptr_virtual_interface_node  = ospf.sptr_configured_virtual_links; sptr_virtual_interface_node  != NULL;		sptr_virtual_interface_node  = sptr_virtual_interface_node->sptr_forward_link)		{		sptr_virtual_interface = sptr_virtual_interface_node->sptr_interface;		if (sptr_virtual_interface == NULL)			{			continue;			}		if ((sptr_virtual_interface->sptr_neighbor != NULL) &&			(sptr_virtual_interface->sptr_transit_area != NULL) &&			(*ptr_to_sptr_interface != NULL) &&			((*ptr_to_sptr_interface)->sptr_area))			{			if ((sptr_virtual_interface->sptr_neighbor->id == router_id) && (area_id == OSPF_BACKBONE) &&				( (*ptr_to_sptr_interface) != NULL) &&				(sptr_virtual_interface->sptr_transit_area->area_id == (*ptr_to_sptr_interface)->sptr_area->area_id))				{				*ptr_to_sptr_interface = sptr_virtual_interface;				*ptr_to_sptr_neighbor = sptr_virtual_interface->sptr_neighbor;				return (PASS);				}			}		}	return (FAIL);					/* Not found */}/*********************************//* section 8.2, fourth and fifth bullet items under verifying OSPF packet header (page 58) */static enum TEST ospf_authenticate_packet (USHORT packet_size,OSPF_HEADER *sptr_ospf_header,OSPF_INTERFACE *sptr_interface,	OSPF_AUTHENTICATION *sptr_ospf_authentication,OSPF_NEIGHBOR *sptr_neighbor,ULONG *sptr_cryptographic_sequence_number){	enum TEST return_type;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_authenticate_packet\r\n");	switch (sptr_ospf_authentication->type)		{		case OSPF_AUTHENTICATION_NONE:			{			*sptr_cryptographic_sequence_number = (ULONG) 0x00000000L;			return (PASS);			}		case OSPF_AUTHENTICATION_SIMPLE:			{			if (memcmp ( (void*) &(sptr_ospf_header->authentication_field.key_or_plain_text_passwd), (void*) &sptr_ospf_authentication->key_or_plain_text_passwd, OSPF_AUTHENTICATION_SIMPLE_SIZE) == 0 )			   	{				*sptr_cryptographic_sequence_number = (ULONG) 0x00000000L;				return (PASS);				}			else				{				OSPF_PRINTF_ALARM (OSPF_ALARM_PRINTF, "OSPF: Failed authentication\r\n");				return (FAIL);				}			}		case OSPF_AUTHENTICATION_MD5:			{			return_type = ospf_do_md5_authentication (packet_size, sptr_ospf_header, sptr_interface, sptr_neighbor);			if (return_type == PASS)				{				*sptr_cryptographic_sequence_number = sptr_ospf_header->authentication_field.md5.cryptographic_sequence_number;				return (PASS);				}			else				{				OSPF_PRINTF_ALARM (OSPF_ALARM_PRINTF, "OSPF: Failed authentication\r\n");				return (FAIL);				}			}		default:			{			OSPF_PRINTF_ALARM (OSPF_ALARM_PRINTF, "OSPF: Received Authentication Type is not supported by this implementation\r\n");			return (FAIL);			}		}}/******************************************************************************************************************************/static enum TEST ospf_do_md5_authentication (USHORT packet_size,OSPF_HEADER *sptr_ospf_header,	OSPF_INTERFACE *sptr_interface,OSPF_NEIGHBOR *sptr_neighbor){	USHORT length;	OSPF_AUTHENTICATION_KEY *sptr_authentication_key;	enum TEST return_type;	BYTE *bptr_packet;	BYTE bptr_received_digest[OSPF_AUTHENTICATION_SIZE]; 	BYTE bptr_digest[OSPF_AUTHENTICATION_SIZE];	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_do_md5_authentication\r\n");	memset (bptr_received_digest, 0x0, OSPF_AUTHENTICATION_SIZE);	memset (bptr_digest, 0x0, OSPF_AUTHENTICATION_SIZE);	length = sptr_ospf_header->length;	length = net_to_host_short (length);	if (((ULONG) length + OSPF_AUTHENTICATION_MD5_SIZE) > (ULONG) packet_size)		{		return (FAIL);		}	/* locate the receiving interface's configured key having Key ID equal to that specified in the received packet */	sptr_authentication_key = NULL;	return_type = ospf_find_matching_key_for_md5_authentication (sptr_interface, sptr_ospf_header->authentication_field.md5.key_ID,		&sptr_authentication_key);	if (return_type == FAIL)		{		return (FAIL);		/* key was not found or was not valid for reception, so discard OSPF packet */		}	/* verify validity of received cryptographic sequence number */	if (sptr_neighbor != NULL)		{		if (sptr_ospf_header->authentication_field.md5.cryptographic_sequence_number < sptr_neighbor->cryptographic_sequence_number)			{			return (FAIL);			}		}	/* set aside the received digest */	bptr_packet = (BYTE *) sptr_ospf_header;	bptr_packet = bptr_packet + length;	memcpy ((void *) bptr_received_digest, (const void *) bptr_packet, (size_t) OSPF_AUTHENTICATION_MD5_SIZE);	memcpy ((void *) bptr_packet, (const void *) &(sptr_authentication_key->md5_16byte_password), (size_t) OSPF_AUTHENTICATION_MD5_SIZE);	/* Calculate the MD5 digest */    mdString (        (BYTE *) sptr_ospf_header, (ULONG) packet_size, bptr_digest, MD5);	if (memcmp ( (void *) bptr_digest, (void *) bptr_received_digest, (size_t) OSPF_AUTHENTICATION_MD5_SIZE) == 0x0)	  	{		return (PASS);		}	else		{		return (FAIL);		}}/**************************************************************************************************************************************/static enum TEST ospf_find_matching_key_for_md5_authentication (OSPF_INTERFACE *sptr_interface,BYTE received_key,	OSPF_AUTHENTICATION_KEY **ptr_to_sptr_found_authentication_key){	OSPF_AUTHENTICATION_KEY *sptr_authentication_key;	ULONG current_time;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_find_matching_key_for_md5_authentication\r\n");	*ptr_to_sptr_found_authentication_key = NULL;	for (sptr_authentication_key = sptr_interface->sptr_authentication_key; sptr_authentication_key != NULL;		sptr_authentication_key = sptr_authentication_key->sptr_forward_link)		{		if (sptr_authentication_key->key_ID == received_key)			{			*ptr_to_sptr_found_authentication_key = sptr_authentication_key;			break;			}		}	if (*ptr_to_sptr_found_authentication_key == NULL)		{		return (FAIL);			/* key wasn't found */		}	/* SPR 84312 -- Begin */	current_time = ospf_get_system_elapsed_time_second ();	/* SPR 84312 -- End */ 	if ((current_time < (*ptr_to_sptr_found_authentication_key)->key_start_accept) ||		((current_time >= (*ptr_to_sptr_found_authentication_key)->key_stop_accept) &&		((*ptr_to_sptr_found_authentication_key)->key_stop_accept != 0x00000000L)))		{		return (FAIL);			/* key is not valid for reception */		}	return (PASS);}/******************************************************************************************************************************/static enum OSPF_PACKET_STATE ospf_process_specific_packet_type (OSPF_HEADER *sptr_ospf_header,OSPF_INTERFACE *sptr_interface,	OSPF_NEIGHBOR *sptr_neighbor,ULONG source_address,ULONG destination_address,ULONG size_of_ospf_packet,ULONG cryptographic_sequence_number){	enum OSPF_PACKET_STATE return_type;	ULONG router_id;	OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_process_specific_packet_type\r\n");	router_id = sptr_ospf_header->router_id;	router_id = net_to_host_long (router_id);	switch (sptr_ospf_header->type)		{		case OSPF_HELLO_PACKET:			OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "------=====>>>>>   OSPF HELLO received from : source address %lx Interface type is: %d\r\n", source_address, sptr_interface->type);			return_type = ospf_hello_packet_received (&sptr_ospf_header->rest_of_packet.hello, sptr_neighbor, sptr_interface, source_address,				router_id, size_of_ospf_packet, cryptographic_sequence_number);			break;		case OSPF_DATABASE_DESCRIPTION_PACKET:			return_type = ospf_database_packet_received (&sptr_ospf_header->rest_of_packet.database, sptr_neighbor, sptr_interface, size_of_ospf_packet);			break;		case OSPF_LINK_STATE_REQUEST_PACKET:			return_type = ospf_ls_request_packet_received (&sptr_ospf_header->rest_of_packet.ls_request, sptr_neighbor, sptr_interface,				size_of_ospf_packet);			break;		case OSPF_LINK_STATE_UPDATE_PACKET:			OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "#####     OSPF UPDATE received from : source address %lx and destination address:%lx Interface type is: %d\r\n", source_address, destination_address, sptr_interface->type);			return_type = ospf_ls_update_packet_received (&sptr_ospf_header->rest_of_packet.ls_update, sptr_neighbor, sptr_interface,				source_address, destination_address);			break;		case OSPF_LINK_STATE_ACKNOWLEDGEMENT_PACKET:			return_type = ospf_ls_acknowledgement_packet_received (&sptr_ospf_header->rest_of_packet.ls_acknowledgement, sptr_neighbor,				sptr_interface, size_of_ospf_packet);			break;		default:			return_type = OSPF_ERROR_OSPF_PACKET_TYPE;			break;		}	return (return_type);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色产综合色产在线视频| 亚洲国产sm捆绑调教视频| 亚洲日本va午夜在线电影| 午夜精品久久久久久不卡8050| 国产一区999| 717成人午夜免费福利电影| 国产精品久久久久久久久免费相片 | 日本不卡免费在线视频| 成人一区二区三区在线观看| 欧美一区二区日韩| 亚洲午夜激情网站| eeuss影院一区二区三区| 精品国产免费一区二区三区四区| 亚洲一区欧美一区| 99re热这里只有精品视频| 精品国产亚洲在线| 日韩影院在线观看| 在线免费观看成人短视频| 国产欧美精品在线观看| 激情五月婷婷综合| 欧美一区二区三区视频在线观看| 亚洲一区二区美女| 在线亚洲精品福利网址导航| 亚洲人成亚洲人成在线观看图片 | 欧美系列一区二区| 亚洲欧美国产77777| 国产精品1区2区| www精品美女久久久tv| 久久99国产精品免费网站| 欧美一卡二卡三卡四卡| 青娱乐精品视频| 日韩三级视频在线看| 日韩高清一区二区| 日韩美女在线视频| 国内成人免费视频| 久久精品人人做人人爽人人| 国产精品99久久久久| 久久久一区二区| 成人美女视频在线观看| 国产精品久久久久久久久免费樱桃| av高清久久久| 一区二区三区国产精华| 在线日韩一区二区| 青青青爽久久午夜综合久久午夜| 日韩一区二区三区三四区视频在线观看| 图片区小说区国产精品视频| 欧美高清激情brazzers| 美女一区二区三区| 久久久久一区二区三区四区| 成人在线视频首页| 亚洲精品日韩综合观看成人91| 91色porny蝌蚪| 天天色综合成人网| 精品91自产拍在线观看一区| 成人黄色一级视频| 一区二区欧美精品| 日韩一区二区三| 大桥未久av一区二区三区中文| 亚洲免费观看高清完整版在线| 欧美日韩成人综合在线一区二区| 美女视频黄 久久| 国产欧美一区二区精品忘忧草| av在线综合网| 丝袜亚洲另类丝袜在线| 久久夜色精品一区| 欧美在线一二三| 国产一区二区三区国产| 亚洲女同一区二区| 日韩三级.com| 在线免费观看成人短视频| 精品午夜一区二区三区在线观看 | 午夜精品久久久久久久久| 精品久久一区二区三区| 色综合天天在线| 激情综合一区二区三区| 亚洲色图19p| 精品成人a区在线观看| 色婷婷av一区| 国产精品一品二品| 视频一区国产视频| 中文字幕中文字幕一区二区| 日韩欧美精品在线视频| 93久久精品日日躁夜夜躁欧美| 久久精品国产免费| 亚洲mv在线观看| 自拍偷在线精品自拍偷无码专区| 欧美一区二区三区成人| 色综合色综合色综合| 国产成人免费9x9x人网站视频| 日韩电影一区二区三区| 日韩一区日韩二区| 久久亚洲精品小早川怜子| 欧美肥妇毛茸茸| 色女孩综合影院| 一本色道久久综合亚洲91| 国产成人丝袜美腿| 国产精品一区在线| 久久se这里有精品| 日精品一区二区三区| 一区二区三区日韩精品| 自拍av一区二区三区| 国产精品天天摸av网| 久久久www成人免费无遮挡大片| 欧美一区二区三区人| 7777精品伊人久久久大香线蕉的| 欧美伊人精品成人久久综合97| 色婷婷激情综合| 91最新地址在线播放| 97久久人人超碰| aaa欧美大片| 99久久久久久| 99久久综合99久久综合网站| 成人午夜短视频| 成人av免费在线| 99久久婷婷国产精品综合| 91啪亚洲精品| 欧美视频一区在线观看| 欧美日韩小视频| 欧美一区二区观看视频| 日韩精品影音先锋| 久久精品亚洲一区二区三区浴池 | 99久久er热在这里只有精品66| 不卡av在线网| eeuss鲁片一区二区三区| 91麻豆精品视频| 欧美伊人久久大香线蕉综合69| 在线电影院国产精品| 日韩精品专区在线| 欧美激情综合五月色丁香| 国产精品日韩精品欧美在线| 亚洲女性喷水在线观看一区| 亚洲一区二区视频| 人人精品人人爱| 国产成人鲁色资源国产91色综| 99久久亚洲一区二区三区青草| 欧美三级资源在线| 日韩一级高清毛片| 国产精品私人影院| 亚洲精品乱码久久久久久黑人| 亚洲高清在线视频| 国内精品伊人久久久久av影院 | 日本三级韩国三级欧美三级| 久久99日本精品| 91亚洲国产成人精品一区二区三 | 午夜精品久久久久久不卡8050| 日本午夜一本久久久综合| 国产成人高清视频| 91国偷自产一区二区三区观看| 欧美一区欧美二区| 国产精品毛片高清在线完整版| 亚洲一二三区视频在线观看| 久久精品免费看| 一本大道久久a久久综合| 日韩欧美自拍偷拍| 亚洲婷婷在线视频| 精品中文字幕一区二区小辣椒| www.久久久久久久久| 欧美一区二区三区在线观看视频 | 成人性生交大片免费看中文网站| 91精品福利在线| 久久久久久久综合色一本| 亚洲午夜久久久久久久久电影院| 精品在线观看视频| 欧美三级中文字幕在线观看| 国产女人aaa级久久久级| 五月激情丁香一区二区三区| 成人av网站在线观看免费| 欧美成人一区二区三区| 一区二区三区不卡在线观看 | 欧美午夜片在线观看| 久久精品人人做| 蜜桃视频免费观看一区| 91麻豆免费在线观看| 国产视频一区在线观看| 琪琪久久久久日韩精品| 在线观看视频一区二区| 亚洲欧洲日韩av| 国产成人精品一区二区三区四区| 欧美日韩国产综合久久| 亚洲日本在线观看| 成人app网站| 久久精品人人爽人人爽| 精品一区二区三区在线观看国产 | 午夜影视日本亚洲欧洲精品| 91在线码无精品| 中文字幕av一区二区三区免费看 | 久久麻豆一区二区| 久久精品二区亚洲w码| 欧美日韩在线直播| 一区二区三区精密机械公司| 99这里只有久久精品视频| 国产色综合久久| 国产成a人无v码亚洲福利| 久久久国产精品不卡| 黄色资源网久久资源365| 精品日韩在线观看| 另类的小说在线视频另类成人小视频在线 | 亚洲一区视频在线| 91福利视频久久久久| 一区二区三区久久久|