Extensible Authentication Protocol.
Definition in file eap.c.
Transmit EAP response.
- Parameters
-
| supplicant | EAP supplicant |
| rsp | Response type data |
| rsp_len | Length of response type data |
- Return values
-
Definition at line 48 of file eap.c.
56 len = (
sizeof ( *msg ) + rsp_len );
63 msg->hdr.id = supplicant->
id;
67 DBGC (
netdev,
"EAP %s Response id %#02x type %d\n",
71 if ( (
rc = supplicant->
tx ( supplicant,
msg,
len ) ) != 0 ) {
72 DBGC (
netdev,
"EAP %s could not transmit: %s\n",
struct arbelprm_rc_send_wqe rc
void msg(unsigned int row, const char *fmt,...)
Print message centred on specified row.
EAP request/response message.
uint8_t id
ID for current request/response.
#define EAP_CODE_RESPONSE
EAP response.
#define ENOMEM
Not enough space.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static struct net_device * netdev
char * strerror(int errno)
Retrieve string representation of error number.
static void(* free)(struct refcnt *refcnt))
void * malloc(size_t size)
Allocate memory.
char name[NETDEV_NAME_LEN]
Name of this network device.
int(* tx)(struct eap_supplicant *supplicant, const void *data, size_t len)
Transmit EAP response.
uint8_t type
Type for current request/response.
struct net_device * netdev
Network device.
References DBGC, EAP_CODE_RESPONSE, ENOMEM, free, htons, eap_supplicant::id, len, malloc(), memcpy(), msg(), net_device::name, netdev, eap_supplicant::netdev, rc, rsp, strerror(), eap_supplicant::tx, and eap_supplicant::type.
Referenced by eap_rx_identity(), eap_rx_md5(), eap_rx_mschapv2_request(), eap_rx_mschapv2_success(), and eap_tx_nak().
Transmit EAP NAK.
- Parameters
-
- Return values
-
Definition at line 89 of file eap.c.
93 unsigned int count = 0;
#define EAP_TYPE_NONE
EAP "no available types" marker.
#define EAP_METHODS
EAP method table.
int eap_tx_response(struct eap_supplicant *supplicant, const void *rsp, size_t rsp_len)
Transmit EAP response.
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
static struct net_device * netdev
static unsigned int count
Number of entries.
#define for_each_table_entry(pointer, table)
Iterate through all entries within a linker table.
#define EAP_TYPE_NAK
EAP NAK.
char name[NETDEV_NAME_LEN]
Name of this network device.
uint8_t type
Type for current request/response.
struct net_device * netdev
Network device.
#define table_num_entries(table)
Get number of entries in linker table.
References assert(), count, DBGC, EAP_METHODS, eap_tx_response(), EAP_TYPE_NAK, EAP_TYPE_NONE, for_each_table_entry, max, method, net_device::name, netdev, eap_supplicant::netdev, table_num_entries, and eap_supplicant::type.
Referenced by eap_rx_request().
Handle EAP Request-Identity.
- Parameters
-
| supplicant | EAP supplicant |
| req | Request type data |
| req_len | Length of request type data |
- Return values
-
Definition at line 123 of file eap.c.
131 DBGC (
netdev,
"EAP %s Request-Identity blocking link\n",
141 &username_setting, &
rsp );
struct arbelprm_rc_send_wqe rc
int fetch_raw_setting_copy(struct settings *settings, const struct setting *setting, void **data)
Fetch value of setting.
static struct settings * netdev_settings(struct net_device *netdev)
Get per-netdevice configuration settings block.
int eap_tx_response(struct eap_supplicant *supplicant, const void *rsp, size_t rsp_len)
Transmit EAP response.
void netdev_link_block(struct net_device *netdev, unsigned long timeout)
Mark network device link as being blocked.
static struct net_device * netdev
#define EAP_FL_PASSIVE
EAP supplicant is passive.
#define EAP_FL_ONGOING
EAP authentication is in progress.
static void(* free)(struct refcnt *refcnt))
char name[NETDEV_NAME_LEN]
Name of this network device.
#define EAP_BLOCK_TIMEOUT
EAP link block timeout.
struct net_device * netdev
Network device.
References DBGC, DBGC2, DBGC_HDA, EAP_BLOCK_TIMEOUT, EAP_FL_ONGOING, EAP_FL_PASSIVE, eap_tx_response(), fetch_raw_setting_copy(), eap_supplicant::flags, free, net_device::name, netdev, eap_supplicant::netdev, netdev_link_block(), netdev_settings(), rc, and rsp.
Handle EAP Request.
- Parameters
-
| supplicant | EAP supplicant |
| msg | EAP request |
| len | Length of EAP request |
- Return values
-
Definition at line 177 of file eap.c.
185 if (
len <
sizeof ( *
msg ) ) {
196 req_len = (
ntohs (
msg->hdr.len ) -
sizeof ( *msg ) );
199 supplicant->
id =
msg->hdr.id;
201 DBGC (
netdev,
"EAP %s Request id %#02x type %d\n",
207 return method->rx ( supplicant, req, req_len );
209 DBGC (
netdev,
"EAP %s requested type %d unknown:\n",
#define EINVAL
Invalid argument.
void msg(unsigned int row, const char *fmt,...)
Print message centred on specified row.
#define EAP_METHODS
EAP method table.
uint8_t id
ID for current request/response.
#define ENOTSUP
Operation not supported.
static struct net_device * netdev
static int eap_tx_nak(struct eap_supplicant *supplicant)
Transmit EAP NAK.
#define for_each_table_entry(pointer, table)
Iterate through all entries within a linker table.
#define EAP_TYPE_NAK
EAP NAK.
char name[NETDEV_NAME_LEN]
Name of this network device.
uint8_t type
Type for current request/response.
struct net_device * netdev
Network device.
References DBGC, DBGC_HDA, EAP_METHODS, eap_tx_nak(), EAP_TYPE_NAK, EINVAL, ENOTSUP, for_each_table_entry, eap_supplicant::id, len, method, msg(), net_device::name, netdev, eap_supplicant::netdev, ntohs, and eap_supplicant::type.
Referenced by eap_rx().
Handle EAP packet.
- Parameters
-
| supplicant | EAP supplicant |
| data | EAP packet |
| len | Length of EAP packet |
- Return values
-
Definition at line 264 of file eap.c.
270 if (
len <
sizeof ( eap->
hdr ) ) {
288 DBGC (
netdev,
"EAP %s unsupported code %d\n",
#define EINVAL
Invalid argument.
struct eap_message msg
Request/response message.
static int eap_rx_failure(struct eap_supplicant *supplicant)
Handle EAP Failure.
#define EAP_CODE_REQUEST
EAP request.
struct eap_header hdr
Header.
#define ENOTSUP
Operation not supported.
#define EAP_CODE_RESPONSE
EAP response.
#define EAP_CODE_FAILURE
EAP failure.
static int eap_rx_success(struct eap_supplicant *supplicant)
Handle EAP Success.
static struct net_device * netdev
#define EAP_CODE_SUCCESS
EAP success.
static int eap_rx_request(struct eap_supplicant *supplicant, const struct eap_message *msg, size_t len)
Handle EAP Request.
char name[NETDEV_NAME_LEN]
Name of this network device.
uint8_t data[48]
Additional event data.
struct net_device * netdev
Network device.
References eap_header::code, data, DBGC, DBGC2, DBGC_HDA, EAP_CODE_FAILURE, EAP_CODE_REQUEST, EAP_CODE_RESPONSE, EAP_CODE_SUCCESS, eap_rx_failure(), eap_rx_request(), eap_rx_success(), EINVAL, ENOTSUP, eap_packet::hdr, len, eap_packet::msg, net_device::name, netdev, and eap_supplicant::netdev.
Referenced by eapol_eap_rx().