1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
|
/*
*
* RADIUS
* Remote Authentication Dial In User Service
*
*
* Livingston Enterprises, Inc.
* 6920 Koll Center Parkway
* Pleasanton, CA 94566
*
* Copyright 1992-1996 Livingston Enterprises, Inc. All Rights Reserved.
*
* This software source code is provided under license from
* Livingston Enterprises, Inc., the terms and conditions of which
* are set forth in an End User Agreement that is contained in
* both the product packaging, and electronically on the
* Livingston ftp site. This software may only be used in
* conjunction with Livingston (or Livingston authorized)
* products. Livingston makes no warranties to any licensee
* concerning the applicability of the software to licensee's
* specific requirements or the suitability of the software for
* any intended use. Licensee shall not remove, modify or alter
* any copyright and/or other proprietary rights notice and must
* faithfully reproduce all such notices on any copies or
* modifications to this software that it makes.
*
* Livingston Enterprises, Inc. makes no representations about
* the suitability of this software for any purpose. It is
* provided "as is" without express or implied warranty.
*
*/
/*
* @(#)radius.h 1.15 10/30/96
*/
#ifndef RADIUS_H
#define RADIUS_H
#define PASSCHANGE /* comment this out to turn off radpass */
#define AUTH_VECTOR_LEN 16
#define AUTH_PASS_LEN 16
#define AUTH_STRING_LEN 128 /* maximum of 254 */
#ifndef UINT4
typedef unsigned long UINT4;
#endif
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 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
#ifdef PASSCHANGE
#define PW_PASSWORD_REQUEST 7
#define PW_PASSWORD_ACK 8
#define PW_PASSWORD_REJECT 9
#endif /* PASSCHANGE */
#define PW_ACCESS_CHALLENGE 11
#define PW_USER_NAME 1
#define PW_PASSWORD 2
#define PW_CHAP_PASSWORD 3
#define PW_CLIENT_ID 4
#define PW_CLIENT_PORT_ID 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
#ifdef PASSCHANGE
#define PW_OLD_PASSWORD 17
#endif
#define PW_PORT_MESSAGE 18
#define PW_DIALBACK_NO 19
#define PW_DIALBACK_NAME 20
#define PW_FRAMED_ROUTE 22
#define PW_FRAMED_IPXNET 23
#define PW_STATE 24
#define PW_TERMINATION 29
#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
/*
* Non-Protocol Attributes
*/
#define PW_EXPIRATION 21
#define PW_AUTHTYPE 1000
#define PW_MENU 1001
#define PW_TERMINATION_MENU 1002
#define PW_PREFIX 1003
#define PW_SUFFIX 1004
/*
* 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_JACOBSON_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
/* TERMINATION OPTIONS */
#define PW_TERM_DEFAULT 0
#define PW_TERM_RADIUS_REQUEST 1
/* Internal Authentication Types */
#define PW_AUTHTYPE_LOCAL 0
#define PW_AUTHTYPE_UNIX 1
#define PW_AUTHTYPE_SECURID 2
/* Default Database File Names */
#define RADIUS_DIR "/etc/raddb"
#define RADACCT_DIR "/usr/adm/radacct"
#define RADIUS_DICTIONARY "dictionary"
#define RADIUS_CLIENTS "clients"
#define RADIUS_CLIENT_CACHE "clcache"
#define RADIUS_USERS "users"
#define RADIUS_HOLD "holdusers"
#define RADIUS_SRV "server"
/* 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;
u_short udp_port;
u_char id;
u_char code;
u_char vector[16];
u_char secret[16];
VALUE_PAIR *request;
int child_pid; /* Process ID of child */
UINT4 timestamp;
struct auth_req *next; /* Next active request */
} AUTH_REQ;
#define SECONDS_PER_DAY 86400
#define CLEANUP_DELAY 5
#define MAX_REQUESTS 100
#if defined(SECURID)
#define MAX_REQUEST_TIME 120
#else
#define MAX_REQUEST_TIME 30
#endif
#define RADIUS_MSG_KEY(pid) (('r' << 24) + ((pid) & 0x00ffffff))
#endif /* RADIUS_H */
|