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

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

?? radius_interface.c

?? vxworks下radius協議棧 的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* radius_interface.c *//* Implementations of RADIUS interface fucntions.					 			*//* 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_mutex022702  md      Add radius_remove_attribute()111401  md      Fixed SPR#70426 - pool packet identifiers per server052301	tk		Added a counter user_count to keep track of the copies of server handles handed out				to clients.  Destroy the server only if there is an explicit call to do so, and there				is no pending request, no client still owns any copy of the server handle.020801	tk		Added a new API radius_any_server_request() for request to automatically use back-up				server if the target server doesn't respond.012601	tk		ifdef all RADIUS MIBs code with __RADIUS_MIB__121900	md		replaced rwos_mutex_acquire and rwos_mutex_release with taskLock() and taskUnlock()121900	md		merged from visual source safe*/#include <string.h>#include <stdio.h>#include "radius.h"#include <vnvrmstr.h>/***************************************************************************/extern RWOS_MUTEX	rwos_radius_data_mutex;/************************************************************************/RADIUS_SERVER_HANDLE radius_server_create (enum RADIUS_SERVER_TYPE type, IP_ADDRESS ip_address, UINT port,	UINT max_retransmit_count, UINT retransmission_interval, char* cp_secret){	RADIUS_SERVER* p_server;	RW_CONTAINER_ITERATOR server_iterator;	if ((UINT) type >= (UINT) RADIUS_TOTAL_TYPES_OF_SERVERS)		{		radius_printf (RADIUS_ALARM_PRINTF, "RADIUS: Failed to recognize RADIUS server type - %d\n", type);		return (INVALID_HANDLE);		}		p_server = (RADIUS_SERVER*) table_malloc (1, sizeof (RADIUS_SERVER));		if (p_server == NULL)		{		radius_printf (RADIUS_ALARM_PRINTF,"RADIUS: radius_server_create: Out of memory\r\n");		return (INVALID_HANDLE);		}		p_server->ip_address = ip_address;	p_server->port = port;	p_server->type = type;	p_server->max_retransmit_count = max_retransmit_count;	p_server->retransmission_interval = retransmission_interval;	p_server->deleted = false;	p_server->pending_request_count = 0;	p_server->user_count = 1;		p_server->secret_length = strlen (cp_secret);		p_server->bp_secret = table_malloc (1, p_server->secret_length);		if (p_server->bp_secret != NULL)		{		memcpy (p_server->bp_secret, cp_secret, p_server->secret_length);		}	else		{		radius_printf (RADIUS_ALARM_PRINTF,"RADIUS: radius_server_create: Out of memory\r\n");		table_free (p_server);		return (INVALID_HANDLE);		}	p_server->packet_identifier_count = 0;	radius_initialize_packet_pool_identifier_per_server (p_server);	rwos_mutex_acquire (rwos_radius_data_mutex, WAIT_FOREVER);	rw_container_add_front (radius.server_controller.p_list, (RW_CONTAINER_ITEM*) p_server);	server_iterator = rw_container_create_copy_of_iterator (radius.server_controller.iterator);	rw_container_goto_front (server_iterator);	rwos_mutex_release (rwos_radius_data_mutex);	return ((RADIUS_SERVER_HANDLE) server_iterator);}/***************************************************************************/bool radius_server_add_type (RADIUS_SERVER_HANDLE server_handle, enum RADIUS_SERVER_TYPE type){#if 0 /* 12/13/00 */	RADIUS_SERVER* p_server;	/* it is the responsibility of the RADIUS user to ensure that a valid handle is passed */	p_server = rw_container_at ((RW_CONTAINER_ITERATOR) server_handle);		switch (type)		{		case RADIUS_AUTHENTICATION_SERVER_TYPE:			if (p_server->type == RADIUS_ACCOUNTING_SERVER_TYPE)				{				p_server->type = RADIUS_AUTHENTICATION_AND_ACCOUNTING_SERVER_TYPE;				}			break;		case RADIUS_ACCOUNTING_SERVER_TYPE:			if (p_server->type == RADIUS_AUTHENTICATION_SERVER_TYPE)				{				p_server->type = RADIUS_AUTHENTICATION_AND_ACCOUNTING_SERVER_TYPE;				}			break;					default:			return (false);		}	return (true);#endif	return (false);}	/***************************************************************************/bool radius_server_change_secret (RADIUS_SERVER_HANDLE server_handle, char* cp_secret){	RADIUS_SERVER* p_server;	rwos_mutex_acquire (rwos_radius_data_mutex, WAIT_FOREVER);	/* it is the responsibility of the RADIUS user to ensure that a valid handle is passed */	p_server = rw_container_at ((RW_CONTAINER_ITERATOR) server_handle);	if (p_server == NULL)		{		radius_printf (RADIUS_ALARM_PRINTF,"RADIUS: radius_server_change_secret: Illegal server handle\r\n");		rwos_mutex_release (rwos_radius_data_mutex);		return (false);		}			if (p_server->bp_secret != NULL)		{		table_free (p_server->bp_secret);				p_server->secret_length = 0;		}			p_server->secret_length = strlen (cp_secret);			p_server->bp_secret = table_malloc (1, p_server->secret_length);	memcpy (p_server->bp_secret, cp_secret, p_server->secret_length);	rwos_mutex_release (rwos_radius_data_mutex);		return (true);}/****************************************************************************Description:	This function is called by client to free the server handle it obtained	previously from the RADIUS Client.	Since the server handle can be freed by the client asynchronously from	the deletion of the server, and there can be multiple copies of server	handle to the same server, the user_count is used to keep track of the	server handles which have not been freed.  If there is a pending call to	destroy the server, delete the server only if the user_count is 0 and	there is no pending request.****************************************************************************/void radius_free_server_handle (RADIUS_SERVER_HANDLE server_handle){	RW_CONTAINER_ITERATOR server_iterator;	RADIUS_SERVER* p_server;	rwos_mutex_acquire (rwos_radius_data_mutex, WAIT_FOREVER);	server_iterator = (RW_CONTAINER_ITERATOR) server_handle;		p_server = rw_container_at (server_iterator);	if (p_server == NULL)		{		radius_printf (RADIUS_ALARM_PRINTF,			"RADIUS: radius_free_server_handle: Server with handle %d not found\r\n", 			(UINT) server_handle);		rwos_mutex_release (rwos_radius_data_mutex);		return; 	/*Server Not Found*/		}		if (p_server->user_count > 0)		{		--p_server->user_count;		}	if (p_server->deleted == true &&		p_server->pending_request_count == 0 && 		p_server->user_count == 0)		{				if (p_server->bp_secret != NULL)			{				table_free (p_server->bp_secret);			}		table_free (p_server);		rw_container_remove (server_iterator);		radius_printf (RADIUS_ALARM_PRINTF, 			"RADIUS: radius_free_server_handle: server deleted\n");		}	rwos_mutex_release (rwos_radius_data_mutex);	rw_container_free_iterator ((RW_CONTAINER_ITERATOR) server_handle);}/***************************************************************************/bool radius_server_destroy (RADIUS_SERVER_HANDLE server_handle){	RW_CONTAINER_ITERATOR server_iterator;	RADIUS_SERVER* p_server;	rwos_mutex_acquire (rwos_radius_data_mutex, WAIT_FOREVER);	server_iterator = (RW_CONTAINER_ITERATOR) server_handle;		p_server = rw_container_at (server_iterator);	if (p_server == NULL)		{		radius_printf (RADIUS_ALARM_PRINTF,			"RADIUS: radius_server_destroy: Server with handle %d not found\r\n", 			(UINT) server_handle);		rwos_mutex_release (rwos_radius_data_mutex);		return (false); 	/*Server Not Found*/		}			/* destroy server only if there is no pending request and no client still owns	   any handle of the server	*/	if (p_server->pending_request_count == 0 && p_server->user_count == 0)		{		if (p_server->bp_secret != NULL)			{				table_free (p_server->bp_secret);			}		table_free (p_server);		rw_container_remove (server_iterator);		rwos_mutex_release (rwos_radius_data_mutex);		return (true);		}			if (p_server->deleted == false)		{		p_server->deleted = true;			}	radius_printf (RADIUS_ALARM_PRINTF, 		"RADIUS: Server destroy pending ..., pending request = %d, user count = %d\n", 		p_server->pending_request_count, p_server->user_count);	rwos_mutex_release (rwos_radius_data_mutex);	return (true);}#ifdef __RADIUS_MIB__/***************************************************************************/UINT radius_get_server_index_in_mib_table (RADIUS_SERVER_HANDLE server_handle){  RW_CONTAINER_ITERATOR server_iterator;  RADIUS_SERVER* p_server;  server_iterator = (RW_CONTAINER_ITERATOR) server_handle;  p_server = rw_container_at (server_iterator);  return ((UINT)p_server);}/***************************************************************************/#endifRADIUS_SERVER_HANDLE radius_get_first_server (enum RADIUS_SERVER_TYPE type){	RW_CONTAINER_ITERATOR server_iterator;	RADIUS_SERVER* p_server;		if (type >= RADIUS_TOTAL_TYPES_OF_SERVERS) 		{		radius_printf (RADIUS_ALARM_PRINTF,"RADIUS: radius_get_first_server: Illegal type %d\r\n", (UINT) type);				return (INVALID_HANDLE);		}	rwos_mutex_acquire (rwos_radius_data_mutex, WAIT_FOREVER);	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->deleted == false)			{			if (p_server->type == type)				{				++p_server->user_count;					rwos_mutex_release (rwos_radius_data_mutex);					return ((RADIUS_SERVER_HANDLE) server_iterator); /* server_iterator already points to the new server */ 				}			}				rw_container_next (server_iterator);		}	rw_container_free_iterator (server_iterator);	radius_printf (RADIUS_ALARM_PRINTF,"RADIUS: radius_get_first_server: Could not find server of type %d\r\n", (UINT) type);	rwos_mutex_release (rwos_radius_data_mutex);	return (INVALID_HANDLE);}/***************************************************************************/RADIUS_SERVER_HANDLE radius_get_next_server (RADIUS_SERVER_HANDLE server_handle, enum RADIUS_SERVER_TYPE type){	RW_CONTAINER_ITERATOR server_iterator;	RADIUS_SERVER* p_server;	rwos_mutex_acquire (rwos_radius_data_mutex, WAIT_FOREVER);	server_iterator = rw_container_create_copy_of_iterator ((RW_CONTAINER_ITERATOR) server_handle);	rw_container_next (server_iterator);		while (rw_container_is_at_end (server_iterator) == false)		{		p_server = rw_container_at (server_iterator);				if (p_server->deleted == false)			{			if ((p_server->type == RADIUS_AUTHENTICATION_AND_ACCOUNTING_SERVER_TYPE) || (p_server->type == type))				{				++p_server->user_count;					rwos_mutex_release (rwos_radius_data_mutex);				return ((RADIUS_SERVER_HANDLE) server_iterator); /* server_iterator already points to the new server */ 				}			}				rw_container_next (server_iterator);		}		rw_container_free_iterator (server_iterator);	radius_printf (RADIUS_ALARM_PRINTF,"RADIUS: radius_get_next_server: Could not find next server of type %d\r\n", (UINT) type);	rwos_mutex_release (rwos_radius_data_mutex);	return (INVALID_HANDLE);}/***************************************************************************/RADIUS_SERVER_HANDLE radius_find_server_with_specified_parameters (char* cp_ip_address, UINT port, enum RADIUS_SERVER_TYPE type){	ULONG tmp0;	ULONG tmp1;	ULONG tmp2;	ULONG tmp3;	IP_ADDRESS ip_address;	RW_CONTAINER_ITERATOR server_iterator;	RADIUS_SERVER* p_server;		if (cp_ip_address == NULL)		{		return (INVALID_HANDLE);		}		if (type >= RADIUS_TOTAL_TYPES_OF_SERVERS)		{		radius_printf (RADIUS_ALARM_PRINTF,"RADIUS: radius_find_server_with_specified_parameters: Illegal type %d\r\n", (UINT) type);				return (INVALID_HANDLE);		}	rwos_mutex_acquire (rwos_radius_data_mutex, WAIT_FOREVER);	sscanf (cp_ip_address,"%03lu.%03lu.%03lu.%03lu", &tmp0, &tmp1, &tmp2, &tmp3);			ip_address = convert_4_bytes_to_ulong ((BYTE) tmp3, (BYTE) tmp2, (BYTE) tmp1, (BYTE) tmp0);			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)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波波电影院一区二区三区| 99视频超级精品| **欧美大码日韩| 日韩一级视频免费观看在线| 91社区在线播放| 韩国一区二区三区| 天天综合天天综合色| 国产精品欧美极品| 日韩午夜在线观看视频| 91欧美激情一区二区三区成人| 麻豆成人av在线| 一区二区三区四区国产精品| 久久久久久夜精品精品免费| 欧美年轻男男videosbes| 国产91精品入口| 蜜臀av国产精品久久久久| 亚洲色图欧美在线| 欧美激情一区不卡| 久久综合av免费| 日韩欧美一二三四区| 欧美私模裸体表演在线观看| av欧美精品.com| 国产精一区二区三区| 免费精品视频在线| 亚洲高清在线视频| 亚洲一区二区三区激情| 1024精品合集| 国产欧美一区二区精品性色| 欧美成人性战久久| 91精品国产一区二区三区香蕉| 欧美羞羞免费网站| 日本久久电影网| 日本电影亚洲天堂一区| 91美女片黄在线观看| 大胆亚洲人体视频| 国产99久久精品| 国产成人精品www牛牛影视| 久久av资源站| 久久国产视频网| 久久综合综合久久综合| 男人的天堂久久精品| 日韩电影在线免费| 日日噜噜夜夜狠狠视频欧美人| 亚洲123区在线观看| 五月开心婷婷久久| 免费观看在线综合| 精品在线播放免费| 精品一区二区三区香蕉蜜桃| 美腿丝袜在线亚洲一区| 精品一区二区三区免费毛片爱| 美国十次了思思久久精品导航| 日本三级韩国三级欧美三级| 久久精品99国产精品日本| 免费看欧美美女黄的网站| 狂野欧美性猛交blacked| 精品无码三级在线观看视频| 国产麻豆日韩欧美久久| 国产成人精品免费在线| 99re免费视频精品全部| 欧洲精品在线观看| 欧美久久免费观看| 欧美mv和日韩mv的网站| 国产人久久人人人人爽| 亚洲精品亚洲人成人网在线播放| 一区二区三区精品视频| 天堂午夜影视日韩欧美一区二区| 久久精品国产**网站演员| 国产一区 二区 三区一级| 成人美女视频在线看| 日本精品一区二区三区高清| 91精品国产一区二区三区香蕉| 精品国产亚洲在线| 亚洲少妇30p| 日本亚洲欧美天堂免费| 国产剧情一区二区三区| 91高清视频免费看| 欧美不卡一区二区三区| 亚洲欧洲精品成人久久奇米网| 亚洲国产一区视频| 国产精品系列在线播放| 色狠狠色噜噜噜综合网| 日韩一区二区免费在线观看| 国产精品免费视频观看| 午夜视频在线观看一区二区三区| 精品在线一区二区三区| 99久久精品国产网站| 91精品国产高清一区二区三区蜜臀| 久久久www免费人成精品| 一区二区三区小说| 国精产品一区一区三区mba视频| 95精品视频在线| 日韩美女视频在线| 亚洲一区国产视频| 国产成人高清在线| 欧美裸体bbwbbwbbw| 国产欧美1区2区3区| 五月婷婷综合激情| av动漫一区二区| 亚洲精品一区二区三区99| 亚洲综合视频在线观看| 国产91精品久久久久久久网曝门 | 午夜精品久久久久影视| 丰满亚洲少妇av| 欧美一级xxx| 亚洲九九爱视频| 国产98色在线|日韩| 日韩久久免费av| 日韩专区欧美专区| 日本韩国视频一区二区| 中文字幕的久久| 狠狠色伊人亚洲综合成人| 色悠悠亚洲一区二区| 色婷婷av一区二区三区之一色屋| 日韩一二三区不卡| 午夜欧美电影在线观看| 成人精品视频一区二区三区| 精品精品国产高清一毛片一天堂| 亚洲国产中文字幕在线视频综合 | 亚洲福利电影网| 高清av一区二区| 欧美一区二区人人喊爽| 午夜欧美在线一二页| av不卡在线播放| 久久久久久久综合日本| 丝袜美腿亚洲一区| 91丝袜国产在线播放| 欧美岛国在线观看| 午夜久久久久久| 91网站最新地址| 国产精品天干天干在观线| 亚洲一区二区黄色| 欧美伊人久久大香线蕉综合69| 中文久久乱码一区二区| 国产中文字幕精品| 91精品国产乱| 亚洲地区一二三色| 欧美疯狂做受xxxx富婆| 亚洲欧美另类小说| 成人精品视频网站| 久久久久国色av免费看影院| 美女被吸乳得到大胸91| 欧美亚州韩日在线看免费版国语版| 国产精品白丝在线| 成人一区二区三区视频| 国产亚洲福利社区一区| 国产精一品亚洲二区在线视频| 国产性天天综合网| 国产在线精品视频| 日韩久久免费av| 国产在线一区观看| 日韩欧美另类在线| 国产成人精品一区二| 国产亚洲人成网站| 春色校园综合激情亚洲| 国产欧美一区二区精品秋霞影院| 亚洲福利视频一区| 欧美一级xxx| 激情欧美一区二区| 久久久噜噜噜久久人人看| 国产乱码精品一区二区三区忘忧草| 久久久久久影视| 国产精品原创巨作av| 久久精品视频一区二区| 国产精品一级片在线观看| 久久久国产综合精品女国产盗摄| 97久久人人超碰| 亚洲精品乱码久久久久久| 欧美日韩在线电影| 天天综合网天天综合色 | xnxx国产精品| 国内精品在线播放| 国产欧美中文在线| av毛片久久久久**hd| 亚洲欧美电影院| 7777精品久久久大香线蕉| 精品在线播放免费| 国产欧美一区视频| 色吧成人激情小说| 久久成人久久鬼色| 国产三级欧美三级日产三级99| 成人激情黄色小说| 一个色妞综合视频在线观看| 色综合天天综合网国产成人综合天 | 在线观看视频一区二区| 亚洲自拍另类综合| 久久久久久久久伊人| 91捆绑美女网站| 免费观看在线综合色| 国产亚洲欧美在线| 91精品国产一区二区人妖| 国产精品一二三四| 亚洲欧美精品午睡沙发| 欧美精品亚洲一区二区在线播放| 国产99久久久精品| 亚洲大片在线观看| 久久精品一区二区三区不卡牛牛| 99国产精品久久久久久久久久久 | 日本伦理一区二区| 久久成人久久爱| 一区二区三区四区中文字幕|