107 if (
len <
sizeof ( *msreq ) ) {
108 DBGC (
netdev,
"EAP %s underlength MS-CHAPv2 request\n",
118 if ( username_len < 0 ) {
120 DBGC (
netdev,
"EAP %s has no username: %s\n",
126 if ( password_len < 0 ) {
128 DBGC (
netdev,
"EAP %s has no password: %s\n",
136 for ( i = 0 ; i < (
sizeof (
peer.byte ) /
137 sizeof (
peer.byte[0] ) ) ; i++ ) {
142 msrsp_len = (
sizeof ( *msrsp ) + username_len );
143 msrsp =
malloc ( msrsp_len );
153 msrsp->
len =
sizeof ( msrsp->
msg );
222 const void *req,
size_t req_len ) {
227 if ( req_len <
sizeof ( *
hdr ) ) {
228 DBGC (
netdev,
"EAP %s underlength MS-CHAPv2:\n",
235 switch (
hdr->code ) {
241 DBGC (
netdev,
"EAP %s unsupported MS-CHAPv2 opcode %d\n",
struct golan_inbox_hdr hdr
Message header.
struct arbelprm_rc_send_wqe rc
#define assert(condition)
Assert a condition at run-time.
int eap_tx_response(struct eap_supplicant *supplicant, const void *rsp, size_t rsp_len)
Transmit EAP response.
Extensible Authentication Protocol.
#define EAP_CODE_RESPONSE
EAP response.
#define __eap_method
Declare an EAP method.
#define EAP_CODE_REQUEST
EAP request.
#define EAP_CODE_SUCCESS
EAP success.
#define EAP_TYPE_MSCHAPV2
EAP MS-CHAPv2 request/response.
static int eap_rx_mschapv2(struct eap_supplicant *supplicant, const void *req, size_t req_len)
Handle EAP MS-CHAPv2.
static int eap_rx_mschapv2_success(struct eap_supplicant *supplicant, const struct eap_mschapv2 *hdr, size_t len)
Handle EAP MS-CHAPv2 success request.
static int eap_rx_mschapv2_request(struct eap_supplicant *supplicant, const struct eap_mschapv2 *hdr, size_t len)
Handle EAP MS-CHAPv2 request.
static struct net_device * netdev
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define EINVAL
Invalid argument.
#define ENOMEM
Not enough space.
#define ENOTSUP
Operation not supported.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static struct dynamic_item username
static struct dynamic_item password
void * malloc(size_t size)
Allocate memory.
void mschapv2_response(const char *username, const char *password, const struct mschapv2_challenge *challenge, const struct mschapv2_challenge *peer, struct mschapv2_response *response)
Calculate MS-CHAPv2 challenge response.
MS-CHAPv2 authentication.
struct mschapv2_challenge peer
Peer challenge.
static struct settings * netdev_settings(struct net_device *netdev)
Get per-netdevice configuration settings block.
long int random(void)
Generate a pseudo-random number between 0 and 2147483647L or 2147483562?
static void(* free)(struct refcnt *refcnt))
int fetch_string_setting_copy(struct settings *settings, const struct setting *setting, char **data)
Fetch value of string setting.
#define container_of(ptr, type, field)
Get containing structure.
char * strerror(int errno)
Retrieve string representation of error number.
An EAP MS-CHAPv2 request message.
uint8_t len
MS-CHAPv2 challenge length (fixed value)
struct eap_mschapv2 hdr
EAP-MSCHAPv2 header.
struct mschapv2_challenge msg
MS-CHAPv2 challenge.
An EAP MS-CHAPv2 response message.
struct eap_mschapv2 hdr
EAP-MSCHAPv2 header.
struct mschapv2_response msg
MS-CHAPv2 response.
uint8_t len
MS-CHAPv2 response length (fixed value)
An EAP MS-CHAPv2 success request message.
struct eap_mschapv2 hdr
EAP-MSCHAPv2 header.
An EAP MS-CHAPv2 success response message.
EAP MS-CHAPv2 request/response type data.
struct net_device * netdev
Network device.
An MS-CHAPv2 challenge response.