📄 radius.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 + -