]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add more upcast corner cases
authorAlan T. DeKok <aland@freeradius.org>
Sun, 10 Dec 2023 13:23:02 +0000 (08:23 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 11 Dec 2023 19:58:40 +0000 (14:58 -0500)
src/lib/util/calc.c
src/tests/unit/calc.txt

index aa30f9066e94cf23c547a476c73d8881c811980a..bfd8be60a5f6ac18262604b73bb6be6ca9fe08a1 100644 (file)
@@ -98,6 +98,8 @@ static const fr_type_t upcast_op[FR_TYPE_MAX + 1][FR_TYPE_MAX + 1] = {
         */
        [FR_TYPE_IPV4_PREFIX] = {
                [FR_TYPE_IPV4_PREFIX] = FR_TYPE_IPV4_PREFIX,
+               [FR_TYPE_IPV6_PREFIX] = FR_TYPE_IPV6_PREFIX,
+               [FR_TYPE_COMBO_IP_PREFIX] = FR_TYPE_COMBO_IP_PREFIX,
 
                [FR_TYPE_BOOL] =   FR_TYPE_IPV4_ADDR,
 
@@ -119,6 +121,7 @@ static const fr_type_t upcast_op[FR_TYPE_MAX + 1][FR_TYPE_MAX + 1] = {
 
        [FR_TYPE_IPV6_PREFIX] = {
                [FR_TYPE_IPV6_PREFIX] = FR_TYPE_IPV6_PREFIX,
+               [FR_TYPE_COMBO_IP_PREFIX] = FR_TYPE_COMBO_IP_PREFIX,
 
                [FR_TYPE_BOOL] =   FR_TYPE_IPV6_ADDR,
 
@@ -140,6 +143,7 @@ static const fr_type_t upcast_op[FR_TYPE_MAX + 1][FR_TYPE_MAX + 1] = {
 
        [FR_TYPE_COMBO_IP_ADDR] = {
                [FR_TYPE_IPV6_PREFIX] = FR_TYPE_COMBO_IP_PREFIX,
+               [FR_TYPE_COMBO_IP_PREFIX] = FR_TYPE_COMBO_IP_PREFIX,
 
                [FR_TYPE_BOOL] =   FR_TYPE_COMBO_IP_ADDR,
 
@@ -160,8 +164,6 @@ static const fr_type_t upcast_op[FR_TYPE_MAX + 1][FR_TYPE_MAX + 1] = {
        },
 
        [FR_TYPE_COMBO_IP_PREFIX] = {
-               [FR_TYPE_IPV6_PREFIX] = FR_TYPE_COMBO_IP_PREFIX,
-
                [FR_TYPE_BOOL] =   FR_TYPE_COMBO_IP_ADDR,
 
                [FR_TYPE_UINT8] =   FR_TYPE_COMBO_IP_ADDR,
index 4306e1dea13bd5426a471825d2115f954c956d89..9e5fe20fb2922b71cc93f391b5ed32d0e7ff9d6e 100644 (file)
@@ -176,6 +176,10 @@ match 127.0.0.1
 calc combo-prefix 127/8 + uint8 1 -> combo-ip
 match 127.0.0.1
 
+# auto-upcast
+calc combo-prefix 127/8 + uint8 1 -> null
+match 127.0.0.1
+
 calc ipv4addr 192.168.2.1 & uint32 0xffff0000 -> combo-prefix
 match 192.168.0.0/16
 
@@ -209,4 +213,4 @@ calc string "2" += string "test"
 match 2test
 
 count
-match 96
+match 98