--- /dev/null
+/*
+ * radius.h Constants of the radius protocol.
+ *
+ * Version: $Id$
+ *
+ */
+
+
+#define PW_TYPE_STRING 0
+#define PW_TYPE_INTEGER 1
+#define PW_TYPE_IPADDR 2
+#define PW_TYPE_DATE 3
+#define PW_TYPE_ABINARY 4
+#define PW_TYPE_OCTETS 5
+#define PW_TYPE_IFID 6
+#define PW_TYPE_IPV6ADDR 7
+#define PW_TYPE_IPV6PREFIX 8
+#define PW_TYPE_BYTE 9
+#define PW_TYPE_SHORT 10
+#define PW_TYPE_ETHERNET 11
+#define PW_TYPE_SIGNED 12
+#define PW_TYPE_COMBO_IP 13
+#define PW_TYPE_TLV 14
+
+#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_STATUS_SERVER 12
+#define PW_STATUS_CLIENT 13
+#define PW_DISCONNECT_REQUEST 40
+#define PW_DISCONNECT_ACK 41
+#define PW_DISCONNECT_NAK 42
+#define PW_COA_REQUEST 43
+#define PW_COA_ACK 44
+#define PW_COA_NAK 45
+
+#define PW_AUTH_UDP_PORT 1812
+#define PW_ACCT_UDP_PORT 1813
+#define PW_POD_UDP_PORT 1700
+#define PW_COA_UDP_PORT 3799
+
+#define PW_USER_NAME 1
+#define PW_USER_PASSWORD 2
+#define PW_PASSWORD 2
+#define PW_CHAP_PASSWORD 3
+#define PW_NAS_IP_ADDRESS 4
+#define PW_NAS_PORT 5
+#define PW_SERVICE_TYPE 6
+#define PW_FRAMED_PROTOCOL 7
+#define PW_FRAMED_IP_ADDRESS 8
+#define PW_FRAMED_IP_NETMASK 9
+#define PW_FRAMED_ROUTING 10
+#define PW_FILTER_ID 11
+#define PW_FRAMED_MTU 12
+#define PW_FRAMED_COMPRESSION 13
+#define PW_LOGIN_IP_HOST 14
+#define PW_LOGIN_SERVICE 15
+#define PW_LOGIN_TCP_PORT 16
+#define PW_OLD_PASSWORD 17
+#define PW_REPLY_MESSAGE 18
+#define PW_CALLBACK_NUMBER 19
+#define PW_CALLBACK_ID 20
+#if 0
+/*
+ * Deprecated, and no longer used.
+ */
+#define PW_EXPIRATION 21
+#endif
+#define PW_FRAMED_ROUTE 22
+#define PW_FRAMED_IPXNET 23
+#define PW_STATE 24
+#define PW_CLASS 25
+#define PW_VENDOR_SPECIFIC 26
+#define PW_SESSION_TIMEOUT 27
+#define PW_IDLE_TIMEOUT 28
+#define PW_CALLED_STATION_ID 30
+#define PW_CALLING_STATION_ID 31
+#define PW_NAS_IDENTIFIER 32
+#define PW_PROXY_STATE 33
+
+#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
+#define PW_ACCT_INPUT_PACKETS 47
+#define PW_ACCT_OUTPUT_PACKETS 48
+#define PW_ACCT_TERMINATE_CAUSE 49
+
+#define PW_EVENT_TIMESTAMP 55
+
+#define PW_CHAP_CHALLENGE 60
+#define PW_NAS_PORT_TYPE 61
+#define PW_PORT_LIMIT 62
+
+#define PW_ARAP_PASSWORD 70
+#define PW_ARAP_FEATURES 71
+#define PW_ARAP_ZONE_ACCESS 72
+#define PW_ARAP_SECURITY 73
+#define PW_ARAP_SECURITY_DATA 74
+#define PW_PASSWORD_RETRY 75
+#define PW_PROMPT 76
+#define PW_CONNECT_INFO 77
+#define PW_CONFIGURATION_TOKEN 78
+#define PW_EAP_MESSAGE 79
+#define PW_MESSAGE_AUTHENTICATOR 80
+
+#define PW_ARAP_CHALLENGE_RESPONSE 84
+#define PW_NAS_PORT_ID_STRING 87
+#define PW_FRAMED_POOL 88
+#define PW_CHARGEABLE_USER_IDENTITY 89
+#define PW_NAS_IPV6_ADDRESS 95
+
+#define PW_EXTENDED_ATTRIBUTE 192
+
+#define PW_DIGEST_RESPONSE 206
+#define PW_DIGEST_ATTRIBUTES 207
+
+#define PW_FALL_THROUGH 500
+#define PW_EXEC_PROGRAM 502
+#define PW_EXEC_PROGRAM_WAIT 503
+
+#define PW_AUTH_TYPE 1000
+#define PW_PREFIX 1003
+#define PW_SUFFIX 1004
+#define PW_GROUP 1005
+#define PW_CRYPT_PASSWORD 1006
+#define PW_CONNECT_RATE 1007
+#define PW_ADD_PREFIX 1008
+#define PW_ADD_SUFFIX 1009
+#define PW_EXPIRATION 1010
+#define PW_AUTZ_TYPE 1011
+#define PW_ACCT_TYPE 1012
+#define PW_SESSION_TYPE 1013
+#define PW_POST_AUTH_TYPE 1014
+#define PW_PRE_PROXY_TYPE 1015
+#define PW_POST_PROXY_TYPE 1016
+#define PW_PRE_ACCT_TYPE 1017
+#define PW_EAP_TYPE 1018
+#define PW_EAP_TLS_REQUIRE_CLIENT_CERT 1019
+#define PW_CLIENT_SHORTNAME 1024
+#define PW_LOAD_BALANCE_KEY 1025
+#define PW_RAW_ATTRIBUTE 1026
+#define PW_TNC_VLAN_ACCESS 1027
+#define PW_TNC_VLAN_ISOLATE 1028
+#define PW_USER_CATEGORY 1029
+#define PW_GROUP_NAME 1030
+#define PW_HUNTGROUP_NAME 1031
+#define PW_SIMULTANEOUS_USE 1034
+#define PW_STRIP_USER_NAME 1035
+#define PW_HINT 1040
+#define PAM_AUTH_ATTR 1041
+#define PW_LOGIN_TIME 1042
+#define PW_STRIPPED_USER_NAME 1043
+#define PW_CURRENT_TIME 1044
+#define PW_REALM 1045
+#define PW_NO_SUCH_ATTRIBUTE 1046
+#define PW_PACKET_TYPE 1047
+#define PW_PROXY_TO_REALM 1048
+#define PW_REPLICATE_TO_REALM 1049
+#define PW_ACCT_SESSION_START_TIME 1050
+#define PW_ACCT_UNIQUE_SESSION_ID 1051
+#define PW_CLIENT_IP_ADDRESS 1052
+#define PW_LDAP_USERDN 1053
+#define PW_NS_MTA_MD5_PASSWORD 1054
+#define PW_SQL_USER_NAME 1055
+#define PW_LM_PASSWORD 1057
+#define PW_NT_PASSWORD 1058
+#define PW_SMB_ACCOUNT_CTRL 1059
+#define PW_SMB_ACCOUNT_CTRL_TEXT 1061
+#define PW_USER_PROFILE 1062
+#define PW_DIGEST_REALM 1063
+#define PW_DIGEST_NONCE 1064
+#define PW_DIGEST_METHOD 1065
+#define PW_DIGEST_URI 1066
+#define PW_DIGEST_QOP 1067
+#define PW_DIGEST_ALGORITHM 1068
+#define PW_DIGEST_BODY_DIGEST 1069
+#define PW_DIGEST_CNONCE 1070
+#define PW_DIGEST_NONCE_COUNT 1071
+#define PW_DIGEST_USER_NAME 1072
+#define PW_POOL_NAME 1073
+#define PW_LDAP_GROUP 1074
+#define PW_MODULE_SUCCESS_MESSAGE 1075
+#define PW_MODULE_FAILURE_MESSAGE 1076
+#if 0 /* no longer used */
+#define PW_X99_FAST 1077
+#endif
+#define PW_REWRITE_RULE 1078
+#define PW_SQL_GROUP 1079
+#define PW_RESPONSE_PACKET_TYPE 1080
+#define PW_DIGEST_HA1 1081
+#define PW_MS_CHAP_USE_NTLM_AUTH 1082
+#define PW_MS_CHAP_USER_NAME 1083
+#define PW_PACKET_SRC_IP_ADDRESS 1084
+#define PW_PACKET_DST_IP_ADDRESS 1085
+#define PW_PACKET_SRC_PORT 1086
+#define PW_PACKET_DST_PORT 1087
+#define PW_PACKET_AUTHENTICATION_VECTOR 1088
+#define PW_TIME_OF_DAY 1089
+#define PW_REQUEST_PROCESSING_STAGE 1090
+#define PW_CACHE_NO_CACHING 1091
+#define PW_CACHE_DELETE_CACHE 1092
+
+#define PW_SHA_PASSWORD 1093
+#define PW_SSHA_PASSWORD 1094
+#define PW_MD5_PASSWORD 1095
+#define PW_SMD5_PASSWORD 1096
+
+#define PW_PACKET_SRC_IPV6_ADDRESS 1097
+#define PW_PACKET_DST_IPV6_ADDRESS 1098
+#define PW_VIRTUAL_SERVER 1099
+#define PW_CLEARTEXT_PASSWORD 1100
+#define PW_PASSWORD_WITH_HEADER 1101
+#define PW_SEND_COA_REQUEST 1107
+#define PW_MODULE_RETURN_CODE 1108
+#define PW_PACKET_ORIGINAL_TIMESTAMP 1109
+#define PW_HOME_SERVER_POOL 1111
+#define PW_RECV_COA_TYPE 1131
+#define PW_SEND_COA_TYPE 1132
+#define PW_MSCHAP_PASSWORD 1133
+#define PW_PACKET_TRANSMIT_COUNTER 1134
+#define PW_CACHED_SESSION_POLICY 1135
+
+/*
+ * Integer Translations
+ */
+
+/* User Types */
+
+#define PW_LOGIN_USER 1
+#define PW_FRAMED_USER 2
+#define PW_CALLBACK_LOGIN_USER 3
+#define PW_CALLBACK_FRAMED_USER 4
+#define PW_OUTBOUND_USER 5
+#define PW_ADMINISTRATIVE_USER 6
+#define PW_NAS_PROMPT_USER 7
+#define PW_AUTHENTICATE_ONLY 8
+#define PW_CALLBACK_NAS_PROMPT 9
+
+/* 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_AUTHTYPE_LOCAL 0
+#define PW_AUTHTYPE_SYSTEM 1
+#define PW_AUTHTYPE_SECURID 2
+#define PW_AUTHTYPE_CRYPT 3
+#define PW_AUTHTYPE_REJECT 4
+#define PW_AUTHTYPE_ACTIVCARD 5
+#define PW_AUTHTYPE_EAP 6
+#define PW_AUTHTYPE_ACCEPT 254
+#define PW_AUTHTYPE_MS_CHAP 1028
+
+/* Port Types */
+
+#define PW_NAS_PORT_ASYNC 0
+#define PW_NAS_PORT_SYNC 1
+#define PW_NAS_PORT_ISDN 2
+#define PW_NAS_PORT_ISDN_V120 3
+#define PW_NAS_PORT_ISDN_V110 4
+
+/* Status Types */
+
+#define PW_STATUS_START 1
+#define PW_STATUS_STOP 2
+#define PW_STATUS_ALIVE 3
+#define PW_STATUS_ACCOUNTING_ON 7
+#define PW_STATUS_ACCOUNTING_OFF 8
+
+/*
+ * Vendor Private Enterprise Codes
+ */
+#define VENDORPEC_FREERADIUS 11344
+
+
+/*
+ * Vendor specific attributes
+ */
+#define PW_FREERADIUS_PROXIED_TO ((VENDORPEC_FREERADIUS<<16)|1)
+
+/*
+ * Microsoft has vendor code 311.
+ */
+#define PW_MSCHAP_RESPONSE ((311 << 16) | 1)
+#define PW_MSCHAP_ERROR ((311 << 16) | 2)
+#define PW_MSCHAP_CHALLENGE ((311 << 16) | 11)
+#define PW_MSCHAP2_RESPONSE ((311 << 16) | 25)
+#define PW_MSCHAP2_SUCCESS ((311 << 16) | 26)
+
+
+/*
+ * Old nonsense. Will be deleted ASAP
+ */
+#define PW_AUTHTYPE 1000
+#define PW_AUTZTYPE 1011
+#define PW_ACCTTYPE 1012
+#define PW_SESSTYPE 1013
+#define PW_POSTAUTHTYPE 1014
+
+/*
+ * Cisco's VLAN Query Protocol.
+ */
+#define PW_VQP_PACKET_TYPE 0x2b00
+#define PW_VQP_ERROR_CODE 0x2b01
+#define PW_VQP_SEQUENCE_NUMBER 0x2b02
+
+#define PW_VQP_CLIENT_IP_ADDRESS 0x2c01
+#define PW_VQP_PORT_NAME 0x2c02
+#define PW_VQP_VLAN_NAME 0x2c03
+#define PW_VQP_DOMAIN_NAME 0x2c04
+#define PW_VQP_ETHERNET_FRAME 0x2c05
+#define PW_VQP_MAC 0x2c06
+#define PW_VQP_UNKNOWN 0x2c07
+#define PW_VQP_COOKIE 0x2c08
+++ /dev/null
-#ifndef REALMS_H
-#define REALMS_H
-
-/*
- * realms.h Structures, prototypes and global variables
- * for realms
- *
- * Version: $Id: realms.h,v 1.1 2010/08/14 04:13:52 faust Exp $
- *
- */
-
-#include <freeradius/ident.h>
-RCSIDH(realms_h, "$Id: realms.h,v 1.1 2010/08/14 04:13:52 faust Exp $")
-
-#define HOME_TYPE_INVALID (0)
-#define HOME_TYPE_AUTH (1)
-#define HOME_TYPE_ACCT (2)
-#ifdef WITH_COA
-#define HOME_TYPE_COA (3)
-#endif
-
-#define HOME_PING_CHECK_NONE (0)
-#define HOME_PING_CHECK_STATUS_SERVER (1)
-#define HOME_PING_CHECK_REQUEST (2)
-
-#define HOME_STATE_ALIVE (0)
-#define HOME_STATE_ZOMBIE (1)
-#define HOME_STATE_IS_DEAD (2)
-
-typedef struct home_server {
- const char *name;
-
- const char *hostname;
- const char *server; /* for internal proxying */
-
- fr_ipaddr_t ipaddr;
-
- int port;
- int type; /* auth/acct */
-
- /*
- * Maybe also have list of source IP/ports, && socket?
- */
-
- const char *secret;
-
- fr_event_t *ev;
- struct timeval when;
-
- int response_window;
- int no_response_fail;
- int max_outstanding; /* don't overload it */
- int currently_outstanding;
- int message_authenticator;
-
- struct timeval revive_time;
- struct timeval zombie_period_start;
- int zombie_period; /* unresponsive for T, mark it dead */
-
- int state;
-
- int ping_check;
- const char *ping_user_name;
- const char *ping_user_password;
-
- int ping_interval;
- int num_pings_to_alive;
- int num_received_pings;
- int ping_timeout;
-
- int revive_interval; /* if it doesn't support pings */
- CONF_SECTION *cs;
-#ifdef WITH_COA
- int coa_irt;
- int coa_mrc;
- int coa_mrt;
- int coa_mrd;
-#endif
-#ifdef WITH_STATS
- int number;
-
- fr_ipaddr_t src_ipaddr; /* preferred source IP address */
-
- fr_stats_t stats;
-
- fr_stats_ema_t ema;
-#endif
-} home_server;
-
-
-typedef enum home_pool_type_t {
- HOME_POOL_INVALID = 0,
- HOME_POOL_LOAD_BALANCE,
- HOME_POOL_FAIL_OVER,
- HOME_POOL_CLIENT_BALANCE,
- HOME_POOL_CLIENT_PORT_BALANCE,
- HOME_POOL_KEYED_BALANCE
-} home_pool_type_t;
-
-
-typedef struct home_pool_t {
- const char *name;
- home_pool_type_t type;
-
- int server_type;
- CONF_SECTION *cs;
-
- const char *virtual_server; /* for pre/post-proxy */
-
- home_server *fallback;
-
- int num_home_servers;
- home_server *servers[1];
-} home_pool_t;
-
-
-typedef struct _realm {
- const char *name;
-
- int striprealm;
-
- home_pool_t *auth_pool;
- home_pool_t *acct_pool;
-} REALM;
-
-int realms_init(CONF_SECTION *config);
-void realms_free(void);
-REALM *realm_find(const char *name); /* name is from a packet */
-REALM *realm_find2(const char *name); /* ... with name taken from realm_find */
-
-home_server *home_server_ldb(const char *realmname, home_pool_t *pool, REQUEST *request);
-home_server *home_server_find(fr_ipaddr_t *ipaddr, int port);
-int home_server_create_listeners(void *head);
-#ifdef WITH_COA
-home_server *home_server_byname(const char *name, int type);
-#endif
-#ifdef WITH_STATS
-home_server *home_server_bynumber(int number);
-#endif
-home_pool_t *home_pool_byname(const char *name, int type);
-
-#endif /* REALMS_H */
--- /dev/null
+#ifndef FR_TOKEN_H
+#define FR_TOKEN_H
+
+/*
+ * token.h Special tokens.
+ *
+ * $Id$
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ * Copyright 2001,2006 The FreeRADIUS server project
+ */
+
+//#include <freeradius-devel/ident.h>
+//RCSIDH(token_h, "$Id$")
+
+typedef enum fr_token_t {
+ T_OP_INVALID = 0, /* invalid token */
+ T_EOL, /* end of line */
+ T_LCBRACE, /* { */
+ T_RCBRACE, /* } */
+ T_LBRACE, /* ( */
+ T_RBRACE, /* ) 5 */
+ T_COMMA, /* , */
+ T_SEMICOLON, /* ; */
+
+ T_OP_ADD, /* += */
+ T_OP_SUB, /* -= */
+ T_OP_SET, /* := 10 */
+ T_OP_EQ, /* = */
+ T_OP_NE, /* != */
+ T_OP_GE, /* >= */
+ T_OP_GT, /* > */
+ T_OP_LE, /* <= 15 */
+ T_OP_LT, /* < */
+ T_OP_REG_EQ, /* =~ */
+ T_OP_REG_NE, /* !~ */
+ T_OP_CMP_TRUE, /* =* */
+ T_OP_CMP_FALSE, /* !* 20 */
+ T_OP_CMP_EQ, /* == */
+ T_HASH, /* # */
+ T_BARE_WORD, /* bare word */
+ T_DOUBLE_QUOTED_STRING, /* "foo" */
+ T_SINGLE_QUOTED_STRING, /* 'foo' 25 */
+ T_BACK_QUOTED_STRING, /* `foo` */
+ T_TOKEN_LAST
+} FR_TOKEN;
+
+#define T_EQSTART T_OP_ADD
+#define T_EQEND (T_OP_CMP_EQ + 1)
+
+typedef struct FR_NAME_NUMBER {
+ const char *name;
+ int number;
+} FR_NAME_NUMBER;
+
+int fr_str2int(const FR_NAME_NUMBER *table, const char *name, int def);
+const char *fr_int2str(const FR_NAME_NUMBER *table, int number,
+ const char *def);
+
+
+int getword (const char **ptr, char *buf, int buflen);
+int getbareword (const char **ptr, char *buf, int buflen);
+FR_TOKEN gettoken(const char **ptr, char *buf, int buflen);
+FR_TOKEN getstring(const char **ptr, char *buf, int buflen);
+
+#endif /* FR_TOKEN_H */