radius.h File Reference

hostapd / RADIUS message processing More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  radius_hdr
struct  radius_attr_hdr
struct  radius_attr_vendor
struct  radius_ms_mppe_keys
struct  radius_msg
struct  radius_attr_data
struct  radius_class_data

Defines

#define RADIUS_MAX_ATTR_LEN   (255 - sizeof(struct radius_attr_hdr))
#define RADIUS_TERMINATION_ACTION_DEFAULT   0
#define RADIUS_TERMINATION_ACTION_RADIUS_REQUEST   1
#define RADIUS_NAS_PORT_TYPE_IEEE_802_11   19
#define RADIUS_ACCT_STATUS_TYPE_START   1
#define RADIUS_ACCT_STATUS_TYPE_STOP   2
#define RADIUS_ACCT_STATUS_TYPE_INTERIM_UPDATE   3
#define RADIUS_ACCT_STATUS_TYPE_ACCOUNTING_ON   7
#define RADIUS_ACCT_STATUS_TYPE_ACCOUNTING_OFF   8
#define RADIUS_ACCT_AUTHENTIC_RADIUS   1
#define RADIUS_ACCT_AUTHENTIC_LOCAL   2
#define RADIUS_ACCT_AUTHENTIC_REMOTE   3
#define RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST   1
#define RADIUS_ACCT_TERMINATE_CAUSE_LOST_CARRIER   2
#define RADIUS_ACCT_TERMINATE_CAUSE_LOST_SERVICE   3
#define RADIUS_ACCT_TERMINATE_CAUSE_IDLE_TIMEOUT   4
#define RADIUS_ACCT_TERMINATE_CAUSE_SESSION_TIMEOUT   5
#define RADIUS_ACCT_TERMINATE_CAUSE_ADMIN_RESET   6
#define RADIUS_ACCT_TERMINATE_CAUSE_ADMIN_REBOOT   7
#define RADIUS_ACCT_TERMINATE_CAUSE_PORT_ERROR   8
#define RADIUS_ACCT_TERMINATE_CAUSE_NAS_ERROR   9
#define RADIUS_ACCT_TERMINATE_CAUSE_NAS_REQUEST   10
#define RADIUS_ACCT_TERMINATE_CAUSE_NAS_REBOOT   11
#define RADIUS_ACCT_TERMINATE_CAUSE_PORT_UNNEEDED   12
#define RADIUS_ACCT_TERMINATE_CAUSE_PORT_PREEMPTED   13
#define RADIUS_ACCT_TERMINATE_CAUSE_PORT_SUSPENDED   14
#define RADIUS_ACCT_TERMINATE_CAUSE_SERVICE_UNAVAILABLE   15
#define RADIUS_ACCT_TERMINATE_CAUSE_CALLBACK   16
#define RADIUS_ACCT_TERMINATE_CAUSE_USER_ERROR   17
#define RADIUS_ACCT_TERMINATE_CAUSE_HOST_REQUEST   18
#define RADIUS_TUNNEL_TAGS   32
#define RADIUS_TUNNEL_TYPE_PPTP   1
#define RADIUS_TUNNEL_TYPE_L2TP   3
#define RADIUS_TUNNEL_TYPE_IPIP   7
#define RADIUS_TUNNEL_TYPE_GRE   10
#define RADIUS_TUNNEL_TYPE_VLAN   13
#define RADIUS_TUNNEL_MEDIUM_TYPE_IPV4   1
#define RADIUS_TUNNEL_MEDIUM_TYPE_IPV6   2
#define RADIUS_TUNNEL_MEDIUM_TYPE_802   6
#define RADIUS_VENDOR_ID_CISCO   9
#define RADIUS_CISCO_AV_PAIR   1
#define RADIUS_VENDOR_ID_MICROSOFT   311
#define RADIUS_DEFAULT_MSG_SIZE   1024
#define RADIUS_DEFAULT_ATTR_COUNT   16
#define RADIUS_802_1X_ADDR_FORMAT   "%02X-%02X-%02X-%02X-%02X-%02X"
#define RADIUS_ADDR_FORMAT   "%02x%02x%02x%02x%02x%02x"

Enumerations

enum  {
  RADIUS_CODE_ACCESS_REQUEST = 1, RADIUS_CODE_ACCESS_ACCEPT = 2, RADIUS_CODE_ACCESS_REJECT = 3, RADIUS_CODE_ACCOUNTING_REQUEST = 4,
  RADIUS_CODE_ACCOUNTING_RESPONSE = 5, RADIUS_CODE_ACCESS_CHALLENGE = 11, RADIUS_CODE_STATUS_SERVER = 12, RADIUS_CODE_STATUS_CLIENT = 13,
  RADIUS_CODE_RESERVED = 255
}
enum  {
  RADIUS_ATTR_USER_NAME = 1, RADIUS_ATTR_USER_PASSWORD = 2, RADIUS_ATTR_NAS_IP_ADDRESS = 4, RADIUS_ATTR_NAS_PORT = 5,
  RADIUS_ATTR_FRAMED_MTU = 12, RADIUS_ATTR_REPLY_MESSAGE = 18, RADIUS_ATTR_STATE = 24, RADIUS_ATTR_CLASS = 25,
  RADIUS_ATTR_VENDOR_SPECIFIC = 26, RADIUS_ATTR_SESSION_TIMEOUT = 27, RADIUS_ATTR_IDLE_TIMEOUT = 28, RADIUS_ATTR_TERMINATION_ACTION = 29,
  RADIUS_ATTR_CALLED_STATION_ID = 30, RADIUS_ATTR_CALLING_STATION_ID = 31, RADIUS_ATTR_NAS_IDENTIFIER = 32, RADIUS_ATTR_PROXY_STATE = 33,
  RADIUS_ATTR_ACCT_STATUS_TYPE = 40, RADIUS_ATTR_ACCT_DELAY_TIME = 41, RADIUS_ATTR_ACCT_INPUT_OCTETS = 42, RADIUS_ATTR_ACCT_OUTPUT_OCTETS = 43,
  RADIUS_ATTR_ACCT_SESSION_ID = 44, RADIUS_ATTR_ACCT_AUTHENTIC = 45, RADIUS_ATTR_ACCT_SESSION_TIME = 46, RADIUS_ATTR_ACCT_INPUT_PACKETS = 47,
  RADIUS_ATTR_ACCT_OUTPUT_PACKETS = 48, RADIUS_ATTR_ACCT_TERMINATE_CAUSE = 49, RADIUS_ATTR_ACCT_MULTI_SESSION_ID = 50, RADIUS_ATTR_ACCT_LINK_COUNT = 51,
  RADIUS_ATTR_ACCT_INPUT_GIGAWORDS = 52, RADIUS_ATTR_ACCT_OUTPUT_GIGAWORDS = 53, RADIUS_ATTR_EVENT_TIMESTAMP = 55, RADIUS_ATTR_NAS_PORT_TYPE = 61,
  RADIUS_ATTR_TUNNEL_TYPE = 64, RADIUS_ATTR_TUNNEL_MEDIUM_TYPE = 65, RADIUS_ATTR_CONNECT_INFO = 77, RADIUS_ATTR_EAP_MESSAGE = 79,
  RADIUS_ATTR_MESSAGE_AUTHENTICATOR = 80, RADIUS_ATTR_TUNNEL_PRIVATE_GROUP_ID = 81, RADIUS_ATTR_ACCT_INTERIM_INTERVAL = 85, RADIUS_ATTR_CHARGEABLE_USER_IDENTITY = 89,
  RADIUS_ATTR_NAS_IPV6_ADDRESS = 95
}
enum  { RADIUS_VENDOR_ATTR_MS_MPPE_SEND_KEY = 16, RADIUS_VENDOR_ATTR_MS_MPPE_RECV_KEY = 17 }

Functions

struct radius_msgradius_msg_new (u8 code, u8 identifier)
int radius_msg_initialize (struct radius_msg *msg, size_t init_len)
void radius_msg_set_hdr (struct radius_msg *msg, u8 code, u8 identifier)
void radius_msg_free (struct radius_msg *msg)
void radius_msg_dump (struct radius_msg *msg)
int radius_msg_finish (struct radius_msg *msg, const u8 *secret, size_t secret_len)
int radius_msg_finish_srv (struct radius_msg *msg, const u8 *secret, size_t secret_len, const u8 *req_authenticator)
void radius_msg_finish_acct (struct radius_msg *msg, const u8 *secret, size_t secret_len)
struct radius_attr_hdrradius_msg_add_attr (struct radius_msg *msg, u8 type, const u8 *data, size_t data_len)
struct radius_msgradius_msg_parse (const u8 *data, size_t len)
int radius_msg_add_eap (struct radius_msg *msg, const u8 *data, size_t data_len)
u8 * radius_msg_get_eap (struct radius_msg *msg, size_t *len)
int radius_msg_verify (struct radius_msg *msg, const u8 *secret, size_t secret_len, struct radius_msg *sent_msg, int auth)
int radius_msg_verify_msg_auth (struct radius_msg *msg, const u8 *secret, size_t secret_len, const u8 *req_auth)
int radius_msg_copy_attr (struct radius_msg *dst, struct radius_msg *src, u8 type)
void radius_msg_make_authenticator (struct radius_msg *msg, const u8 *data, size_t len)
struct radius_ms_mppe_keysradius_msg_get_ms_keys (struct radius_msg *msg, struct radius_msg *sent_msg, const u8 *secret, size_t secret_len)
struct radius_ms_mppe_keysradius_msg_get_cisco_keys (struct radius_msg *msg, struct radius_msg *sent_msg, const u8 *secret, size_t secret_len)
int radius_msg_add_mppe_keys (struct radius_msg *msg, const u8 *req_authenticator, const u8 *secret, size_t secret_len, const u8 *send_key, size_t send_key_len, const u8 *recv_key, size_t recv_key_len)
struct radius_attr_hdrradius_msg_add_attr_user_password (struct radius_msg *msg, const u8 *data, size_t data_len, const u8 *secret, size_t secret_len)
int radius_msg_get_attr (struct radius_msg *msg, u8 type, u8 *buf, size_t len)
int radius_msg_get_vlanid (struct radius_msg *msg)
 Parse RADIUS attributes for VLAN tunnel information.
int radius_msg_get_attr_ptr (struct radius_msg *msg, u8 type, u8 **buf, size_t *len, const u8 *start)
int radius_msg_count_attr (struct radius_msg *msg, u8 type, int min_len)
void radius_free_class (struct radius_class_data *c)
int radius_copy_class (struct radius_class_data *dst, const struct radius_class_data *src)

Variables

struct radius_hdr STRUCT_PACKED

Detailed Description

hostapd / RADIUS message processing

Copyright
Copyright (c) 2002-2007, Jouni Malinen <j@w1.fi>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

Alternatively, this software may be distributed under the terms of BSD license.

See README and COPYING for more details.

Definition in file radius.h.


Function Documentation

int radius_msg_get_vlanid ( struct radius_msg msg  ) 

Parse RADIUS attributes for VLAN tunnel information.

Parameters:
msg RADIUS message
Returns:
VLAN ID for the first tunnel configuration of -1 if none is found

Definition at line 1176 of file radius.c.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Generated on Sat Nov 21 23:22:09 2009 for hostapd by  doxygen 1.6.1