vrrpd: use ipaddr_is_zero when needed

Replace custom implementation or call to ipaddr_isset with a call to
ipaddr_is_zero.

ipaddr_isset is not fully correct, because it's fine to have some
non-zero bytes at the end of the struct in case of IPv4 and the function
doesn't allow that.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
Igor Ryzhov 2022-01-27 21:05:40 +03:00
parent 6766acddbf
commit 3448a75c9d
2 changed files with 2 additions and 14 deletions

View file

@ -136,15 +136,6 @@ static inline void ipv4_mapped_ipv6_to_ipv4(const struct in6_addr *in6,
memcpy(in, (char *)in6 + 12, sizeof(struct in_addr)); memcpy(in, (char *)in6 + 12, sizeof(struct in_addr));
} }
/*
* Check if a struct ipaddr has nonzero value
*/
static inline bool ipaddr_isset(struct ipaddr *ip)
{
static struct ipaddr a = {};
return (0 != memcmp(&a, ip, sizeof(struct ipaddr)));
}
/* /*
* generic ordering comparison between IP addresses * generic ordering comparison between IP addresses
*/ */

View file

@ -246,11 +246,8 @@ lib_interface_vrrp_vrrp_group_v4_source_address_get_elem(
{ {
const struct vrrp_vrouter *vr = args->list_entry; const struct vrrp_vrouter *vr = args->list_entry;
struct yang_data *val = NULL; struct yang_data *val = NULL;
struct ipaddr ip;
memset(&ip, 0x00, sizeof(ip)); if (!ipaddr_is_zero(&vr->v4->src))
if (memcmp(&vr->v4->src.ipaddr_v4, &ip.ipaddr_v4, sizeof(ip.ipaddr_v4)))
val = yang_data_new_ip(args->xpath, &vr->v4->src); val = yang_data_new_ip(args->xpath, &vr->v4->src);
return val; return val;
@ -410,7 +407,7 @@ lib_interface_vrrp_vrrp_group_v6_source_address_get_elem(
const struct vrrp_vrouter *vr = args->list_entry; const struct vrrp_vrouter *vr = args->list_entry;
struct yang_data *val = NULL; struct yang_data *val = NULL;
if (ipaddr_isset(&vr->v6->src)) if (!ipaddr_is_zero(&vr->v6->src))
val = yang_data_new_ip(args->xpath, &vr->v6->src); val = yang_data_new_ip(args->xpath, &vr->v6->src);
return val; return val;