]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add support for "signed", just like integer64
authorAlan T. DeKok <aland@freeradius.org>
Tue, 16 Aug 2011 12:14:46 +0000 (08:14 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 20 Aug 2011 01:10:08 +0000 (21:10 -0400)
src/main/modcall.c
src/main/valuepair.c
src/main/xlat.c

index 6ab092c81a9b4b75640b3d9bb8533a1da1c52586..d9a04407b2a588fa13a27c9c65690e24f6abcd76 100644 (file)
@@ -1499,6 +1499,7 @@ static modcallable *do_compile_modupdate(modcallable *parent,
                        if ((vp->type != PW_TYPE_BYTE) &&
                            (vp->type != PW_TYPE_SHORT) &&
                            (vp->type != PW_TYPE_INTEGER) &&
+                           (vp->type != PW_TYPE_SIGNED) &&
                            (vp->type != PW_TYPE_INTEGER64)) {
                                pairfree(&head);
                                pairfree(&vp);
index b644fd7583431587585a37b92416c6a250536293..8e48f1f0b7506ea28408fa143e7fd5462b153856 100644 (file)
@@ -242,6 +242,15 @@ int radius_compare_vps(REQUEST *request, VALUE_PAIR *check, VALUE_PAIR *vp)
                                ret = 0;
                        }
                        break;
+               case PW_TYPE_SIGNED:
+                       if (vp->vp_signed < check->vp_signed) {
+                               ret = -1;
+                       } else if (vp->vp_signed > check->vp_signed) {
+                               ret = +1;
+                       } else {
+                               ret = 0;
+                       }
+                       break;
                case PW_TYPE_DATE:
                        ret = vp->vp_date - check->vp_date;
                        break;
index 73c1127b929b36bd6f0e9b87e2614a810e0b0c6a..51f68326c24006c8301d48d89b73f025d50e0df8 100644 (file)
@@ -91,7 +91,8 @@ static int valuepair2str(char * out,int outlen,VALUE_PAIR * pair,
                strlcpy(out,"_",outlen);
                break;
        case PW_TYPE_INTEGER64:
-       case PW_TYPE_INTEGER :
+       case PW_TYPE_SIGNED:
+       case PW_TYPE_INTEGER:
                strlcpy(out,"0",outlen);
                break;
        case PW_TYPE_IPADDR :
@@ -214,6 +215,10 @@ static size_t xlat_packet(void *instance, REQUEST *request,
                                snprintf(out, outlen, "%u", vp->lvalue);
                                return strlen(out);
 
+                       case PW_TYPE_SIGNED:
+                               snprintf(out, outlen, "%d", vp->vp_signed);
+                               return strlen(out);
+
                        case PW_TYPE_INTEGER64:
                                snprintf(out, outlen, "%llu", vp->vp_integer64);
                                return strlen(out);