|
version 1.1.1.2, 2013/07/22 08:44:29
|
version 1.1.1.6.2.1, 2023/09/27 11:08:01
|
|
Line 5
|
Line 5
|
| * |
* |
| */ |
*/ |
| |
|
| |
#ifndef _RADIUS_H_ |
| |
#define _RADIUS_H_ |
| |
|
| |
#include "defs.h" |
| |
|
| |
#ifdef USE_RADIUS |
| |
|
| #ifdef CCP_MPPC |
#ifdef CCP_MPPC |
| #include <netgraph/ng_mppc.h> |
#include <netgraph/ng_mppc.h> |
| #endif |
#endif |
|
Line 15
|
Line 22
|
| |
|
| #include "iface.h" |
#include "iface.h" |
| |
|
| #ifndef _RADIUS_H_ |
|
| #define _RADIUS_H_ |
|
| |
|
| /* |
/* |
| * DEFINITIONS |
* DEFINITIONS |
| */ |
*/ |
| |
|
| #define RADIUS_CHAP 1 | #define RADIUS_CHAP 1 |
| #define RADIUS_PAP 2 | #define RADIUS_PAP 2 |
| #define RADIUS_EAP 3 | #define RADIUS_EAP 3 |
| #define RADIUS_MAX_SERVERS 10 | #define RADIUS_MAX_SERVERS 10 |
| |
|
| #ifndef RAD_UPDATE | #ifndef RAD_UPDATE |
| #define RAD_UPDATE 3 | #define RAD_UPDATE 3 |
| #endif | #endif |
| |
|
| #ifndef RAD_ACCT_INPUT_GIGAWORDS | #ifndef RAD_ACCT_INPUT_GIGAWORDS |
| #define RAD_ACCT_INPUT_GIGAWORDS 52 | #define RAD_ACCT_INPUT_GIGAWORDS 52 |
| #endif | #endif |
| |
|
| #ifndef RAD_ACCT_OUTPUT_GIGAWORDS | #ifndef RAD_ACCT_OUTPUT_GIGAWORDS |
| #define RAD_ACCT_OUTPUT_GIGAWORDS 53 | #define RAD_ACCT_OUTPUT_GIGAWORDS 53 |
| #endif | #endif |
| |
|
| #ifndef RAD_TUNNEL_TYPE | #ifndef RAD_TUNNEL_TYPE |
| #define RAD_TUNNEL_TYPE 64 | #define RAD_TUNNEL_TYPE 64 |
| #endif | #endif |
| |
|
| #ifndef RAD_TUNNEL_MEDIUM_TYPE | #ifndef RAD_TUNNEL_MEDIUM_TYPE |
| #define RAD_TUNNEL_MEDIUM_TYPE 65 | #define RAD_TUNNEL_MEDIUM_TYPE 65 |
| #endif | #endif |
| |
|
| #ifndef RAD_TUNNEL_CLIENT_ENDPOINT | #ifndef RAD_TUNNEL_CLIENT_ENDPOINT |
| #define RAD_TUNNEL_CLIENT_ENDPOINT 66 | #define RAD_TUNNEL_CLIENT_ENDPOINT 66 |
| #endif | #endif |
| |
|
| #ifndef RAD_TUNNEL_SERVER_ENDPOINT | #ifndef RAD_TUNNEL_SERVER_ENDPOINT |
| #define RAD_TUNNEL_SERVER_ENDPOINT 67 | #define RAD_TUNNEL_SERVER_ENDPOINT 67 |
| #endif | #endif |
| |
|
| #ifndef RAD_EAP_MESSAGE | #ifndef RAD_EAP_MESSAGE |
| #define RAD_EAP_MESSAGE 79 | #define RAD_EAP_MESSAGE 79 |
| #endif | #endif |
| |
|
| #ifndef RAD_MESSAGE_AUTHENTIC | #ifndef RAD_MESSAGE_AUTHENTIC |
| #define RAD_MESSAGE_AUTHENTIC 80 | #define RAD_MESSAGE_AUTHENTIC 80 |
| #endif | #endif |
| |
|
| #ifndef RAD_ACCT_INTERIM_INTERVAL | #ifndef RAD_ACCT_INTERIM_INTERVAL |
| #define RAD_ACCT_INTERIM_INTERVAL 85 | #define RAD_ACCT_INTERIM_INTERVAL 85 |
| #endif | #endif |
| |
|
| #ifndef RAD_NAS_PORT_ID | #ifndef RAD_NAS_PORT_ID |
| #define RAD_NAS_PORT_ID 87 | #define RAD_NAS_PORT_ID 87 |
| #endif | #endif |
| |
|
| #ifndef RAD_FRAMED_POOL | #ifndef RAD_FRAMED_POOL |
| #define RAD_FRAMED_POOL 88 | #define RAD_FRAMED_POOL 88 |
| #endif | #endif |
| |
|
| #ifndef RAD_TUNNEL_CLIENT_AUTH_ID | #ifndef RAD_TUNNEL_CLIENT_AUTH_ID |
| #define RAD_TUNNEL_CLIENT_AUTH_ID 90 | #define RAD_TUNNEL_CLIENT_AUTH_ID 90 |
| #endif | #endif |
| |
|
| #ifndef RAD_TUNNEL_SERVER_AUTH_ID | #ifndef RAD_TUNNEL_SERVER_AUTH_ID |
| #define RAD_TUNNEL_SERVER_AUTH_ID 91 | #define RAD_TUNNEL_SERVER_AUTH_ID 91 |
| #endif | #endif |
| |
|
| #ifndef RAD_MAX_ATTR_LEN | #ifndef RAD_MAX_ATTR_LEN |
| #define RAD_MAX_ATTR_LEN 253 | #define RAD_MAX_ATTR_LEN 253 |
| #endif | #endif |
| |
|
| /* for mppe-keys */ | #ifndef RAD_FRAMED_IPV6_ADDRESS |
| #define AUTH_LEN 16 | #define RAD_FRAMED_IPV6_ADDRESS 168 |
| #define SALT_LEN 2 | #endif |
| |
|
| /* max. length of RAD_ACCT_SESSION_ID, RAD_ACCT_MULTI_SESSION_ID */ | /* for mppe-keys */ |
| #define RAD_ACCT_MAX_SESSIONID 256 | #define AUTH_LEN 16 |
| | #define SALT_LEN 2 |
| |
|
| #define RAD_VENDOR_MPD 12341 | /* max. length of RAD_ACCT_SESSION_ID, RAD_ACCT_MULTI_SESSION_ID */ |
| #define RAD_MPD_RULE 1 | #define RAD_ACCT_MAX_SESSIONID 256 |
| #define RAD_MPD_PIPE 2 | |
| #define RAD_MPD_QUEUE 3 | |
| #define RAD_MPD_TABLE 4 | |
| #define RAD_MPD_TABLE_STATIC 5 | |
| #define RAD_MPD_FILTER 6 | |
| #define RAD_MPD_LIMIT 7 | |
| #define RAD_MPD_INPUT_OCTETS 8 | |
| #define RAD_MPD_INPUT_PACKETS 9 | |
| #define RAD_MPD_OUTPUT_OCTETS 10 | |
| #define RAD_MPD_OUTPUT_PACKETS 11 | |
| #define RAD_MPD_LINK 12 | |
| #define RAD_MPD_BUNDLE 13 | |
| #define RAD_MPD_IFACE 14 | |
| #define RAD_MPD_IFACE_INDEX 15 | |
| #define RAD_MPD_INPUT_ACCT 16 | |
| #define RAD_MPD_OUTPUT_ACCT 17 | |
| #define RAD_MPD_ACTION 18 | |
| #define RAD_MPD_PEER_IDENT 19 | |
| #define RAD_MPD_IFACE_NAME 20 | |
| #define RAD_MPD_IFACE_DESCR 21 | |
| #define RAD_MPD_IFACE_GROUP 22 | |
| #define RAD_MPD_DROP_USER 154 | |
| |
|
| /* Configuration options */ | #define RAD_VENDOR_MPD 12341 |
| enum { | #define RAD_MPD_RULE 1 |
| RADIUS_CONF_MESSAGE_AUTHENTIC | #define RAD_MPD_PIPE 2 |
| }; | #define RAD_MPD_QUEUE 3 |
| | #define RAD_MPD_TABLE 4 |
| | #define RAD_MPD_TABLE_STATIC 5 |
| | #define RAD_MPD_FILTER 6 |
| | #define RAD_MPD_LIMIT 7 |
| | #define RAD_MPD_INPUT_OCTETS 8 |
| | #define RAD_MPD_INPUT_PACKETS 9 |
| | #define RAD_MPD_OUTPUT_OCTETS 10 |
| | #define RAD_MPD_OUTPUT_PACKETS 11 |
| | #define RAD_MPD_LINK 12 |
| | #define RAD_MPD_BUNDLE 13 |
| | #define RAD_MPD_IFACE 14 |
| | #define RAD_MPD_IFACE_INDEX 15 |
| | #define RAD_MPD_INPUT_ACCT 16 |
| | #define RAD_MPD_OUTPUT_ACCT 17 |
| | #define RAD_MPD_ACTION 18 |
| | #define RAD_MPD_PEER_IDENT 19 |
| | #define RAD_MPD_IFACE_NAME 20 |
| | #define RAD_MPD_IFACE_DESCR 21 |
| | #define RAD_MPD_IFACE_GROUP 22 |
| | #define RAD_MPD_DROP_USER 154 |
| |
|
| extern const struct cmdtab RadiusSetCmds[]; | /* Configuration options */ |
| extern const struct cmdtab RadiusUnSetCmds[]; | enum { |
| | RADIUS_CONF_MESSAGE_AUTHENTIC |
| | }; |
| |
|
| /* Configuration for a radius server */ | extern const struct cmdtab RadiusSetCmds[]; |
| struct radiusserver_conf { | extern const struct cmdtab RadiusUnSetCmds[]; |
| char *hostname; | |
| char *sharedsecret; | |
| in_port_t auth_port; | |
| in_port_t acct_port; | |
| struct radiusserver_conf *next; | |
| }; | |
| typedef struct radiusserver_conf *RadServe_Conf; | |
| |
|
| struct radiusconf { | /* Configuration for a radius server */ |
| int radius_timeout; | struct radiusserver_conf { |
| int radius_retries; | char *hostname; |
| struct in_addr radius_me; | char *sharedsecret; |
| struct u_addr radius_mev6; | in_port_t auth_port; |
| char *identifier; | in_port_t acct_port; |
| char *file; | struct radiusserver_conf *next; |
| struct radiusserver_conf *server; | }; |
| struct optinfo options; /* Configured options */ | typedef struct radiusserver_conf *RadServe_Conf; |
| }; | |
| typedef struct radiusconf *RadConf; | |
| |
|
| struct rad_chapvalue { | struct radiusconf { |
| u_char ident; | int radius_timeout; |
| u_char response[CHAP_MAX_VAL]; | int radius_retries; |
| }; | #ifdef HAVE_RAD_BIND |
| | struct in_addr src_addr; |
| | #endif |
| | struct in_addr radius_me; |
| | struct u_addr radius_mev6; |
| | char *identifier; |
| | char *file; |
| | struct radiusserver_conf *server; |
| | struct optinfo options; /* Configured options */ |
| | }; |
| | typedef struct radiusconf *RadConf; |
| |
|
| struct rad_mschapvalue { | struct rad_chapvalue { |
| u_char ident; | u_char ident; |
| u_char flags; | u_char response[CHAP_MAX_VAL]; |
| u_char lm_response[24]; | }; |
| u_char nt_response[24]; | |
| }; | |
| |
|
| struct rad_mschapv2value { | struct rad_mschapvalue { |
| u_char ident; | u_char ident; |
| u_char flags; | u_char flags; |
| u_char pchallenge[16]; | u_char lm_response[24]; |
| u_char reserved[8]; | u_char nt_response[24]; |
| u_char response[24]; | }; |
| }; | |
| |
|
| struct authdata; | struct rad_mschapv2value { |
| | u_char ident; |
| | u_char flags; |
| | u_char pchallenge[16]; |
| | u_char reserved[8]; |
| | u_char response[24]; |
| | }; |
| |
|
| |
struct authdata; |
| |
|
| /* |
/* |
| * FUNCTIONS |
* FUNCTIONS |
| */ |
*/ |
| |
|
| extern void RadiusInit(Link l); | extern void RadiusInit(Link l); |
| extern int RadiusAuthenticate(struct authdata *auth); | extern int RadiusAuthenticate(struct authdata *auth); |
| extern int RadiusAccount(struct authdata *auth); | extern int RadiusAccount(struct authdata *auth); |
| extern void RadiusClose(struct authdata *auth); | extern void RadiusClose(struct authdata *auth); |
| extern void RadiusEapProxy(void *arg); | extern void RadiusEapProxy(void *arg); |
| extern int RadStat(Context ctx, int ac, char *av[], void *arg); | extern int RadStat(Context ctx, int ac, const char *const av[], const void *arg); |
| |
|
| |
#endif /* USE_RADIUS */ |
| #endif |
#endif |