static int instance_count = 0;
-static fr_dict_t *dict_freeradius;
-static fr_dict_t *dict_radius;
-static fr_dict_t *dict_eap_sim;
-static fr_dict_t *dict_eap_aka;
+fr_dict_t *dict_freeradius;
+fr_dict_t *dict_radius;
+fr_dict_t *dict_eap_sim;
+fr_dict_t *dict_eap_aka;
extern fr_dict_autoload_t libfreeradius_sim_dict[];
fr_dict_autoload_t libfreeradius_sim_dict[] = {
fr_dict_attr_t const *attr_eap_aka_ak;
fr_dict_attr_t const *attr_eap_aka_ck;
fr_dict_attr_t const *attr_eap_aka_ik;
-fr_dict_attr_t const *attr_eap_aka_root;
fr_dict_attr_t const *attr_eap_aka_subtype;
fr_dict_attr_t const *attr_eap_aka_xres;
fr_dict_attr_t const *attr_eap_sim_kc;
-fr_dict_attr_t const *attr_eap_sim_root;
fr_dict_attr_t const *attr_eap_sim_sres;
fr_dict_attr_t const *attr_eap_sim_subtype;
fr_dict_attr_t const *attr_sim_amf;
{ .out = &attr_eap_aka_padding, .name = "EAP-AKA-Padding", .type = FR_TYPE_OCTETS, .dict = &dict_eap_aka },
{ .out = &attr_eap_aka_rand, .name = "EAP-AKA-RAND", .type = FR_TYPE_OCTETS, .dict = &dict_eap_aka },
{ .out = &attr_eap_aka_res, .name = "EAP-AKA-RES", .type = FR_TYPE_OCTETS, .dict = &dict_eap_aka },
- { .out = &attr_eap_aka_root, .name = "EAP-AKA-Root", .type = FR_TYPE_TLV, .dict = &dict_eap_aka },
{ .out = &attr_eap_aka_subtype, .name = "EAP-AKA-Subtype", .type = FR_TYPE_UINT32, .dict = &dict_eap_aka },
{ .out = &attr_eap_aka_xres, .name = "EAP-AKA-XRES", .type = FR_TYPE_OCTETS, .dict = &dict_eap_aka },
{ .out = &attr_eap_sim_mac, .name = "EAP-SIM-MAC", .type = FR_TYPE_OCTETS, .dict = &dict_eap_sim },
{ .out = &attr_eap_sim_padding, .name = "EAP-SIM-Padding", .type = FR_TYPE_OCTETS, .dict = &dict_eap_sim },
{ .out = &attr_eap_sim_rand, .name = "EAP-SIM-RAND", .type = FR_TYPE_OCTETS, .dict = &dict_eap_sim },
- { .out = &attr_eap_sim_root, .name = "EAP-SIM-Root", .type = FR_TYPE_TLV, .dict = &dict_eap_sim },
{ .out = &attr_eap_sim_sres, .name = "EAP-SIM-SRES", .type = FR_TYPE_OCTETS, .dict = &dict_eap_sim },
{ .out = &attr_eap_sim_subtype, .name = "EAP-SIM-Subtype", .type = FR_TYPE_UINT32, .dict = &dict_eap_sim },
test_ctx = test_ctx_init(ctx, k_encr, sizeof(k_encr));
if (!test_ctx) return -1;
- test_ctx->root = attr_eap_sim_root;
+ test_ctx->root = fr_dict_root(dict_eap_sim);
test_ctx->have_iv = true; /* Ensures IV is all zeros */
*out = test_ctx;
test_ctx = test_ctx_init(ctx, k_encr, sizeof(k_encr));
if (!test_ctx) return -1;
- test_ctx->root = attr_eap_aka_root;
+ test_ctx->root = fr_dict_root(dict_eap_aka);
test_ctx->have_iv = true; /* Ensures IV is all zeros */
*out = test_ctx;
test_ctx = test_ctx_init(ctx, k_encr, sizeof(k_encr));
if (!test_ctx) return -1;
- test_ctx->root = attr_eap_sim_root;
+ test_ctx->root = fr_dict_root(dict_eap_sim);
*out = test_ctx;
test_ctx = test_ctx_init(ctx, k_encr, sizeof(k_encr));
if (!test_ctx) return -1;
- test_ctx->root = attr_eap_sim_root;
+ test_ctx->root = fr_dict_root(dict_eap_sim);
test_ctx->iv_included = true; /* Ensures IV is all zeros */
*out = test_ctx;
test_ctx = test_ctx_init(ctx, k_encr, sizeof(k_encr));
if (!test_ctx) return -1;
- test_ctx->root = attr_eap_aka_root;
+ test_ctx->root = fr_dict_root(dict_eap_aka);
test_ctx->iv_included = true; /* Ensures IV is all zeros */
*out = test_ctx;
test_ctx = test_ctx_init(ctx, k_encr, sizeof(k_encr));
if (!test_ctx) return -1;
- test_ctx->root = attr_eap_sim_root;
+ test_ctx->root = fr_dict_root(dict_eap_sim);
*out = test_ctx;
DICT_SANITY_CHECK(SUBTYPE);
#define FR_SIM_SUBTYPE (FR_EAP_SIM_SUBTYPE & FR_EAP_AKA_SUBTYPE)
+extern fr_dict_t *dict_freeradius;
+extern fr_dict_t *dict_radius;
+extern fr_dict_t *dict_eap_sim;
+extern fr_dict_t *dict_eap_aka;
+
extern fr_dict_attr_t const *attr_eap_aka_ak;
extern fr_dict_attr_t const *attr_eap_aka_ck;
extern fr_dict_attr_t const *attr_eap_aka_ik;
-extern fr_dict_attr_t const *attr_eap_aka_root;
extern fr_dict_attr_t const *attr_eap_aka_subtype;
extern fr_dict_attr_t const *attr_eap_aka_xres;
extern fr_dict_attr_t const *attr_eap_sim_kc;
-extern fr_dict_attr_t const *attr_eap_sim_root;
extern fr_dict_attr_t const *attr_eap_sim_sres;
extern fr_dict_attr_t const *attr_eap_sim_subtype;
extern fr_dict_attr_t const *attr_sim_amf;
{ NULL }
};
-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;
extern fr_dict_attr_autoload_t rlm_eap_aka_dict_attr[];
fr_dict_attr_autoload_t rlm_eap_aka_dict_attr[] = {
- { .out = &attr_eap_aka_root, .name = "EAP-AKA-Root", .type = FR_TYPE_TLV, .dict = &dict_freeradius },
{ .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 },
REQUEST *request = eap_session->request;
ssize_t ret;
fr_sim_encode_ctx_t encoder_ctx = {
- .root = attr_eap_aka_root,
+ .root = fr_dict_root(dict_eap_aka),
.keys = &eap_aka_session->keys,
.iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
fr_cursor_init(&to_encode, &head);
while ((vp = fr_cursor_current(&cursor))) {
- if (!fr_dict_parent_common(attr_eap_aka_root, vp->da, true)) {
+ if (!fr_dict_parent_common(encoder_ctx.root, vp->da, true)) {
fr_cursor_next(&cursor);
continue;
}
fr_sim_decode_ctx_t ctx = {
.keys = &eap_aka_session->keys,
- .root = attr_eap_aka_root
+ .root = fr_dict_root(dict_eap_aka)
};
VALUE_PAIR *vp, *vps, *subtype_vp;
fr_cursor_t cursor;
};
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;
extern fr_dict_attr_autoload_t rlm_eap_sim_dict_attr[];
fr_dict_attr_autoload_t rlm_eap_sim_dict_attr[] = {
{ .out = &attr_eap_sim_mk, .name = "EAP-SIM-MK", .type = FR_TYPE_OCTETS, .dict = &dict_freeradius },
- { .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 },
VALUE_PAIR *head = NULL, *vp;
REQUEST *request = eap_session->request;
fr_sim_encode_ctx_t encoder_ctx = {
- .root = attr_eap_sim_root,
+ .root = fr_dict_root(dict_eap_sim),
.keys = &eap_sim_session->keys,
.iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
fr_cursor_init(&to_encode, &head);
while ((vp = fr_cursor_current(&cursor))) {
- if (!fr_dict_parent_common(attr_eap_sim_root, vp->da, true)) {
+ if (!fr_dict_parent_common(fr_dict_root(dict_eap_sim), vp->da, true)) {
fr_cursor_next(&cursor);
continue;
}
eap_sim_session_t *eap_sim_session = talloc_get_type_abort(eap_session->opaque, eap_sim_session_t);
fr_sim_decode_ctx_t ctx = {
.keys = &eap_sim_session->keys,
- .root = attr_eap_sim_root
+ .root = fr_dict_root(dict_eap_sim)
};
VALUE_PAIR *subtype_vp, *from_peer, *vp;
fr_cursor_t cursor;
int ret;
- rad_assert(attr_eap_sim_root);
-
/*
* VPS is the data from the client
*/
# Load the EAP-SIM module
load eap-sim
+load-dictionary eap-aka
#
# Encode some AKA attributes with special formats
# Load the EAP-SIM module
load eap-sim
+load-dictionary eap-aka
#
# Encode some AKA attributes with special formats
# Load the EAP-SIM module
load eap-sim
+load-dictionary eap-aka
# AKA_RES with invalid length (too small)
decode-pair.aka_tp_decode 04 03 aa bb aa aa aa aa bb bb bb bb
# Load the EAP-SIM module
load eap-sim
+load-dictionary eap-sim
# Boolean attribute
decode-pair.sim_tp_decode 0d 01 00 00
# Load the EAP-SIM module
load eap-sim
+load-dictionary eap-sim
# Boolean attribute
encode-pair.sim_tp_encode EAP-SIM-Any-ID-Req = yes
# Load the EAP-SIM module
load eap-sim
+load-dictionary eap-sim
# Zero length attribute
decode-pair.sim_tp_decode 0d 00