* Compare 2 attributes. May call the attribute compare function.
*/
static int paircompare(REQUEST *req, VALUE_PAIR *request, VALUE_PAIR *check,
- VALUE_PAIR *check_pairs, VALUE_PAIR **reply_pairs)
+ VALUE_PAIR *check_pairs, VALUE_PAIR **reply_pairs)
{
int ret = -2;
struct cmp *c;
}
/*
+ * Compare the request packet type.
+ */
+static int packetcmp(void *instance, REQUEST *req, VALUE_PAIR *request,
+ VALUE_PAIR *check,
+ VALUE_PAIR *check_pairs, VALUE_PAIR **reply_pairs)
+{
+ if (req->packet->code == check->lvalue) {
+ return 0;
+ }
+
+ return 1;
+}
+
+/*
+ * Compare the response packet type.
+ */
+static int responsecmp(void *instance, REQUEST *req, VALUE_PAIR *request,
+ VALUE_PAIR *check,
+ VALUE_PAIR *check_pairs, VALUE_PAIR **reply_pairs)
+{
+ if (req->reply->code == check->lvalue) {
+ return 0;
+ }
+
+ return 1;
+}
+
+/*
* Register server-builtin special attributes.
*/
void pair_builtincompare_init(void)
paircompare_register(PW_CURRENT_TIME, 0, timecmp, NULL);
paircompare_register(PW_NO_SUCH_ATTRIBUTE, 0, attrcmp, NULL);
paircompare_register(PW_EXPIRATION, 0, expirecmp, NULL);
+ paircompare_register(PW_PACKET_TYPE, 0, packetcmp, NULL);
+ paircompare_register(PW_RESPONSE_PACKET_TYPE, 0, responsecmp, NULL);
}
/*