forked from Mirror/frr
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:
parent
6766acddbf
commit
3448a75c9d
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue