From: Arran Cudbard-Bell Date: Sun, 4 Jun 2017 20:30:24 +0000 (-0400) Subject: Add generic IP boxing macro for all AFs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6dcdd081066073c00a61dfa1b86c625a5bfc9ad8;p=thirdparty%2Ffreeradius-server.git Add generic IP boxing macro for all AFs --- diff --git a/src/include/value.h b/src/include/value.h index 07b5eb91a46..9b4a7447415 100644 --- a/src/include/value.h +++ b/src/include/value.h @@ -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)