If several RA routes are found for the same device, only list that
device once in the error message.
---
src/util/virnetdevip.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/util/virnetdevip.c b/src/util/virnetdevip.c
index 09925e1d7..bf98ed8a5 100644
--- a/src/util/virnetdevip.c
+++ b/src/util/virnetdevip.c
@@ -551,6 +551,8 @@ virNetDevIPCheckIPv6ForwardingCallback(const struct nlmsghdr *resp,
int ret = 0;
int len = RTM_PAYLOAD(resp);
int oif = -1;
+ size_t i;
+ bool hasDevice;
/* Ignore messages other than route ones */
if (resp->nlmsg_type != RTM_NEWROUTE)
@@ -587,7 +589,13 @@ virNetDevIPCheckIPv6ForwardingCallback(const struct nlmsghdr *resp,
accept_ra = virNetDevIPGetAcceptRA(ifname);
VIR_DEBUG("Checking route for device %s, accept_ra: %d", ifname, accept_ra);
- if (accept_ra != 2 && VIR_APPEND_ELEMENT(data->devices, data->ndevices, ifname) < 0)
+ hasDevice = false;
+ for (i = 0; i < data->ndevices && !hasDevice; i++) {
+ if (STREQ(data->devices[i], ifname))
+ hasDevice = true;
+ }
+ if (accept_ra != 2 && !hasDevice &&
+ VIR_APPEND_ELEMENT(data->devices, data->ndevices, ifname) < 0)
goto error;
cleanup:
--
2.12.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On 04/26/2017 06:38 AM, Cédric Bosdonnat wrote: > If several RA routes are found for the same device, only list that > device once in the error message. > --- > src/util/virnetdevip.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/src/util/virnetdevip.c b/src/util/virnetdevip.c > index 09925e1d7..bf98ed8a5 100644 > --- a/src/util/virnetdevip.c > +++ b/src/util/virnetdevip.c > @@ -551,6 +551,8 @@ virNetDevIPCheckIPv6ForwardingCallback(const struct nlmsghdr *resp, > int ret = 0; > int len = RTM_PAYLOAD(resp); > int oif = -1; > + size_t i; > + bool hasDevice; > > /* Ignore messages other than route ones */ > if (resp->nlmsg_type != RTM_NEWROUTE) > @@ -587,7 +589,13 @@ virNetDevIPCheckIPv6ForwardingCallback(const struct nlmsghdr *resp, > accept_ra = virNetDevIPGetAcceptRA(ifname); > VIR_DEBUG("Checking route for device %s, accept_ra: %d", ifname, accept_ra); > > - if (accept_ra != 2 && VIR_APPEND_ELEMENT(data->devices, data->ndevices, ifname) < 0) > + hasDevice = false; > + for (i = 0; i < data->ndevices && !hasDevice; i++) { > + if (STREQ(data->devices[i], ifname)) > + hasDevice = true; > + } > + if (accept_ra != 2 && !hasDevice && > + VIR_APPEND_ELEMENT(data->devices, data->ndevices, ifname) < 0) > goto error; > > cleanup: > ACK. -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2024 Red Hat, Inc.