From: Arran Cudbard-Bell Date: Fri, 11 May 2018 09:27:04 +0000 (+0600) Subject: Autoload eap base attributes X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd17cccaef3cc7934f2f34558507764771b9ae83;p=thirdparty%2Ffreeradius-server.git Autoload eap base attributes --- diff --git a/src/modules/rlm_eap/lib/base/eap_attrs.h b/src/modules/rlm_eap/lib/base/eap_attrs.h new file mode 100644 index 00000000000..b772d5dab52 --- /dev/null +++ b/src/modules/rlm_eap/lib/base/eap_attrs.h @@ -0,0 +1,39 @@ +#pragma once +/* + * 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 + */ + +/** + * $Id$ + * @file eap_attrs.h + * @brief Interface into the base EAP library + * + * @copyright 2018 Arran Cudbard-Bell (a.cudbardb@freeradius.org) + */ +RCSIDH(eap_attrs_h, "$Id$") + +extern fr_dict_attr_t const *attr_chbind_response_code; +extern fr_dict_attr_t const *attr_eap_session_id; +extern fr_dict_attr_t const *attr_eap_type; +extern fr_dict_attr_t const *attr_virtual_server; + +extern fr_dict_attr_t const *attr_message_authenticator; +extern fr_dict_attr_t const *attr_eap_channel_binding_message; +extern fr_dict_attr_t const *attr_eap_message; +extern fr_dict_attr_t const *attr_eap_msk; +extern fr_dict_attr_t const *attr_eap_emsk; +extern fr_dict_attr_t const *attr_freeradius_proxied_to; +extern fr_dict_attr_t const *attr_ms_mppe_send_key; +extern fr_dict_attr_t const *attr_ms_mppe_recv_key; diff --git a/src/modules/rlm_eap/lib/base/eap_base.c b/src/modules/rlm_eap/lib/base/eap_base.c index 069432cb5b9..db1dd72017d 100644 --- a/src/modules/rlm_eap/lib/base/eap_base.c +++ b/src/modules/rlm_eap/lib/base/eap_base.c @@ -64,27 +64,46 @@ RCSID("$Id$") #include #include #include "eap_types.h" +#include "eap_attrs.h" #include "eap.h" +static fr_dict_t const *dict_freeradius; static fr_dict_t const *dict_radius; extern fr_dict_autoload_t eap_base_dict[]; fr_dict_autoload_t eap_base_dict[] = { + { .out = &dict_freeradius, .proto = "freeradius" }, { .out = &dict_radius, .proto = "radius" }, - { NULL } }; +fr_dict_attr_t const *attr_chbind_response_code; +fr_dict_attr_t const *attr_eap_session_id; +fr_dict_attr_t const *attr_eap_type; +fr_dict_attr_t const *attr_virtual_server; + +fr_dict_attr_t const *attr_message_authenticator; +fr_dict_attr_t const *attr_eap_channel_binding_message; +fr_dict_attr_t const *attr_eap_message; fr_dict_attr_t const *attr_eap_msk; fr_dict_attr_t const *attr_eap_emsk; - +fr_dict_attr_t const *attr_freeradius_proxied_to; fr_dict_attr_t const *attr_ms_mppe_send_key; fr_dict_attr_t const *attr_ms_mppe_recv_key; extern fr_dict_attr_autoload_t eap_base_dict_attr[]; fr_dict_attr_autoload_t eap_base_dict_attr[] = { + { .out = &attr_chbind_response_code, .name = "Chbind-Response-Code", .type = FR_TYPE_UINT32, .dict = &dict_freeradius }, + { .out = &attr_eap_session_id, .name = "EAP-Session-Id", .type = FR_TYPE_OCTETS, .dict = &dict_freeradius }, + { .out = &attr_eap_type, .name = "EAP-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius }, + { .out = &attr_virtual_server, .name = "Virtual-Server", .type = FR_TYPE_STRING, .dict = &dict_freeradius }, + + { .out = &attr_message_authenticator, .name = "Message-Authenticator", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_eap_channel_binding_message, .name = "EAP-Channel-Binding-Message", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_eap_message, .name = "EAP-Message", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { .out = &attr_eap_msk, .name = "EAP-MSK", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { .out = &attr_eap_emsk, .name = "EAP-EMSK", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_freeradius_proxied_to, .name = "FreeRADIUS-Proxied-To", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_radius }, { .out = &attr_ms_mppe_send_key, .name = "MS-MPPE-Send-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { .out = &attr_ms_mppe_recv_key, .name = "MS-MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, @@ -104,7 +123,7 @@ eap_type_t eap_name2type(char const *name) { fr_dict_enum_t *dv; - dv = fr_dict_enum_by_alias(fr_dict_attr_by_num(NULL, 0, FR_EAP_TYPE), name); + dv = fr_dict_enum_by_alias(attr_eap_type, name); if (!dv) return FR_EAP_INVALID; if (dv->value->vb_uint32 >= FR_EAP_MAX_TYPES) return FR_EAP_INVALID; @@ -120,7 +139,7 @@ char const *eap_type2name(eap_type_t method) { fr_dict_enum_t *dv; - dv = fr_dict_enum_by_value(fr_dict_attr_by_num(NULL, 0, FR_EAP_TYPE), fr_box_uint32(method)); + dv = fr_dict_enum_by_value(attr_eap_type, fr_box_uint32(method)); if (dv) return dv->alias; return "unknown"; @@ -220,7 +239,7 @@ VALUE_PAIR *eap_packet2vp(RADIUS_PACKET *packet, eap_packet_raw_t const *eap) size = total; if (size > 253) size = 253; - vp = fr_pair_afrom_num(packet, 0, FR_EAP_MESSAGE); + vp = fr_pair_afrom_da(packet, attr_eap_message); if (!vp) { fr_pair_list_free(&head); return NULL; @@ -256,7 +275,7 @@ eap_packet_raw_t *eap_vp2packet(TALLOC_CTX *ctx, VALUE_PAIR *vps) /* * Get only EAP-Message attribute list */ - first = fr_pair_find_by_num(vps, 0, FR_EAP_MESSAGE, TAG_ANY); + first = fr_pair_find_by_da(vps, attr_eap_message, TAG_ANY); if (!first) { fr_strerror_printf("EAP-Message not found"); return NULL; @@ -290,7 +309,7 @@ eap_packet_raw_t *eap_vp2packet(TALLOC_CTX *ctx, VALUE_PAIR *vps) */ total_len = 0; fr_pair_cursor_init(&cursor, &first); - while ((i = fr_pair_cursor_next_by_num(&cursor, 0, FR_EAP_MESSAGE, TAG_ANY))) { + while ((i = fr_pair_cursor_next_by_da(&cursor, attr_eap_message, TAG_ANY))) { total_len += i->vp_length; if (total_len > len) { @@ -322,7 +341,7 @@ eap_packet_raw_t *eap_vp2packet(TALLOC_CTX *ctx, VALUE_PAIR *vps) /* RADIUS ensures order of attrs, so just concatenate all */ fr_pair_cursor_first(&cursor); - while ((i = fr_pair_cursor_next_by_num(&cursor, 0, FR_EAP_MESSAGE, TAG_ANY))) { + while ((i = fr_pair_cursor_next_by_da(&cursor, attr_eap_message, TAG_ANY))) { memcpy(ptr, i->vp_strvalue, i->vp_length); ptr += i->vp_length; } @@ -367,7 +386,7 @@ rlm_rcode_t eap_virtual_server(REQUEST *request, REQUEST *fake, rlm_rcode_t rcode; VALUE_PAIR *vp; - vp = fr_pair_find_by_num(request->control, 0, FR_VIRTUAL_SERVER, TAG_ANY); + vp = fr_pair_find_by_da(request->control, attr_virtual_server, TAG_ANY); fake->server_cs = vp ? virtual_server_find(vp->vp_strvalue) : virtual_server_find(virtual_server); if (fake->server_cs) { diff --git a/src/modules/rlm_eap/lib/base/eap_base.h b/src/modules/rlm_eap/lib/base/eap_base.h index 2e628a98f44..9356cb8da74 100644 --- a/src/modules/rlm_eap/lib/base/eap_base.h +++ b/src/modules/rlm_eap/lib/base/eap_base.h @@ -26,12 +26,6 @@ RCSIDH(eap_base_h, "$Id$") #include "eap_types.h" -extern fr_dict_attr_t const *attr_eap_msk; -extern fr_dict_attr_t const *attr_eap_emsk; - -extern fr_dict_attr_t const *attr_ms_mppe_send_key; -extern fr_dict_attr_t const *attr_ms_mppe_recv_key; - /* * interfaces in eapcommon.c */ diff --git a/src/modules/rlm_eap/lib/base/eap_chbind.c b/src/modules/rlm_eap/lib/base/eap_chbind.c index 3d05a0ab17d..5d69b66814f 100644 --- a/src/modules/rlm_eap/lib/base/eap_chbind.c +++ b/src/modules/rlm_eap/lib/base/eap_chbind.c @@ -25,6 +25,7 @@ RCSID("$Id$") #include "eap_chbind.h" +#include "eap_attrs.h" static bool chbind_build_response(REQUEST *request, CHBIND_REQ *chbind) { @@ -42,7 +43,7 @@ static bool chbind_build_response(REQUEST *request, CHBIND_REQ *chbind) * Skip things which shouldn't be in channel bindings. */ if (vp->da->flags.encrypt != FLAG_ENCRYPT_NONE) continue; - if (fr_dict_attr_is_top_level(vp->da) && (vp->da->attr == FR_MESSAGE_AUTHENTICATOR)) continue; + if (vp->da == attr_message_authenticator) continue; total += 2 + vp->vp_length; } @@ -62,7 +63,7 @@ static bool chbind_build_response(REQUEST *request, CHBIND_REQ *chbind) * Set the response code. Default to "fail" if none was * specified. */ - vp = fr_pair_find_by_num(request->control, 0, FR_CHBIND_RESPONSE_CODE, TAG_ANY); + vp = fr_pair_find_by_da(request->control, attr_chbind_response_code, TAG_ANY); if (vp) { ptr[0] = vp->vp_uint32; } else { @@ -93,7 +94,7 @@ static bool chbind_build_response(REQUEST *request, CHBIND_REQ *chbind) fr_cursor_next(&cursor); continue; } - if (fr_dict_attr_is_top_level(vp->da) && (vp->da->attr == FR_MESSAGE_AUTHENTICATOR)) goto next; + if (vp->da == attr_message_authenticator) goto next; length = fr_radius_encode_pair(ptr, end - ptr, &cursor, NULL); ptr += length; @@ -155,11 +156,12 @@ static size_t chbind_get_data(chbind_packet_t const *packet, FR_CODE chbind_process(REQUEST *request, CHBIND_REQ *chbind) { - FR_CODE code; - rlm_rcode_t rcode; - REQUEST *fake = NULL; - uint8_t const *attr_data; - size_t data_len = 0; + FR_CODE code; + rlm_rcode_t rcode; + REQUEST *fake = NULL; + uint8_t const *attr_data; + size_t data_len = 0; + VALUE_PAIR *vp; /* check input parameters */ rad_assert((request != NULL) && @@ -169,7 +171,8 @@ FR_CODE chbind_process(REQUEST *request, CHBIND_REQ *chbind) /* Set-up the fake request */ fake = request_alloc_fake(request); - fr_pair_make(fake->packet, &fake->packet->vps, "Freeradius-Proxied-To", "127.0.0.1", T_OP_EQ); + MEM(vp = fr_pair_add_by_da(fake->packet, &fake->packet->vps, attr_freeradius_proxied_to, 0)); + fr_pair_value_from_str(vp, "127.0.0.1", sizeof("127.0.0.1")); /* Add the username to the fake request */ if (chbind->username) { @@ -257,16 +260,16 @@ chbind_packet_t *eap_chbind_vp2packet(TALLOC_CTX *ctx, VALUE_PAIR *vps) chbind_packet_t *packet; vp_cursor_t cursor; - first = fr_pair_find_by_num(vps, VENDORPEC_UKERNA, FR_UKERNA_CHBIND, TAG_ANY); + first = fr_pair_find_by_da(vps, attr_eap_channel_binding_message, TAG_ANY); if (!first) return NULL; /* * Compute the total length of the channel binding data. */ length = 0; - for (vp =fr_pair_cursor_init(&cursor, &first); + for (vp = fr_pair_cursor_init(&cursor, &first); vp != NULL; - vp = fr_pair_cursor_next_by_num(&cursor, VENDORPEC_UKERNA, FR_UKERNA_CHBIND, TAG_ANY)) { + vp = fr_pair_cursor_next_by_da(&cursor, attr_eap_channel_binding_message, TAG_ANY)) { length += vp->vp_length; } @@ -287,7 +290,7 @@ chbind_packet_t *eap_chbind_vp2packet(TALLOC_CTX *ctx, VALUE_PAIR *vps) packet = (chbind_packet_t *) ptr; for (vp = fr_pair_cursor_init(&cursor, &first); vp != NULL; - vp = fr_pair_cursor_next_by_num(&cursor, VENDORPEC_UKERNA, FR_UKERNA_CHBIND, TAG_ANY)) { + vp = fr_pair_cursor_next_by_da(&cursor, attr_eap_channel_binding_message, TAG_ANY)) { memcpy(ptr, vp->vp_octets, vp->vp_length); ptr += vp->vp_length; } @@ -301,7 +304,7 @@ VALUE_PAIR *eap_chbind_packet2vp(RADIUS_PACKET *packet, chbind_packet_t *chbind) if (!chbind) return NULL; /* don't produce garbage */ - vp = fr_pair_afrom_num(packet, VENDORPEC_UKERNA, FR_UKERNA_CHBIND); + vp = fr_pair_afrom_da(packet, attr_eap_channel_binding_message); if (!vp) return NULL; fr_pair_value_memcpy(vp, (uint8_t *) chbind, talloc_array_length((uint8_t *)chbind)); diff --git a/src/modules/rlm_eap/lib/base/eap_tls.c b/src/modules/rlm_eap/lib/base/eap_tls.c index 7836b0dc89a..f929fdb404e 100644 --- a/src/modules/rlm_eap/lib/base/eap_tls.c +++ b/src/modules/rlm_eap/lib/base/eap_tls.c @@ -72,6 +72,7 @@ RCSID("$Id$") USES_APPLE_DEPRECATED_API /* OpenSSL API has been deprecated by Apple */ #include "eap_tls.h" +#include "eap_attrs.h" FR_NAME_NUMBER const eap_tls_status_table[] = { { "invalid", EAP_TLS_INVALID }, diff --git a/src/modules/rlm_eap/lib/base/mppe_keys.c b/src/modules/rlm_eap/lib/base/mppe_keys.c index a9ab771e1e6..5aa6b955f7a 100644 --- a/src/modules/rlm_eap/lib/base/mppe_keys.c +++ b/src/modules/rlm_eap/lib/base/mppe_keys.c @@ -33,6 +33,7 @@ USES_APPLE_DEPRECATED_API /* OpenSSL API has been deprecated by Apple */ #include #include "eap_tls.h" #include "eap_base.h" +#include "eap_attrs.h" #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) @@ -308,7 +309,7 @@ void eap_tls_gen_eap_key(RADIUS_PACKET *packet, SSL *ssl, uint32_t header) VALUE_PAIR *vp; uint8_t *buff, *p; - vp = fr_pair_afrom_num(packet, 0, FR_EAP_SESSION_ID); + vp = fr_pair_afrom_da(packet, attr_eap_session_id); if (!vp) return; MEM(buff = p = talloc_array(vp, uint8_t, 1 + (2 * SSL3_RANDOM_SIZE))); diff --git a/src/modules/rlm_eap/types/rlm_eap_aka/rlm_eap_aka.c b/src/modules/rlm_eap/types/rlm_eap_aka/rlm_eap_aka.c index 500a20573b8..c5b18480902 100644 --- a/src/modules/rlm_eap/types/rlm_eap_aka/rlm_eap_aka.c +++ b/src/modules/rlm_eap/types/rlm_eap_aka/rlm_eap_aka.c @@ -58,11 +58,13 @@ static CONF_PARSER submodule_config[] = { }; static fr_dict_t const *dict_freeradius; +static fr_dict_t const *dict_radius; static fr_dict_t const *dict_eap_aka; extern fr_dict_autoload_t rlm_eap_aka_dict[]; fr_dict_autoload_t rlm_eap_aka_dict[] = { { .out = &dict_freeradius, .proto = "freeradius" }, + { .out = &dict_radius, .proto = "radius" }, { .out = &dict_eap_aka, .proto = "eap-aka" }, { NULL } }; @@ -71,6 +73,9 @@ static fr_dict_attr_t const *attr_eap_aka_root; static fr_dict_attr_t const *attr_eap_aka_subtype; static fr_dict_attr_t const *attr_sim_amf; +static fr_dict_attr_t const *attr_ms_mppe_send_key; +static fr_dict_attr_t const *attr_ms_mppe_recv_key; + static fr_dict_attr_t const *attr_eap_aka_any_id_req; static fr_dict_attr_t const *attr_eap_aka_autn; static fr_dict_attr_t const *attr_eap_aka_bidding; @@ -94,6 +99,9 @@ fr_dict_attr_autoload_t rlm_eap_aka_dict_attr[] = { { .out = &attr_eap_aka_subtype, .name = "EAP-AKA-Subtype", .type = FR_TYPE_UINT32, .dict = &dict_freeradius }, { .out = &attr_sim_amf, .name = "SIM-AMF", .type = FR_TYPE_OCTETS, .dict = &dict_freeradius }, + { .out = &attr_ms_mppe_send_key, .name = "MS-MPPE-Send-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_ms_mppe_recv_key, .name = "MS-MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_eap_aka_any_id_req, .name = "EAP-AKA-Any-ID-Req", .type = FR_TYPE_BOOL, .dict = &dict_eap_aka }, { .out = &attr_eap_aka_autn, .name = "EAP-AKA-AUTN", .type = FR_TYPE_OCTETS, .dict = &dict_eap_aka }, { .out = &attr_eap_aka_bidding, .name = "EAP-AKA-Bidding", .type = FR_TYPE_UINT16, .dict = &dict_eap_aka }, diff --git a/src/modules/rlm_eap/types/rlm_eap_fast/eap_fast.h b/src/modules/rlm_eap/types/rlm_eap_fast/eap_fast.h index e619fe69089..a9597934b87 100644 --- a/src/modules/rlm_eap/types/rlm_eap_fast/eap_fast.h +++ b/src/modules/rlm_eap/types/rlm_eap_fast/eap_fast.h @@ -211,7 +211,11 @@ extern fr_dict_attr_t const *attr_ms_chap_peer_challenge; extern fr_dict_attr_t const *attr_proxy_to_realm; extern fr_dict_attr_t const *attr_eap_message; +extern fr_dict_attr_t const *attr_eap_msk; +extern fr_dict_attr_t const *attr_eap_emsk; extern fr_dict_attr_t const *attr_freeradius_proxied_to; +extern fr_dict_attr_t const *attr_ms_mppe_send_key; +extern fr_dict_attr_t const *attr_ms_mppe_recv_key; extern fr_dict_attr_t const *attr_user_name; extern fr_dict_attr_t const *attr_user_password; diff --git a/src/modules/rlm_eap/types/rlm_eap_fast/rlm_eap_fast.c b/src/modules/rlm_eap/types/rlm_eap_fast/rlm_eap_fast.c index 81fb1fd7ff3..f0692403c18 100644 --- a/src/modules/rlm_eap/types/rlm_eap_fast/rlm_eap_fast.c +++ b/src/modules/rlm_eap/types/rlm_eap_fast/rlm_eap_fast.c @@ -92,7 +92,11 @@ fr_dict_attr_t const *attr_ms_chap_peer_challenge; fr_dict_attr_t const *attr_proxy_to_realm; fr_dict_attr_t const *attr_eap_message; +fr_dict_attr_t const *attr_eap_msk; +fr_dict_attr_t const *attr_eap_emsk; fr_dict_attr_t const *attr_freeradius_proxied_to; +fr_dict_attr_t const *attr_ms_mppe_send_key; +fr_dict_attr_t const *attr_ms_mppe_recv_key; fr_dict_attr_t const *attr_user_name; fr_dict_attr_t const *attr_user_password; @@ -133,7 +137,11 @@ fr_dict_attr_autoload_t rlm_eap_fast_dict_attr[] = { { .out = &attr_proxy_to_realm, .name = "Proxy-To-Realm", .type = FR_TYPE_STRING, .dict = &dict_freeradius }, { .out = &attr_eap_message, .name = "EAP-Message", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_eap_msk, .name = "EAP-MSK", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_eap_emsk, .name = "EAP-EMSK", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { .out = &attr_freeradius_proxied_to, .name = "FreeRADIUS-Proxied-To", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_radius }, + { .out = &attr_ms_mppe_send_key, .name = "MS-MPPE-Send-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_ms_mppe_recv_key, .name = "MS-MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius }, { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius }, diff --git a/src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c b/src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c index 8e692c3d258..0a2043790bb 100644 --- a/src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c +++ b/src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c @@ -70,6 +70,8 @@ static fr_dict_attr_t const *attr_ms_chap2_response; static fr_dict_attr_t const *attr_ms_chap2_success; static fr_dict_attr_t const *attr_ms_mppe_encryption_policy; static fr_dict_attr_t const *attr_ms_mppe_encryption_type; +static fr_dict_attr_t const *attr_ms_mppe_send_key; +static fr_dict_attr_t const *attr_ms_mppe_recv_key; static fr_dict_attr_t const *attr_state; static fr_dict_attr_t const *attr_user_name; @@ -87,6 +89,8 @@ fr_dict_attr_autoload_t rlm_eap_mschapv2_dict_attr[] = { { .out = &attr_ms_chap2_success, .name = "MS-CHAP2-Success", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { .out = &attr_ms_mppe_encryption_policy, .name = "MS-MPPE-Encryption-Policy", .type = FR_TYPE_UINT32, .dict = &dict_radius }, { .out = &attr_ms_mppe_encryption_type, .name = "MS-MPPE-Encryption-Type", .type = FR_TYPE_UINT32, .dict = &dict_radius }, + { .out = &attr_ms_mppe_send_key, .name = "MS-MPPE-Send-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_ms_mppe_recv_key, .name = "MS-MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { .out = &attr_state, .name = "State", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius }, { NULL } diff --git a/src/modules/rlm_eap/types/rlm_eap_pwd/rlm_eap_pwd.c b/src/modules/rlm_eap/types/rlm_eap_pwd/rlm_eap_pwd.c index 4cac713b523..e7046f0b583 100644 --- a/src/modules/rlm_eap/types/rlm_eap_pwd/rlm_eap_pwd.c +++ b/src/modules/rlm_eap/types/rlm_eap_pwd/rlm_eap_pwd.c @@ -61,11 +61,15 @@ fr_dict_autoload_t rlm_eap_pwd_dict[] = { static fr_dict_attr_t const *attr_cleartext_password; static fr_dict_attr_t const *attr_framed_mtu; +static fr_dict_attr_t const *attr_ms_mppe_send_key; +static fr_dict_attr_t const *attr_ms_mppe_recv_key; extern fr_dict_attr_autoload_t rlm_eap_pwd_dict_attr[]; fr_dict_attr_autoload_t rlm_eap_pwd_dict_attr[] = { { .out = &attr_cleartext_password, .name = "Cleartext-Password", .type = FR_TYPE_STRING, .dict = &dict_freeradius }, { .out = &attr_framed_mtu, .name = "Framed-MTU", .type = FR_TYPE_UINT32, .dict = &dict_radius }, + { .out = &attr_ms_mppe_send_key, .name = "MS-MPPE-Send-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_ms_mppe_recv_key, .name = "MS-MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, { NULL } }; diff --git a/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c b/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c index 4c5acba600b..6efcd83b0e7 100644 --- a/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c +++ b/src/modules/rlm_eap/types/rlm_eap_sim/rlm_eap_sim.c @@ -57,11 +57,13 @@ static CONF_PARSER submodule_config[] = { }; static fr_dict_t const *dict_freeradius; +static fr_dict_t const *dict_radius; static fr_dict_t const *dict_eap_sim; extern fr_dict_autoload_t rlm_eap_sim_dict[]; fr_dict_autoload_t rlm_eap_sim_dict[] = { { .out = &dict_freeradius, .proto = "freeradius" }, + { .out = &dict_radius, .proto = "radius" }, { .out = &dict_eap_sim, .proto = "eap-sim" }, { NULL } }; @@ -70,6 +72,9 @@ static fr_dict_attr_t const *attr_eap_sim_mk; static fr_dict_attr_t const *attr_eap_sim_root; static fr_dict_attr_t const *attr_eap_sim_subtype; +static fr_dict_attr_t const *attr_ms_mppe_send_key; +static fr_dict_attr_t const *attr_ms_mppe_recv_key; + static fr_dict_attr_t const *attr_eap_sim_any_id_req; static fr_dict_attr_t const *attr_eap_sim_client_error_code; static fr_dict_attr_t const *attr_eap_sim_counter; @@ -92,6 +97,9 @@ fr_dict_attr_autoload_t rlm_eap_sim_dict_attr[] = { { .out = &attr_eap_sim_root, .name = "EAP-SIM-Root", .type = FR_TYPE_TLV, .dict = &dict_freeradius }, { .out = &attr_eap_sim_subtype, .name = "EAP-SIM-Subtype", .type = FR_TYPE_UINT32, .dict = &dict_freeradius }, + { .out = &attr_ms_mppe_send_key, .name = "MS-MPPE-Send-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_ms_mppe_recv_key, .name = "MS-MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius }, + { .out = &attr_eap_sim_any_id_req, .name = "EAP-SIM-Any-ID-Req", .type = FR_TYPE_BOOL, .dict = &dict_eap_sim }, { .out = &attr_eap_sim_client_error_code, .name = "EAP-SIM-Client-Error-Code", .type = FR_TYPE_UINT16, .dict = &dict_eap_sim }, { .out = &attr_eap_sim_counter, .name = "EAP-SIM-Counter", .type = FR_TYPE_UINT16, .dict = &dict_eap_sim },