⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radius.h

📁 国际标准协议的
💻 H
字号:
/*
 *
 *	RADIUS
 *	Remote Authentication Dial In User Service
 *
 *	@(#)radius.h	2.0 6/29
 */

#include "conf.h"

#define AUTH_VECTOR_LEN		16
#define AUTH_PASS_LEN		16
#define AUTH_SECRET_LEN		16
#define AUTH_STRING_LEN		128	/* maximum of 254 */
#define	MAX_BUF_SIZE		4096
#define	MAX_USER_LEN		32
#define	MAX_REALM_LEN		64
#define	BUF_SIZE		4096
#define BUF_SIZE_16		16
#define BUF_SIZE_32		32
#define BUF_SIZE_64		64
#define BUF_SIZE_128		128
#define BUF_SIZE_256		256
#define BUF_SIZE_512		512
#define BUF_SIZE_1024		1024
#define BUF_SIZE_2048		2048
#define BUF_SIZE_4096		4096

typedef struct pw_auth_hdr {
	u_char		code;
	u_char		id;
	u_short		length;
	u_char		vector[AUTH_VECTOR_LEN];
	u_char		data[2];
} AUTH_HDR;

#define AUTH_HDR_LEN			20
#define CHAP_VALUE_LENGTH		16

#define PW_AUTH_UDP_PORT		1645
#define PW_ACCT_UDP_PORT		1646
#define XIAOFEI_TCP_PORT		8810
#define XIAOFEI_IP_ADDR			"210.75.32.2"
#define ACCTNAME			"system"
#define ACCTPASS			"mpop"

#define PW_TYPE_STRING			0
#define PW_TYPE_INTEGER			1
#define PW_TYPE_IPADDR			2
#define PW_TYPE_DATE			3


#define	PW_AUTHENTICATION_REQUEST	1
#define	PW_AUTHENTICATION_ACK		2
#define	PW_AUTHENTICATION_REJECT	3
#define	PW_ACCOUNTING_REQUEST		4
#define	PW_ACCOUNTING_RESPONSE		5
#define	PW_ACCOUNTING_STATUS		6
#define PW_PASSWORD_REQUEST		7
#define PW_PASSWORD_ACK			8
#define PW_PASSWORD_REJECT		9
#define	PW_ACCOUNTING_MESSAGE		10
#define PW_ACCESS_CHALLENGE		11
#define PW_ACCT_SESSION_ID		44

/*-----------------99-5-4 17:33---------------------
 * New definition variable about accounting
 * --------------------------------------------------*/
#define PW_ACCOUNTING_START        1
#define PW_ACCOUNTING_STOP         2
#define PW_ACCOUNTING_ON           7
#define PW_ACCOUNTING_OFF          8
#define OCTET			   8
#define DECTET			   10
#define HEXTET		   	   16
#define PW_ZERO		"00ZERO00"

#define	PW_USER_NAME			1
#define	PW_PASSWORD			2
#define	PW_CHAP_PASSWORD		3
#define	PW_CLIENT_ID			4
#define PW_NAS_IP_ADDRESS		4
#define	PW_CLIENT_PORT_ID		5
#define PW_NAS_PORT			5
#define	PW_USER_SERVICE_TYPE		6
#define	PW_FRAMED_PROTOCOL		7
#define	PW_FRAMED_ADDRESS		8
#define	PW_FRAMED_NETMASK		9
#define	PW_FRAMED_ROUTING		10
#define	PW_FRAMED_FILTER_ID		11
#define	PW_FRAMED_MTU			12
#define	PW_FRAMED_COMPRESSION		13
#define	PW_LOGIN_HOST			14
#define	PW_LOGIN_SERVICE		15
#define	PW_LOGIN_TCP_PORT		16
#define PW_OLD_PASSWORD			17
#define PW_PORT_MESSAGE			18
#define PW_DIALBACK_NO			19
#define PW_DIALBACK_NAME		20
#define PW_EXPIRATION			21
#define PW_FRAMED_ROUTE			22
#define PW_FRAMED_IPXNET		23
#define PW_STATE			24
#define PW_SESSION_TIMEOUT		27
#define PW_CALLED_STATION_ID		30
#define PW_CALLING_STATION_ID		31
#define PW_PROXY_STATE			33
#define PW_AUTH_TYPE			1000
#define PW_PREFIX			1003
#define PW_SUFFIX			1004
#define PW_GROUP			1005
#define PW_CRYPT_PASSWORD		1006
#define PW_ENCRYPT_PASSWORD		1031
#define PW_SIMULTANEOUS_USE		1034

#define PW_ACCT_STATUS_TYPE		40
#define PW_ACCT_DELAY_TIME		41
#define PW_ACCT_INPUT_OCTETS		42
#define PW_ACCT_OUTPUT_OCTETS		43
#define PW_ACCT_SESSION_ID		44
#define PW_ACCT_AUTHENTIC		45
#define PW_ACCT_SESSION_TIME		46

/*
 *	INTEGER TRANSLATIONS
 */

/*	USER TYPES	*/

#define	PW_LOGIN_USER			1
#define	PW_FRAMED_USER			2
#define	PW_DIALBACK_LOGIN_USER		3
#define	PW_DIALBACK_FRAMED_USER		4

/*	FRAMED PROTOCOLS	*/

#define	PW_PPP				1
#define	PW_SLIP				2

/*	FRAMED ROUTING VALUES	*/

#define	PW_NONE				0
#define	PW_BROADCAST			1
#define	PW_LISTEN			2
#define	PW_BROADCAST_LISTEN		3

/*	FRAMED COMPRESSION TYPES	*/

#define	PW_VAN_JACOBSEN_TCP_IP		1

/*	LOGIN SERVICES	*/

#define	PW_TELNET			0
#define	PW_RLOGIN			1
#define	PW_TCP_CLEAR			2
#define	PW_PORTMASTER			3

/*	AUTHENTICATION LEVEL	*/

#define PW_AUTH_NONE			0
#define PW_AUTH_RADIUS			1
/* #define PW_AUTH_LOCAL			2 */

/*	STATUS TYPES	*/

#define PW_STATUS_START			1
#define PW_STATUS_STOP			2
#define PW_STATUS_ALIVE			3
#define PW_ACCT_START			1
#define PW_ACCT_STOP			2

/* 	Auth-Type Values */

#define	PW_AUTH_LOCAL			0
#define PW_AUTH_CRYPT_LOCAL		1
#define PW_AUTH_SYSTEM			2
#define PW_AUTH_REJECT			3

/* Default Database File Names */

#define RADIUS_DIR		"/usr/radius/raddb"
#define RADACCT_DIR		"/usr/radius/radacct"
#define errlogfile		"/usr/radius/radacct/error.log"

#define RADIUS_DICTIONARY	"dictionary"
#define RADIUS_CLIENTS		"clients"
#define RADIUS_USERS		"users"
#define RADIUS_HOLD		"holdusers"
#define RADIUS_LOG		"logfile"
#define RADIUS_ONLINE		"online"
#define RADIUS_RESULT		"result"
#define RADIUS_REALMS		"realms"

/* Server data structures */

typedef struct dict_attr {
	char			name[32];
	int			value;
	int			type;
	struct dict_attr	*next;
} DICT_ATTR;

typedef struct dict_value {
	char			attrname[32];
	char			name[32];
	int			value;
	struct dict_value	*next;
} DICT_VALUE;

typedef struct value_pair {
	char			name[32];
	int			attribute;
	int			type;
	UINT4			lvalue;
	char			strvalue[AUTH_STRING_LEN];
	struct value_pair	*next;
} VALUE_PAIR;

typedef struct auth_req {
	UINT4			ipaddr;		/* Client IP addr */
	u_short			udp_port;	/* Serv port */
	u_char			id;
	u_char			code;		/* Request or reply type */
	u_char			vector[16];
	u_char			secret[16];	/* Client secret key */
	u_char			digest[16];	/* Calculated MD5 Password Digest */
	VALUE_PAIR		*request;	/* User's request attr */
	int			child_pid;	/* Process ID of child */
	UINT4			timestamp;
	int			proxy_state;	/* If it is a forwarding sign */
	u_char			user_name[32];	/* User's Login name */
	u_char			realm[64];	/* User's realm	*/
	UINT4			r_serv;		/* Remote radius server */
	u_char			r_secret[16];	/* Remote secret key */
	VALUE_PAIR		*check_item;	/* Local user's ckeck item */
	VALUE_PAIR		*reply_item;	/* Local user's reply item */
	struct auth_req		*next;		/* Next active request */
} AUTH_REQ;

typedef struct acct_status_start {
    u_char    	user_name[40];
    u_char    	acct_session_id[10];
    char    	acct_start_time[26];
    char     	nas_ip_addr[32];
    long       	nas_port;
    struct    	acct_status_start *next;
} ACCT_START;

typedef struct acct_status_stop {
    u_char    	user_name[40];
    u_char	acct_session_id[10];
    char    	acct_start_time[26];
    char    	acct_stop_time[26];
    char   	framed_ip_addr[32];	
    long     	acct_input_octets;
    long    	acct_output_octets;
    long    	acct_session_time;
    struct  	acct_status_stop *next;
} ACCT_STOP;

typedef struct realm_struct {
	char	realm_serv[32];
	char	secret_key[16];
	char	realm_name[64];
	struct realm_struct	*next;
} REALM_STRUCT;

typedef struct client_struct {
	char	client_host[32];
	char	secret_key[16];
	char	client_type[16];
	struct client_struct	*next;
} CLIENT_STRUCT;

typedef struct user_online {
	char	user_name[32];		/* User's Login name */
	char	nas_ip_addr[16];	/* Remote NAS IP address */
	int	nas_port;		/* Remote NAS port */
	u_char	acct_session_id[10]; 	/* Accounting session ID */
	char	login_time[26];		/* Log in time or start time */
	u_short active_status;		/* User's active status */
	struct user_online	*next;
} USER_ONLINE;	 

typedef struct user_result {
	char 	user_name[32];		/* User Login Name */
	UINT4	nas_ip_addr;		/* Nas IP address */
	int	nas_port;		/* User Logined Nas Port */
	char	called_station_id[16];	/* Called Phone number */
	char	calling_station_id[16];	/* Calling Phone number */
	UINT4	framed_ip_addr;		/* User achieved IP address */
	char	acct_session_id[9];	/* Session ID */
	long	acct_session_start_time;/* Session start time */ 
	long	acct_session_stop_time;	/* Sesstion stop time */
	long	acct_session_time;	/* Session time */
	long	acct_input_octets;	/* Input Octets */
	long	acct_output_octets;	/* Output Octets */
	struct user_result	*next;
} USER_RESULT;

typedef struct account_pw {
	char	cid[10];	/* Card ID */
	char	passwd[16];	/* Card Password */
	char	type;		/* Card type */
	char	status;		/* Card Active Status */
	long	first_date;	/* First login time */
	long	last_date;	/* Last login time */
	char	account_id[12];	/* Bank account id */
	long	left_fee;	/* Left available fee */
} ACCOUNT_PW;

#define DEBUG   if(debug_flag)printf

#define SECONDS_PER_DAY		86400
#define MAX_REQUEST_TIME	30
#define CLEANUP_DELAY		5
#define MAX_REQUESTS		100
#define RETRY_MAX		3
#define	CACHE_SIZE		128

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -