[source,unlang]
----
-if (%(ldap.memberof:cn=foo,ou=groups,dc=example,dc=com) == 'yes') {
+if (%(ldap.memberof:cn=foo,ou=groups,dc=example,dc=com) == true) {
update reply {
&Reply-Message := "Welcome member of group 'foo'"
}
[source,unlang]
----
-if (%(ldap.memberof:foo) == 'yes') {
+if (%(ldap.memberof:foo) == true) {
update reply {
&Reply-Message := "Welcome member of group 'foo'"
}
...
recv Access-Request {
ldap
- if (%(ldap.memberof:cn=authorized_users,ou=groups,dc=example,dc=com) == 'yes') {
+ if (%(ldap.memberof:cn=authorized_users,ou=groups,dc=example,dc=com) == true) {
reject
}
...
fr_dict_attr_t const *attr_user_password;
fr_dict_attr_t const *attr_user_name;
+static fr_dict_attr_t const *attr_expr_bool_enum;
extern fr_dict_attr_autoload_t rlm_ldap_dict_attr[];
fr_dict_attr_autoload_t rlm_ldap_dict_attr[] = {
{ .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
{ .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
+ { .out = &attr_expr_bool_enum, .name = "Expr-Bool-Enum", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
{ NULL }
};
ldap_memberof_xlat_ctx_t *xlat_ctx = talloc_get_type_abort(xctx->rctx, ldap_memberof_xlat_ctx_t);
fr_value_box_t *vb;
- MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_BOOL, NULL));
+ MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_BOOL, attr_expr_bool_enum));
vb->vb_bool = xlat_ctx->found;
fr_dcursor_append(out, vb);
#
# Resolve using group name attribute
#
-if (!(%(ldap.memberof:foo) == 'yes')) {
+if !(%(ldap.memberof:foo) == true) {
test_fail
}
-if (!(%(ldap.memberof:baz) == 'no')) {
+if !(%(ldap.memberof:baz) == false) {
test_fail
}
#
# Resolve using group DN
#
-if (!(%(ldap.memberof:cn=foo,ou=groups,dc=example,dc=com) == 'yes')) {
+if !(%(ldap.memberof:cn=foo,ou=groups,dc=example,dc=com) == true) {
test_fail
}
-if (!(%(ldap.memberof:cn=baz,ou=groups,dc=example,dc=com) == 'no')) {
+if !(%(ldap.memberof:cn=baz,ou=groups,dc=example,dc=com) == false) {
test_fail
}