]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add generic IP boxing macro for all AFs
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 4 Jun 2017 20:30:24 +0000 (16:30 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 4 Jun 2017 20:30:24 +0000 (16:30 -0400)
src/include/value.h

index 07b5eb91a463cf42bc0af47d901116c326c940f7..9b4a744741579eadf762ebaabe335a9074b50a36 100644 (file)
@@ -161,8 +161,14 @@ struct value_box {
 #define fr_box_strvalue_buffer(_val)           _fr_box_with_len(FR_TYPE_STRING, .vb_strvalue, _val, talloc_array_length(_val) - 1)
 #define fr_box_octets_buffer(_val)             _fr_box_with_len(FR_TYPE_OCTETS, .vb_octets, _val, talloc_array_length(_val))
 
-#define _fr_box(_type, _field, _val) &(fr_value_box_t){ .type = _type, _field = _val }
-
+#define _fr_box(_type, _field, _val) &(fr_value_box_t){ .type = _type, _field = (_val) }
+
+#define fr_box_ipaddr(_val)                    _fr_box(((_val->af == AF_INET) ? \
+                                                       ((_val->prefix == 32) ? FR_TYPE_IPV4_ADDR : \
+                                                                               FR_TYPE_IPV4_PREFIX) : \
+                                                       ((_val->prefix == 128) ? FR_TYPE_IPV6_ADDR : \
+                                                                                FR_TYPE_IPV6_PREFIX)), \
+                                               .vb_ip, _val)
 #define fr_box_ipv4addr(_val)                  _fr_box(FR_TYPE_IPV4_ADDR, .vb_ip, _val)
 #define fr_box_ipv4prefix(_val)                        _fr_box(FR_TYPE_IPV4_PREFIX, .vb_ip, _val)
 #define fr_box_ipv6addr(_val)                  _fr_box(FR_TYPE_IPV6_ADDR, .vb_ip, _val)