*/
if (c->pass2_fixup == PASS2_PAIRCOMPARE) {
fr_pair_t *vp;
- fr_pair_list_t vps;
- fr_pair_list_init(&vps);
EVAL_DEBUG("CMP WITH PAIRCOMPARE");
fr_assert(tmpl_is_attr(map->lhs));
fr_value_box_copy(vp, &vp->data, rhs);
- fr_pair_list_single_value(vps,*vp);
-
/*
* Do JUST the virtual attribute comparison.
* Skip all of the rest of the complexity of paircmp().
*/
- rcode = paircmp_virtual(request, &request->request_pairs, vp, &vps);
+ rcode = paircmp_virtual(request, &request->request_pairs, vp);
rcode = (rcode == 0) ? 1 : 0;
talloc_free(vp);
goto finish;
static int packet_cmp(UNUSED void *instance,
request_t *request,
UNUSED fr_pair_list_t *request_list,
- fr_pair_t *check_item,
- UNUSED fr_pair_list_t *check_list)
+ fr_pair_t *check_item)
{
VP_VERIFY(check_item);
static int generic_cmp(UNUSED void *instance,
request_t *request,
UNUSED fr_pair_list_t *request_list,
- fr_pair_t *check_item,
- UNUSED fr_pair_list_t *check_list)
+ fr_pair_t *check_item)
{
VP_VERIFY(check_item);
* @param[in] request_item item to compare.
* @param[in] request_list list pairs.
* @param[in] check_item item to compare.
- * @param[in] check_list list.
* @return
* - 0 if check_item and vp are equal.
* - -1 if vp value is less than check_item value.
static int paircmp_func(request_t *request,
fr_pair_t *request_item,
fr_pair_list_t *request_list,
- fr_pair_t *check_item,
- fr_pair_list_t *check_list)
+ fr_pair_t *check_item)
{
paircmp_t *c;
*/
for (c = cmp; c; c = c->next) {
if (c->da == check_item->da) {
- return (c->compare)(c->instance, request, request_list, check_item, check_list);
+ return (c->compare)(c->instance, request, request_list, check_item);
}
}
/** Compare check_item and request
*
- * Unlike paircmp_pairs() this function will call any attribute-specific
- * comparison functions registered. vp to be matched is request_item or
- * found in check_list or looked up from external sources depending on the
+ * Unlike paircmp_pairs() this function will call any
+ * attribute-specific comparison functions registered. vp to be
+ * matched is looked up from external sources depending on the
* comparison function called.
*
* @param[in] request Current request.
* @param[in] request_list list pairs.
* @param[in] check_item item to compare.
- * @param[in] check_list list.
* @return
* - 0 if check_item matches
* - -1 if check_item is smaller
*/
int paircmp_virtual(request_t *request,
fr_pair_list_t *request_list,
- fr_pair_t *check_item,
- fr_pair_list_t *check_list)
+ fr_pair_t *check_item)
{
paircmp_t *c;
for (c = cmp; c; c = c->next) {
if (c->da == check_item->da) {
- return (c->compare)(c->instance, request, request_list, check_item, check_list);
+ return (c->compare)(c->instance, request, request_list, check_item);
}
}
/*
* OK it is present now compare them.
*/
- compare = paircmp_func(request, auth_item, request_list, check_item, check_list);
+ compare = paircmp_func(request, auth_item, request_list, check_item);
switch (check_item->op) {
case T_OP_EQ:
default:
#include <freeradius-devel/util/pair.h>
/* for paircmp_register */
-typedef int (*RAD_COMPARE_FUNC)(void *instance, request_t *,fr_pair_list_t *, fr_pair_t *, fr_pair_list_t *);
+typedef int (*RAD_COMPARE_FUNC)(void *instance, request_t *,fr_pair_list_t *, fr_pair_t *);
int paircmp_pairs(request_t *request, fr_pair_t *check, fr_pair_t *vp);
int paircmp_virtual(request_t *request,
fr_pair_list_t *request_list,
- fr_pair_t *check_item,
- fr_pair_list_t *check_list);
+ fr_pair_t *check_item);
int paircmp_find(fr_dict_attr_t const *da);
/*
* Compare the expiration date.
*/
-static int expirecmp(UNUSED void *instance, request_t *req, UNUSED fr_pair_list_t *request_list, fr_pair_t *check,
- UNUSED fr_pair_list_t *check_list)
+static int expirecmp(UNUSED void *instance, request_t *req, UNUSED fr_pair_list_t *request_list, fr_pair_t *check)
{
time_t now = 0;
* @param request Current request.
* @param request_list Unknown.
* @param check Which group to check for user membership.
- * @param check_list Unknown.
* @return
* - 1 on failure (or if the user is not a member).
* - 0 on success.
*/
-static int rlm_ldap_groupcmp(void *instance, request_t *request, UNUSED fr_pair_list_t *request_list, fr_pair_t *check,
- UNUSED fr_pair_list_t *check_list)
+static int rlm_ldap_groupcmp(void *instance, request_t *request, UNUSED fr_pair_list_t *request_list, fr_pair_t *check)
{
rlm_ldap_t const *inst = talloc_get_type_abort_const(instance, rlm_ldap_t);
rlm_rcode_t rcode;
/*
* Compare the current time to a range.
*/
-static int timecmp(UNUSED void *instance, request_t *req, UNUSED fr_pair_list_t *request_list, fr_pair_t *check,
- UNUSED fr_pair_list_t *check_list)
+static int timecmp(UNUSED void *instance, request_t *req, UNUSED fr_pair_list_t *request_list, fr_pair_t *check)
{
/*
* If there's a request, use that timestamp.
* Time-Of-Day support
*/
static int time_of_day(UNUSED void *instance, request_t *request,
- UNUSED fr_pair_list_t *request_list, fr_pair_t *check,
- UNUSED fr_pair_list_t *check_list)
+ UNUSED fr_pair_list_t *request_list, fr_pair_t *check)
{
int scan;
int hhmmss, when;
* username will then be checked with the passed check string.
*/
static int sql_groupcmp(void *instance, request_t *request, UNUSED fr_pair_list_t *request_list,
- fr_pair_t *check, UNUSED fr_pair_list_t *check_list) CC_HINT(nonnull (1, 2, 4));
+ fr_pair_t *check) CC_HINT(nonnull (1, 2, 4));
static int sql_groupcmp(void *instance, request_t *request, UNUSED fr_pair_list_t *request_list,
- fr_pair_t *check, UNUSED fr_pair_list_t *check_list)
+ fr_pair_t *check)
{
rlm_sql_handle_t *handle;
rlm_sql_t const *inst = talloc_get_type_abort_const(instance, rlm_sql_t);
/*
* See if the counter matches.
*/
-static int counter_cmp(void *instance, request_t *request, UNUSED fr_pair_list_t *request_list , fr_pair_t *check,
- UNUSED fr_pair_list_t *check_list)
+static int counter_cmp(void *instance, request_t *request, UNUSED fr_pair_list_t *request_list , fr_pair_t *check)
{
rlm_sqlcounter_t const *inst = talloc_get_type_abort_const(instance, rlm_sqlcounter_t);
uint64_t counter;
{ NULL }
};
-static int rlm_test_cmp(UNUSED void *instance, request_t *request, UNUSED fr_pair_list_t *request_list, fr_pair_t *check,
- UNUSED fr_pair_list_t *check_list)
+static int rlm_test_cmp(UNUSED void *instance, request_t *request, UNUSED fr_pair_list_t *request_list, fr_pair_t *check)
{
fr_assert(check->vp_type == FR_TYPE_STRING);
* The Unix-Group = handler.
*/
static int groupcmp(UNUSED void *instance, request_t *request, UNUSED fr_pair_list_t *request_list,
- fr_pair_t *check, UNUSED fr_pair_list_t *check_list)
+ fr_pair_t *check)
{
struct passwd *pwd;
struct group *grp;
* @param request The current request
* @param request_list The request list
* @param check Value pair containing group to be searched
- * @param check_list Unknown
*
* @return
* - 0 user is in group
* - 1 failure or user is not in group
*/
-static int winbind_group_cmp(void *instance, request_t *request, UNUSED fr_pair_list_t *request_list, fr_pair_t *check,
- UNUSED fr_pair_list_t *check_list)
+static int winbind_group_cmp(void *instance, request_t *request, UNUSED fr_pair_list_t *request_list, fr_pair_t *check)
{
rlm_winbind_t *inst = instance;
int ret = 1;