]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
It's fine/useful to be able to cast to combo ip addr/prefix attributes and back again
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 7 Dec 2023 15:11:17 +0000 (09:11 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 7 Dec 2023 15:11:17 +0000 (09:11 -0600)
We usually don't care what address family an IP is unless we're putting it on the wire.

src/lib/util/types.c

index 77be3744efd04d3bd83ee2523333a0b10e9b8e73..a8f8fd4113d6f4afb6ad2fa0fa0e414603f10024 100644 (file)
@@ -196,18 +196,40 @@ static const bool type_cast_table[FR_TYPE_MAX][FR_TYPE_MAX] = {
                O(IPV4_PREFIX),
                O(IPV6_ADDR),
                O(IPV6_PREFIX),
-               O(UINT32), /* ipv4 addresses are uint32 */
+               O(COMBO_IP_ADDR),
+               O(COMBO_IP_PREFIX),
+               O(UINT32),              /* ipv4 addresses are uint32 */
        },
        [FR_TYPE_IPV4_PREFIX] = {
-               O(IPV4_ADDR),   /* if the prefix is /32 */
+               O(IPV4_ADDR),           /* if the prefix is /32 */
                O(IPV6_ADDR),
                O(IPV6_PREFIX),
+               O(COMBO_IP_ADDR),
+               O(COMBO_IP_PREFIX)
        },
        [FR_TYPE_IPV6_ADDR] = {
                O(IPV6_PREFIX),
+               O(COMBO_IP_ADDR),
+               O(COMBO_IP_PREFIX)
        },
        [FR_TYPE_IPV6_PREFIX] = {
-               O(IPV6_ADDR),   /* if the prefix is /128 */
+               O(IPV6_ADDR),           /* if the prefix is /128 */
+               O(COMBO_IP_ADDR),
+               O(COMBO_IP_PREFIX)
+       },
+       [FR_TYPE_COMBO_IP_ADDR] = {
+               O(IPV4_ADDR),
+               O(IPV4_PREFIX),
+               O(IPV6_ADDR),
+               O(IPV6_PREFIX),
+               O(COMBO_IP_PREFIX)
+       },
+       [FR_TYPE_COMBO_IP_PREFIX] = {
+               O(IPV4_ADDR),
+               O(IPV4_PREFIX),
+               O(IPV6_ADDR),
+               O(IPV6_PREFIX),
+               O(COMBO_IP_ADDR)        /* if the prefix is /128 or /32 */
        },
 
        [FR_TYPE_ETHERNET] = {