/*
- * $Id: radiusclient.h,v 1.2 2002/02/27 15:51:19 dfs Exp $
+ * $Id: radiusclient.h,v 1.8 2002/07/25 16:29:16 dfs Exp $
*
* Copyright (C) 1995,1996,1997,1998 Lars Fenneberg
*
# define __P(protos) ()
#endif
+#ifndef _UINT4_T
+#ifdef _LP64
+typedef unsigned int UINT4;
+typedef int INT4;
+#else
typedef unsigned long UINT4;
-typedef long INT4;
+typedef long INT4;
+#endif
+#endif
#define AUTH_VECTOR_LEN 16
#define AUTH_PASS_LEN (3 * 16) /* multiple of 16 */
#define MAX_SECRET_LENGTH (3 * 16) /* MUST be multiple of 16 */
#define CHAP_VALUE_LENGTH 16
-#define PW_AUTH_UDP_PORT 1645
-#define PW_ACCT_UDP_PORT 1646
+#define PW_AUTH_UDP_PORT 1812
+#define PW_ACCT_UDP_PORT 1813
#define PW_TYPE_STRING 0
#define PW_TYPE_INTEGER 1
#define PW_PORT_LIMIT 62 /* integer */
#define PW_LOGIN_LAT_PORT 63 /* string */
+/* Vendor RADIUS attribute-value pairs */
+#define PW_MS_CHAP_CHALLENGE 11 /* string */
+#define PW_MS_CHAP_RESPONSE 1 /* string */
+#define PW_MS_CHAP2_RESPONSE 25 /* string */
+#define PW_MS_CHAP2_SUCCESS 26 /* string */
+#define PW_MS_MPPE_ENCRYPTION_POLICY 7 /* string */
+#define PW_MS_MPPE_ENCRYPTION_TYPE 8 /* string */
+#define PW_MS_MPPE_ENCRYPTION_TYPES PW_MS_MPPE_ENCRYPTION_TYPE
+#define PW_MS_CHAP_MPPE_KEYS 12 /* string */
+#define PW_MS_MPPE_SEND_KEY 16 /* string */
+#define PW_MS_MPPE_RECV_KEY 17 /* string */
+
/* Accounting */
#define PW_ACCT_STATUS_TYPE 40 /* integer */
#define PW_ACCT_MULTI_SESSION_ID 50 /* string */
#define PW_ACCT_LINK_COUNT 51 /* integer */
+/* From RFC 2869 */
+#define PW_ACCT_INTERIM_INTERVAL 85 /* integer */
+
/* Merit Experimental Extensions */
#define PW_USER_ID 222 /* string */
#define PW_USER_REALM 223 /* string */
+
+/* Session limits */
+#define PW_SESSION_OCTETS_LIMIT 227 /* integer */
+#define PW_OCTETS_DIRECTION 228 /* integer */
+
/* Integer Translations */
/* SERVICE TYPES */
#define PW_LOCAL 2
#define PW_REMOTE 3
+/* Session-Octets-Limit */
+#define PW_OCTETS_DIRECTION_SUM 0
+#define PW_OCTETS_DIRECTION_IN 1
+#define PW_OCTETS_DIRECTION_OUT 2
+#define PW_OCTETS_DIRECTION_MAX 3
+
+
/* Vendor codes */
#define VENDOR_NONE (-1)
+#define VENDOR_MICROSOFT 311
/* Server data structures */
int vendorcode;
int type;
UINT4 lvalue;
- char strvalue[AUTH_STRING_LEN + 1];
+ u_char strvalue[AUTH_STRING_LEN + 1];
struct value_pair *next;
} VALUE_PAIR;
VALUE_PAIR *receive_pairs; /* Where to place received a/v pairs */
} SEND_DATA;
+typedef struct request_info
+{
+ char secret[MAX_SECRET_LENGTH + 1];
+ u_char request_vector[AUTH_VECTOR_LEN];
+} REQUEST_INFO;
+
#ifndef MIN
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#endif
void rc_buildreq __P((SEND_DATA *, int, char *, unsigned short, int, int));
unsigned char rc_get_seqnbr __P((void));
-int rc_auth __P((UINT4, VALUE_PAIR *, VALUE_PAIR **, char *));
+int rc_auth __P((UINT4, VALUE_PAIR *, VALUE_PAIR **, char *, REQUEST_INFO *));
+int rc_auth_using_server __P((SERVER *, UINT4, VALUE_PAIR *, VALUE_PAIR **,
+ char *, REQUEST_INFO *));
int rc_auth_proxy __P((VALUE_PAIR *, VALUE_PAIR **, char *));
int rc_acct __P((UINT4, VALUE_PAIR *));
+int rc_acct_using_server __P((SERVER *, UINT4, VALUE_PAIR *));
int rc_acct_proxy __P((VALUE_PAIR *));
int rc_check __P((char *, unsigned short, char *));
/* sendserver.c */
-int rc_send_server __P((SEND_DATA *, char *));
+int rc_send_server __P((SEND_DATA *, char *, REQUEST_INFO *));
/* util.c */