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

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

?? radius_rx.c

?? vxworks下radius協議棧 的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* radius_rx.c *//* Implementations of fucntions that handle the receipt of RADIUS packets.	*//* Copyright 1984 - 2000 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history____________________Date	Init	Change description031102  md		Enhancement - moving polling socket read to seperate tasks and 				replace taskLock/unLock with rwos_radius_data_mutex030402  md      Add support for EAP030402  md      Bug fix - authenticate accounting response when verify response authenticator is enable111401  md		Fixed SPR#70426 - pool packet identifiers per server092701  md		Fixed SPR#70639 retransmission of accounting requests with RADIUS_ACCT_DELAY_TIME attribute052301	tk		Added a check on user_count before deleting server in 				radius_process_received_packet.  This check adds an				extra measure of security to avoid deletion of the server				while some client may have not freed the server handle it 				has obtained from the RADIUS Client.052101	tk		Fixed Siemen's bug 18: Improved the check of server's reply to 				handle the possible case of authentication server sending 				accounting response or accounting server sending authentication 				response. This problem and the improved check code were done as				suggested by Siemen's engineer.040501	tk		Added code to handle replied packet received from back-up server.021601  tk		Fixed memory leaks (SPR 64177)012601  tk		ifdef all RADIUS MIBs code with __RADIUS_MIB__121900  md		Fixed packet id - freeing packet id when response is received121900  md		Merged from visual source safe*/#include <string.h>#include "radius.h"#ifdef __RADIUS_MIB__#include "radius_mib_include.h"#endif/***************************************************************************/extern RWOS_MUTEX	rwos_radius_data_mutex;/************************************************************************/static void radius_process_received_packet (RADIUS_SERVER* p_server, RADIUS_PACKET *sptr_rx_packet);static RADIUS_SERVER * get_radius_server (struct sockaddr_in * p_remote_socket_info);/************************************************************************/void receive_radius_packet (void* p_user){	RADIUS_PACKET *sptr_rx_packet;	SOCKADDR remote_sockaddr;	ULONG sockaddr_length;	int number_of_bytes_received;	RADIUS_SOCKET_OBJECT* p_socket;	struct sockaddr_in * p_remote_socket_info;	RADIUS_SERVER* p_server = NULL;	if (p_user == NULL)		{		return;		}	p_socket = (RADIUS_SOCKET_OBJECT*) p_user;	sockaddr_length = sizeof (SOCKADDR);		sptr_rx_packet = buffer_malloc (radius.maximum_rx_packet_size);	if (sptr_rx_packet == NULL)		{		radius_printf (RADIUS_SOCKET_PRINTF, "RADIUS: receive_radius_packe: Out of memory\n");		return;		}		memset (sptr_rx_packet, 0, radius.maximum_rx_packet_size);		number_of_bytes_received = recvfrom (p_socket->socket_descriptor, (char *) sptr_rx_packet, radius.maximum_rx_packet_size,		(int) NULL, &remote_sockaddr, (int *) &sockaddr_length);	if (((short) number_of_bytes_received) <= 0x0000)		{		buffer_free (sptr_rx_packet);				radius_printf (RADIUS_SOCKET_PRINTF, "RADIUS: receive_radius_packet: No more data to read; socket %8xl,\n", 			p_socket->socket_descriptor);		return;		}	else		{		radius_printf (RADIUS_SOCKET_PRINTF,"RADIUS Transport: Received %d bytes.\r\n", number_of_bytes_received);		}		p_remote_socket_info = (struct sockaddr_in *)&remote_sockaddr;	rwos_mutex_acquire (rwos_radius_data_mutex, WAIT_FOREVER);	p_server = get_radius_server (p_remote_socket_info);	if (p_server == NULL)		{		radius_printf (RADIUS_ALARM_PRINTF,"RADIUS Transport: Unable to get RADIUS server.\r\n");		return;		}		radius_process_received_packet (p_server, sptr_rx_packet);	rwos_mutex_release (rwos_radius_data_mutex);}/************************************************************************/static RADIUS_SERVER * get_radius_server (struct sockaddr_in * p_remote_socket_info){	RW_CONTAINER_ITERATOR server_iterator;	RADIUS_SERVER* p_server = NULL;	bool found_radius_server = false;	server_iterator = rw_container_create_copy_of_iterator (radius.server_controller.iterator);		rw_container_goto_front (server_iterator);	while (rw_container_is_at_end (server_iterator) == false)		{		p_server = rw_container_at (server_iterator);		if ((p_server->ip_address == ntohl (p_remote_socket_info->sin_addr.s_addr)) && 			(p_server->port == ntohs (p_remote_socket_info->sin_port)))			{			found_radius_server = true;			break;			}				rw_container_next (server_iterator);		}	rw_container_free_iterator (server_iterator);	if (found_radius_server == true)		return (p_server);	else		return (NULL);}/************************************************************************/static void radius_process_received_packet (RADIUS_SERVER* p_server, RADIUS_PACKET *sptr_rx_packet){	RADIUS_REQUEST_ENTRY *p_request_entry = NULL;	RADIUS_ATTRIBUTE_LIST_HANDLE response_attribute_list_handle;	RADIUS_LIST_CONTROLLER* p_radius_attribute_list_controller;	RW_CONTAINER_ITERATOR 	server_iterator;	RW_CONTAINER_ITERATOR request_entry_iterator;	bool request_entry_found, server_unknown_response;		print_radius_packet_header ("RADIUS: radius_process_received_packet", &sptr_rx_packet->header);		request_entry_found = false;	server_unknown_response = false;	request_entry_iterator = rw_container_create_copy_of_iterator (radius.request_controller.iterator);		rw_container_goto_front (request_entry_iterator);	if (radius_check_packet_id_reused_pending_per_server (p_server, sptr_rx_packet->header.identifier) == false)		{		while (rw_container_is_at_end (request_entry_iterator) == false)			{			p_request_entry = rw_container_at (request_entry_iterator);			if (p_request_entry->packet_header.identifier == sptr_rx_packet->header.identifier)				{				request_entry_found = true;								break;				}			rw_container_next (request_entry_iterator);			}		}	if (request_entry_found == false)		{		switch (sptr_rx_packet->header.code)			{			case RADIUS_ACCESS_ACCEPT:			case RADIUS_ACCESS_REJECT:			case RADIUS_ACCESS_CHALLENGE:#ifdef __RADIUS_MIB__				++radiusAuthClientInfo.radiusAuthClientInvalidServerAddresses;#endif							break;			case RADIUS_ACCOUNTING_RESPONSE:#ifdef __RADIUS_MIB__				++radiusAccClientInfo.radiusAccClientInvalidServerAddresses;#endif							break;			default:								break;			}		buffer_free (sptr_rx_packet);		rw_container_free_iterator (request_entry_iterator);		return;		}	if (p_request_entry->backup_server == true)		{		server_iterator = (RW_CONTAINER_ITERATOR) p_request_entry->backup_server_handle;		}	else		{		server_iterator = (RW_CONTAINER_ITERATOR) p_request_entry->server_handle;		}			p_server = (RADIUS_SERVER*) rw_container_at (server_iterator);#ifdef __RADIUS_MIB__	semTake (g_sem_radius_mib, WAIT_FOREVER);#endif	/* Improved check header code as suggested by Siemen's engineer to	 * catch authentication packets sent by accounting servers and vice versa.	 * The remainder of the code relies on the fact that the header code	 * maps to the correct server type.	 * The server type is checked against entry p_server->type rather than	 * the port type of the socket where the packet is received as was done.  	 * previously.  It should make no difference.	 */	if (p_server->type == RADIUS_AUTHENTICATION_SERVER_TYPE)	  {		switch (sptr_rx_packet->header.code)			{			case RADIUS_ACCESS_ACCEPT:				++p_server->statistics.authentication_access_accepts_rx;				break;			case RADIUS_ACCESS_REJECT:				++p_server->statistics.authentication_access_rejects_rx;				break;			case RADIUS_ACCESS_CHALLENGE:				++p_server->statistics.authentication_access_challenges_rx;							break;			default:				++p_server->statistics.authentication_unknown_type_packets_rx;				server_unknown_response = true;				break;			}		}	else		{		switch (sptr_rx_packet->header.code)			{							case RADIUS_ACCOUNTING_RESPONSE:				++p_server->statistics.accounting_responses_rx;							break;							default:				++p_server->statistics.accounting_unknown_type_packets_rx;				server_unknown_response = true;				break;			}		}#ifdef __RADIUS_MIB__	semGive (g_sem_radius_mib);#endif	if (server_unknown_response == true)		{		buffer_free (sptr_rx_packet);		rw_container_free_iterator (request_entry_iterator);		return;		}			if (radius.disable_verify_response_authenticator != TRUE)		{		if (verify_radius_response_authenticator (sptr_rx_packet, (BYTE *)p_request_entry->packet_header.authenticator, p_server) 			== FAIL)			{#ifdef __RADIUS_MIB__			semTake (g_sem_radius_mib, WAIT_FOREVER);#endif			switch (sptr_rx_packet->header.code)				{				case RADIUS_ACCESS_ACCEPT:				case RADIUS_ACCESS_REJECT:				case RADIUS_ACCESS_CHALLENGE:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区日韩二区欧美三区| 日日摸夜夜添夜夜添精品视频 | 成人永久免费视频| 国产成人99久久亚洲综合精品| 国产精品一区二区久久精品爱涩| 国产精品综合av一区二区国产馆| 91美女片黄在线观看| 国产在线不卡一区| 国产精品一区专区| 91在线观看高清| 欧美日本在线看| 国产亚洲短视频| 国产一区二区三区观看| 日韩一区二区三区四区五区六区| 午夜精品福利一区二区蜜股av| 91久久国产最好的精华液| 一区二区三区日韩在线观看| 成人免费视频视频| 中文子幕无线码一区tr| 狠狠色丁香久久婷婷综| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 成人app下载| 久久久天堂av| 国产乱一区二区| 国产欧美精品一区二区色综合朱莉| 久久超碰97中文字幕| 精品国产乱码久久久久久1区2区| 美国毛片一区二区| 久久久久九九视频| 成人黄色a**站在线观看| 国产成人无遮挡在线视频| www.欧美亚洲| 亚洲精品国产精华液| 欧美性猛交xxxx乱大交退制版| 亚洲精品中文在线影院| 欧美日韩免费视频| 美女mm1313爽爽久久久蜜臀| 久久综合九色综合97_久久久| 国产成人av自拍| 亚洲图片欧美综合| 日韩美女在线视频 | 成人精品国产免费网站| 一区二区成人在线| 精品少妇一区二区三区日产乱码| 成人黄动漫网站免费app| 欧美v日韩v国产v| 7777精品伊人久久久大香线蕉超级流畅 | 黄色精品一二区| 亚洲欧美另类小说视频| 日韩一级片在线观看| 国产美女精品在线| 久久久久久久综合色一本| 久久精品999| 3751色影院一区二区三区| 一区二区三区四区精品在线视频| 7777精品伊人久久久大香线蕉的 | 欧美精品粉嫩高潮一区二区| 国产亚洲欧洲997久久综合 | 精品久久国产老人久久综合| 亚洲成a人v欧美综合天堂下载| 91免费看`日韩一区二区| 国产欧美日韩亚州综合| 国产精品1区二区.| 久久新电视剧免费观看| 紧缚捆绑精品一区二区| 日韩欧美成人一区二区| 日韩av网站在线观看| 91精品欧美综合在线观看最新 | 欧美日韩中字一区| 亚洲精品日韩综合观看成人91| 99久久精品免费| 日韩美女视频一区二区| 97久久超碰国产精品电影| 中文字幕一区二区在线播放| 不卡一区在线观看| 亚洲婷婷综合久久一本伊一区| 99国产一区二区三精品乱码| 亚洲欧洲日韩女同| 91麻豆成人久久精品二区三区| 亚洲视频图片小说| 在线视频你懂得一区| 午夜不卡av在线| 欧美大黄免费观看| 国产一区二区久久| 国产欧美精品区一区二区三区| 懂色av一区二区夜夜嗨| 中文字幕日本不卡| 欧美在线|欧美| 石原莉奈一区二区三区在线观看 | 久久精品国产一区二区| 精品国产99国产精品| 国产成人av网站| 亚洲欧美另类综合偷拍| 欧美日韩一区视频| 麻豆精品视频在线观看| 国产欧美一区二区在线| 91性感美女视频| 日日夜夜免费精品| 久久久久国产精品麻豆ai换脸 | 亚洲激情第一区| 欧美群妇大交群中文字幕| 麻豆精品在线播放| 国产精品久久久久一区| 在线视频国产一区| 久久电影网站中文字幕| 国产精品久久久久影院亚瑟 | 蜜桃av噜噜一区二区三区小说| 精品国产乱码久久| 91麻豆精品视频| 日韩福利电影在线| 国产清纯白嫩初高生在线观看91| 色噜噜久久综合| 久久不见久久见免费视频1| 国产精品私房写真福利视频| 欧美日韩一区高清| 国产麻豆视频精品| 亚洲精品成人精品456| 日韩一卡二卡三卡四卡| 播五月开心婷婷综合| 亚洲成人av电影在线| 国产日本欧美一区二区| 51精品国自产在线| www.日本不卡| 久久国产精品99久久久久久老狼 | 欧美丝袜丝nylons| 国产精品亚洲午夜一区二区三区 | 欧美情侣在线播放| 成人精品鲁一区一区二区| 日韩成人伦理电影在线观看| 亚洲国产精品精华液ab| 日韩一区二区精品葵司在线| 91无套直看片红桃| 国产一区二区三区久久久| 亚洲小说春色综合另类电影| 国产色产综合色产在线视频| 欧美日韩一级二级| 99精品欧美一区二区三区小说| 免费精品视频在线| 一区二区三区在线视频免费| 久久久www免费人成精品| 欧美日本韩国一区| 91免费看片在线观看| 国产东北露脸精品视频| 丝袜美腿亚洲综合| 亚洲九九爱视频| 日本一二三不卡| 精品999在线播放| 欧美日韩黄色一区二区| 99热99精品| 国产精品 欧美精品| 日韩二区三区四区| 亚洲国产日日夜夜| 亚洲日本欧美天堂| 国产网红主播福利一区二区| 欧美一级片在线| 精品视频在线看| 91老师片黄在线观看| 成人美女在线视频| 国产一级精品在线| 麻豆精品一二三| 全部av―极品视觉盛宴亚洲| 亚洲福利一区二区三区| 一区二区在线免费观看| 国产精品二三区| 国产精品卡一卡二卡三| 国产丝袜在线精品| 久久这里只有精品首页| 欧美成人aa大片| 欧美mv和日韩mv国产网站| 欧美一区二区三区在线观看| 欧美剧在线免费观看网站| 欧美午夜不卡视频| 欧美亚一区二区| 在线精品视频免费播放| 91精品办公室少妇高潮对白| a在线欧美一区| 99久久亚洲一区二区三区青草| 成人短视频下载| 成人久久久精品乱码一区二区三区| 国产成a人亚洲精品| 成熟亚洲日本毛茸茸凸凹| 高潮精品一区videoshd| 国产ts人妖一区二区| 国产精品一区二区91| 国产精品18久久久久久久久| 国产一区二区视频在线播放| 国产九九视频一区二区三区| 高清不卡在线观看| 不卡一区二区三区四区| 97精品视频在线观看自产线路二| 99久久精品免费看国产| 欧洲国内综合视频| 欧美精选一区二区| 精品美女一区二区| 国产午夜精品在线观看| 综合欧美亚洲日本| 亚洲夂夂婷婷色拍ww47| 日本怡春院一区二区| 国内成+人亚洲+欧美+综合在线| 国内精品免费**视频|