亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产成人久久精品77777最新版本| 麻豆专区一区二区三区四区五区| 欧美人狂配大交3d怪物一区| 国内欧美视频一区二区| 亚洲国产日韩精品| 国产拍揄自揄精品视频麻豆| 69久久99精品久久久久婷婷| 92精品国产成人观看免费 | 亚洲一区二区三区四区五区中文 | 欧美性做爰猛烈叫床潮| 懂色一区二区三区免费观看| 老司机精品视频线观看86| 亚洲伊人伊色伊影伊综合网| 国产精品久久久久aaaa| 精品乱码亚洲一区二区不卡| 精品视频一区三区九区| 色综合久久久久综合体| 成人涩涩免费视频| 国产高清不卡一区| 激情综合五月天| 欧美aaaaa成人免费观看视频| 亚洲精品伦理在线| 亚洲欧洲日产国产综合网| 国产日韩欧美激情| 国产日韩欧美在线一区| 欧美精品一区二区不卡| 日韩欧美www| 日韩欧美国产1| 日韩一区二区视频在线观看| 在线观看91av| 91精品国产欧美一区二区18 | 激情成人午夜视频| 蜜桃av一区二区三区| 天天影视涩香欲综合网| 亚洲成人自拍一区| 亚洲第一激情av| 午夜精品久久久久久久99水蜜桃 | 国产美女视频91| 国产一区二区三区免费播放| 国产精品一区二区三区网站| 国产在线精品一区二区夜色 | 久久99久久久久久久久久久| 日本欧美久久久久免费播放网| 日日摸夜夜添夜夜添精品视频 | 色天使色偷偷av一区二区| 色国产综合视频| 欧美最猛性xxxxx直播| 91高清视频在线| 欧美老年两性高潮| 日韩一区二区免费在线电影| 亚洲午夜羞羞片| 婷婷国产在线综合| 老司机午夜精品| 精久久久久久久久久久| 国产成人自拍网| eeuss鲁片一区二区三区在线看| 91麻豆国产香蕉久久精品| 精品视频一区二区不卡| 欧美一区二区三区在线视频| 精品国产91九色蝌蚪| 欧美国产1区2区| 亚洲欧洲美洲综合色网| 亚洲sss视频在线视频| 麻豆中文一区二区| 北条麻妃国产九九精品视频| 91小视频在线免费看| 欧美无砖专区一中文字| 精品少妇一区二区| 日韩一区有码在线| 日韩电影在线免费观看| 懂色av中文字幕一区二区三区| 色一情一伦一子一伦一区| 日韩欧美一二三区| 国产精品短视频| 日韩黄色片在线观看| 国产99久久久国产精品免费看| 日本韩国视频一区二区| 日韩亚洲欧美一区二区三区| 欧美激情综合五月色丁香小说| 亚洲色图欧洲色图婷婷| 日本91福利区| 色婷婷综合激情| 欧美大片在线观看一区| 亚洲日本丝袜连裤袜办公室| 日本aⅴ精品一区二区三区| 东方aⅴ免费观看久久av| 欧美日韩在线三区| 亚洲国产岛国毛片在线| 日韩精品电影一区亚洲| 成人精品一区二区三区中文字幕| 欧美日韩国产高清一区二区| 国产精品午夜在线观看| 蜜臀av性久久久久蜜臀aⅴ| 91在线观看下载| 精品欧美乱码久久久久久1区2区| 一区二区三区精品视频在线| 久99久精品视频免费观看| 色噜噜狠狠色综合中国| 久久精品视频一区二区| 免费在线一区观看| 色先锋久久av资源部| 久久久一区二区三区捆绑**| 日韩高清电影一区| 色婷婷国产精品| 欧美国产欧美亚州国产日韩mv天天看完整| 日日夜夜免费精品| 欧洲精品在线观看| 国产精品国产馆在线真实露脸 | 成人午夜私人影院| 欧美mv日韩mv国产| 日本欧美加勒比视频| 欧美中文字幕不卡| 亚洲三级在线观看| 成人午夜电影网站| 亚洲精品在线免费观看视频| 日本在线播放一区二区三区| 色婷婷激情久久| 综合久久久久久| 97久久精品人人澡人人爽| 国产视频一区二区在线| 美国精品在线观看| 日韩欧美一区在线| 日韩和欧美的一区| 7777精品伊人久久久大香线蕉超级流畅| 亚洲精品福利视频网站| gogo大胆日本视频一区| 国产精品欧美久久久久一区二区| 国内国产精品久久| 国产无一区二区| 成人午夜电影久久影院| 中文字幕乱码一区二区免费| 国产精品一区二区三区99| 久久―日本道色综合久久| 国内精品久久久久影院薰衣草| 欧美一级高清片| 久久电影网站中文字幕| 日韩精品在线看片z| 狠狠色丁香久久婷婷综| 久久免费精品国产久精品久久久久| 久久99久久99| 久久久综合精品| 成人美女在线观看| 亚洲精品免费看| 欧美卡1卡2卡| 免费成人深夜小野草| 精品蜜桃在线看| 国产精品一区在线观看你懂的| 国产区在线观看成人精品| av网站免费线看精品| 亚洲桃色在线一区| 欧美日本乱大交xxxxx| 美日韩一区二区三区| 久久久影视传媒| 99久久精品99国产精品| 一区二区不卡在线播放 | 久久精品免视看| 成人av免费在线观看| 亚洲欧美日韩国产另类专区| 91高清在线观看| 麻豆精品新av中文字幕| 久久久精品日韩欧美| 97国产一区二区| 亚洲国产综合在线| 欧美精品一区二区久久婷婷| www.性欧美| 日产国产欧美视频一区精品| 精品国产不卡一区二区三区| 成人av在线资源| 亚洲成a人v欧美综合天堂 | 欧美精品一区二区不卡| 99久久免费精品高清特色大片| 亚洲影院久久精品| 精品盗摄一区二区三区| 色爱区综合激月婷婷| 久久99国产精品尤物| 亚洲图片欧美激情| 日韩欧美123| 色综合天天性综合| 蜜臀av性久久久久蜜臀aⅴ| 成人欧美一区二区三区黑人麻豆 | eeuss国产一区二区三区| 视频一区二区三区中文字幕| 国产无遮挡一区二区三区毛片日本| 日本韩国精品在线| 狠狠色综合播放一区二区| 亚洲蜜桃精久久久久久久| 亚洲精品一区二区三区蜜桃下载 | 国产成人免费网站| 午夜电影网亚洲视频| 国产精品国产a级| 日韩精品专区在线| 色av综合在线| 国产成人av电影| 美女www一区二区| 一区二区三区 在线观看视频| 久久蜜桃av一区精品变态类天堂| 欧美日韩免费不卡视频一区二区三区| 岛国精品一区二区| 精品亚洲成a人在线观看| 亚洲第一搞黄网站|