} __clib_packed ip_address_t;
/* *INDENT-ON* */
+#define IP_ADDRESS_V4_ALL_0S {.ip.v4.as_u32 = 0, .version = AF_IP4}
+#define IP_ADDRESS_V6_ALL_0S {.ip.v4.as_u32 = 0, .version = AF_IP6}
+
#define ip_addr_addr(_a) (_a)->ip
#define ip_addr_v4(_a) (_a)->ip.v4
#define ip_addr_v6(_a) (_a)->ip.v6
#define ip_addr_version(_a) (_a)->version
+extern bool ip_address_is_zero (const ip_address_t * ip);
extern int ip_address_cmp (const ip_address_t * ip1,
const ip_address_t * ip2);
extern void ip_address_copy (ip_address_t * dst, const ip_address_t * src);
extern u16 ip_version_to_size (u8 ver);
extern u8 *format_ip_address (u8 * s, va_list * args);
extern uword unformat_ip_address (unformat_input_t * input, va_list * args);
-extern void ip_address_to_46 (const ip_address_t * addr,
- ip46_address_t * a, fib_protocol_t * proto);
+extern fib_protocol_t ip_address_to_46 (const ip_address_t * addr,
+ ip46_address_t * a);
+extern void ip_address_from_46 (const ip46_address_t * a,
+ fib_protocol_t fproto, ip_address_t * addr);
/* *INDENT-OFF* */
typedef struct ip_prefix