ip: unformat_ip_address should no modify its argument on failure
When failing to match an ip address, we should not reset the ip address that could have been initialized by a previous match. Type: fix Change-Id: I026766391eb3eb8230f75f66bf4b681e774741d9 Signed-off-by: Benoît Ganne <bganne@cisco.com>
This commit is contained in:

committed by
Beno�t Ganne

parent
d1ca70c7e1
commit
dd2f12ba6a
@ -42,14 +42,15 @@ unformat_ip_address (unformat_input_t * input, va_list * args)
|
||||
{
|
||||
ip_address_t *a = va_arg (*args, ip_address_t *);
|
||||
|
||||
clib_memset (a, 0, sizeof (*a));
|
||||
if (unformat (input, "%U", unformat_ip4_address, &ip_addr_v4 (a)))
|
||||
ip_addr_version (a) = AF_IP4;
|
||||
else if (unformat_user (input, unformat_ip6_address, &ip_addr_v6 (a)))
|
||||
ip_addr_version (a) = AF_IP6;
|
||||
else
|
||||
return 0;
|
||||
return 1;
|
||||
if (unformat_user (input, unformat_ip46_address, &ip_addr_46 (a),
|
||||
IP46_TYPE_ANY))
|
||||
{
|
||||
ip_addr_version (a) =
|
||||
ip46_address_is_ip4 (&ip_addr_46 (a)) ? AF_IP4 : AF_IP6;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 *
|
||||
|
@ -42,14 +42,15 @@ unformat_ip_address (unformat_input_t * input, va_list * args)
|
||||
{
|
||||
ip_address_t *a = va_arg (*args, ip_address_t *);
|
||||
|
||||
clib_memset (a, 0, sizeof (*a));
|
||||
if (unformat (input, "%U", unformat_ip4_address, &ip_addr_v4 (a)))
|
||||
ip_addr_version (a) = AF_IP4;
|
||||
else if (unformat_user (input, unformat_ip6_address, &ip_addr_v6 (a)))
|
||||
ip_addr_version (a) = AF_IP6;
|
||||
else
|
||||
return 0;
|
||||
return 1;
|
||||
if (unformat_user (input, unformat_ip46_address, &ip_addr_46 (a),
|
||||
IP46_TYPE_ANY))
|
||||
{
|
||||
ip_addr_version (a) =
|
||||
ip46_address_is_ip4 (&ip_addr_46 (a)) ? AF_IP4 : AF_IP6;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 *
|
||||
|
Reference in New Issue
Block a user