📄 attribute_control_structures.h
字号:
/* attribute_control_structures.h *//* Definitions of structures that are used to check the validity of *//* attributes in a certain type of RADIUS packet, and the validity *//* of the value of a certain attribute. *//* Copyright 1984 - 2000 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history____________________01b,04mar02,md Add support for EAP01a,19dec00,md merged from visual source safe*//************************************************************************//* Copyright (C) 1993 - 1999 RouterWare, Inc. *//* Unpublished - rights reserved under the Copyright Laws of the *//* United States. Use, duplication, or disclosure by the *//* Government is subject to restrictions as set forth in *//* subparagraph (c)(1)(ii) of the Rights in Technical Data and *//* Computer Software clause at 252.227-7013. *//* RouterWare, Inc., 3961 MacArthur Suite 212 Newport Beach, CA 92660 *//************************************************************************//************************************************************************Attributes are validated with the following parameters on a per packet typebasis:presence modifiers1: must not be present 2: 0 or more present 3: 1 or more present alternative attribute dependent attributeModifier explanation:alternative attribute - one of the alternatives must be present in the packetdependent attribute - the referenced attribute must be present in the packetThese these two modifiers can override the presence value.The validate attribute value is a pointer to a function specific toeach attribute. If present, it will be called with the attribute typeand value. The function returns PASS or FAIL after validating thevalue passed for the type.(not used yet)**************************************************************************/#ifndef __INCradius_attribute_control_structuresh#define __INCradius_attribute_control_structuresh#ifdef __RADIUS_ATTRIBUTE_VERIFICATION_DEBUG__#define NO_UPPER_LIMIT 0xFFFFFFFF#define SIZE_OF_INTEGER 4#define MAX_FRAMED_MTU 65535#define MIN_FRAMED_MTU 64#define RADIUS_MAX_PORT_NUMBER 65535#define RADIUS_MAX_APPLETALK_LINK 65535#define RADIUS_MAX_APPLETALK_NETWORK 65535#endif /*__RADIUS_ATTRIBUTE_VERIFICATION_DEBUG__*/typedef struct ATTRIBUTE_COUNT{ UINT count[MAXIMUM_RADIUS_ATTRIBUTE_TYPE];}ATTRIBUTE_COUNT;enum ATTRIBUTE_PRESENCE{ ZERO_OR_MORE = 0, ZERO_OR_ONE, ILLEGAL, ONE_ONLY, ONE_OR_MORE};enum ATTRIBUTE_MODIFIER{ NO_MODIFIER = 0, ALTERNATE, BOTH};typedef struct ATTRIBUTE_CONTROL{ BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type; BYTE_ENUM (ATTRIBUTE_PRESENCE) presence; BYTE_ENUM (ATTRIBUTE_MODIFIER) modifier; BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) other_type;/* enum TEST (*fptr_validate_attribute_value) (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);*/} ATTRIBUTE_CONTROL;#ifdef __RADIUS_ATTRIBUTE_VERIFICATION_DEBUG__enum RADIUS_ATTRIBUTE_VALUE_TYPE{ RADIUS_ATTRIBUTE_VALUE_TEXT = 0, RADIUS_ATTRIBUTE_VALUE_STRING, RADIUS_ATTRIBUTE_VALUE_ADDRESS, RADIUS_ATTRIBUTE_VALUE_INTEGER, RADIUS_ATTRIBUTE_VALUE_TIME, RADIUS_ATTRIBUTE_VALUE_INVALID};typedef struct ATTRIBUTE_VALUE_CONTROL{ BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) attribute_type; BYTE_ENUM (RADIUS_ATTRIBUTE_VALUE_TYPE) attribute_value_type; UINT attribute_length_lower_limit; UINT attribute_length_upper_limit; bool (*fptr_validate_attribute_value) (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);} ATTRIBUTE_VALUE_CONTROL;/**********************************************************************************/bool radius_service_type_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_framed_protocol_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_framed_routing_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_framed_MTU_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_framed_compression_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_login_service_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_login_TCP_port_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_termination_action_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_apple_talk_link_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_apple_talk_network_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_acct_status_type_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_acct_authentic_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_acct_terminate_cause_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_nas_port_type_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_tunnel_type_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);bool radius_tunnel_medium_type_value_check (BYTE_ENUM (RADIUS_ATTRIBUTE_TYPE) type, void *value);#endif /*__RADIUS_ATTRIBUTE_VERIFICATION_DEBUG__*//**********************************************************************************/ATTRIBUTE_CONTROL access_request_control[MAXIMUM_RADIUS_ATTRIBUTE_TYPE] ={ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 0 */ {RADIUS_USER_NAME, ONE_ONLY, NO_MODIFIER, 0}, /* 1 */#ifdef __EAP__ {RADIUS_USER_PASSWORD, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 2 */ {RADIUS_CHAP_PASSWORD, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 3 */#else {RADIUS_USER_PASSWORD, ZERO_OR_MORE, ALTERNATE, RADIUS_CHAP_PASSWORD}, /* 2 */ {RADIUS_CHAP_PASSWORD, ZERO_OR_MORE, ALTERNATE, RADIUS_USER_PASSWORD}, /* 3 */#endif /* __EAP__ */ {RADIUS_NAS_IP_ADDRESS, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 4 */ {RADIUS_NAS_PORT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 5 */ {RADIUS_SERVICE_TYPE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 6 */ {RADIUS_FRAMED_PROTOCOL, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 7 */ {RADIUS_FRAMED_IP_ADDRESS, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 8 */ {RADIUS_FRAMED_IP_NETMASK, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 9 */ {RADIUS_FRAMED_ROUTING, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 10*/ {RADIUS_FILTER_ID, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 11*/ {RADIUS_FRAMED_MTU, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 12*/ {RADIUS_FRAMED_COMPRESSION, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 13*/ {RADIUS_LOGIN_IP_HOST, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 14*/ {RADIUS_LOGIN_SERVICE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 15*/ {RADIUS_LOGIN_TCP_PORT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 16*/ {RADIUS_UNASSIGNED_17, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 17*/ {RADIUS_REPLY_MESSAGE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 18*/ {RADIUS_CALLBACK_NUMBER, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 19*/ {RADIUS_CALLBACK_ID, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 20*/ {RADIUS_UNASSIGNED_21, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 21*/ {RADIUS_FRAMED_ROUTE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 22*/ {RADIUS_FRAMED_IPX_NETWORK, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 23*/ {RADIUS_STATE, ZERO_OR_ONE, NO_MODIFIER, 0}, /* 24*/ {RADIUS_CLASS_ATTRIBUTE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 25*/ {RADIUS_VENDOR_SPECIFIC, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 26*/ {RADIUS_SESSION_TIMEOUT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 27*/ {RADIUS_IDLE_TIMEOUT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 28*/ {RADIUS_TERMINATION_ACTION, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 29*/ {RADIUS_CALLED_STATION_ID, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 30*/ {RADIUS_CALLING_STATION_ID, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 31*/ {RADIUS_NAS_IDENTIFIER, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 32*/ {RADIUS_PROXY_STATE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 33*/ {RADIUS_LOGIN_LAT_SERVICE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 34*/ {RADIUS_LOGIN_LAT_NODE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 35*/ {RADIUS_LOGIN_LAT_GROUP, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 36*/ {RADIUS_FRAMED_APPLETALK_LINK, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 37*/ {RADIUS_FRAMED_APPLETALK_NETWORK, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 38*/ {RADIUS_FRAMED_APPLETALK_ZONE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 39*/ {RADIUS_ACCT_STATUS_TYPE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 40*/ {RADIUS_ACCT_DELAY_TIME, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 41*/ {RADIUS_ACCT_INPUT_OCTETS, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 42*/ {RADIUS_ACCT_OUTPUT_OCTETS, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 43*/ {RADIUS_ACCT_SESSION_ID, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 44*/ {RADIUS_ACCT_AUTHENTIC, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 45*/ {RADIUS_ACCT_SESSION_TIME, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 46*/ {RADIUS_ACCT_INPUT_PACKETS, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 47*/ {RADIUS_ACCT_OUTPUT_PACKETS, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 48*/ {RADIUS_ACCT_TERMINATE_CAUSE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 49*/ {RADIUS_ACCT_MULTI_SESSION_ID, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 50*/ {RADIUS_ACCT_LINK_COUNT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 51*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 52*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 53*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 54*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 55*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 56*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 57*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 58*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 59*/ {RADIUS_CHAP_CHALLENGE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 60*/ {RADIUS_NAS_PORT_TYPE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 61*/ {RADIUS_PORT_LIMIT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 62*/ {RADIUS_LOGIN_LAT_PORT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 63*/ {RADIUS_TUNNEL_TYPE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 64*/ {RADIUS_TUNNEL_MEDIUM_TYPE, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 65*/ {RADIUS_TUNNEL_CLIENT_ENDPOINT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 66*/ {RADIUS_TUNNEL_SERVER_ENDPOINT, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 67*/ {RADIUS_ACCT_TUNNEL_CONNECTION, ILLEGAL, NO_MODIFIER, 0}, /* 68*/ {RADIUS_TUNNEL_PASSWORD, ILLEGAL, NO_MODIFIER, 0}, /* 69*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 70*/ {0, ZERO_OR_MORE, NO_MODIFIER, 0}, /* 71*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -