We have to use VIR_WARNINGS_NO_CAST_ALIGN to avoid clang warning
about increased required alignment caused by some netlink macros.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/util/virarptable.c | 100 ++++++++++++++++++++++++-------------------------
1 file changed, 50 insertions(+), 50 deletions(-)
diff --git a/src/util/virarptable.c b/src/util/virarptable.c
index 8d9ab5fdc8..3819435d38 100644
--- a/src/util/virarptable.c
+++ b/src/util/virarptable.c
@@ -51,10 +51,11 @@ static int
parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len)
{
memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
- while (RTA_OK(rta, len)) {
+ VIR_WARNINGS_NO_CAST_ALIGN
+ for (; RTA_OK(rta, len); rta = RTA_NEXT(rta, len)) {
+ VIR_WARNINGS_RESET
if ((rta->rta_type <= max) && (!tb[rta->rta_type]))
tb[rta->rta_type] = rta;
- rta = RTA_NEXT(rta, len);
}
if (len)
@@ -82,73 +83,72 @@ virArpTablePtr virArpTableGet(void)
nh = (struct nlmsghdr*)nlData;
- while (NLMSG_OK(nh, msglen)) {
+ VIR_WARNINGS_NO_CAST_ALIGN
+ for(; NLMSG_OK(nh, msglen); nh = NLMSG_NEXT(nh, msglen)) {
+ VIR_WARNINGS_RESET
struct ndmsg *r = NLMSG_DATA(nh);
int len = nh->nlmsg_len;
void *addr;
- if ((len -= NLMSG_LENGTH(sizeof(*nh))) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("wrong nlmsg len"));
- goto cleanup;
- }
+ if ((len -= NLMSG_LENGTH(sizeof(*nh))) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("wrong nlmsg len"));
+ goto cleanup;
+ }
- if (r->ndm_family && (r->ndm_family != AF_INET))
- goto next_nlmsg;
+ if (r->ndm_family && (r->ndm_family != AF_INET))
+ continue;
- /* catch stale and reachalbe arp entry only */
- if (r->ndm_state &&
- (!(r->ndm_state == NUD_STALE || r->ndm_state == NUD_REACHABLE))) {
- nh = NLMSG_NEXT(nh, msglen);
- continue;
- }
+ /* catch stale and reachalbe arp entry only */
+ if (r->ndm_state &&
+ (!(r->ndm_state == NUD_STALE || r->ndm_state == NUD_REACHABLE)))
+ continue;
- if (nh->nlmsg_type == NLMSG_DONE)
- goto end_of_netlink_messages;
+ if (nh->nlmsg_type == NLMSG_DONE)
+ goto end_of_netlink_messages;
- parse_rtattr(tb, NDA_MAX, NDA_RTA(r),
- nh->nlmsg_len - NLMSG_LENGTH(sizeof(*r)));
+ VIR_WARNINGS_NO_CAST_ALIGN
+ parse_rtattr(tb, NDA_MAX, NDA_RTA(r),
+ nh->nlmsg_len - NLMSG_LENGTH(sizeof(*r)));
+ VIR_WARNINGS_RESET
- if (tb[NDA_DST] == NULL || tb[NDA_LLADDR] == NULL)
- goto next_nlmsg;
+ if (tb[NDA_DST] == NULL || tb[NDA_LLADDR] == NULL)
+ continue;
- if (tb[NDA_DST]) {
- virSocketAddr virAddr;
- if (VIR_REALLOC_N(table->t, num + 1) < 0)
- goto cleanup;
+ if (tb[NDA_DST]) {
+ virSocketAddr virAddr;
+ if (VIR_REALLOC_N(table->t, num + 1) < 0)
+ goto cleanup;
- table->n = num + 1;
+ table->n = num + 1;
- addr = RTA_DATA(tb[NDA_DST]);
- bzero(&virAddr, sizeof(virAddr));
- virAddr.len = sizeof(virAddr.data.inet4);
- virAddr.data.inet4.sin_family = AF_INET;
- virAddr.data.inet4.sin_addr = *(struct in_addr *)addr;
- ipstr = virSocketAddrFormat(&virAddr);
+ addr = RTA_DATA(tb[NDA_DST]);
+ bzero(&virAddr, sizeof(virAddr));
+ virAddr.len = sizeof(virAddr.data.inet4);
+ virAddr.data.inet4.sin_family = AF_INET;
+ virAddr.data.inet4.sin_addr = *(struct in_addr *)addr;
+ ipstr = virSocketAddrFormat(&virAddr);
- if (VIR_STRDUP(table->t[num].ipaddr, ipstr) < 0)
- goto cleanup;
+ if (VIR_STRDUP(table->t[num].ipaddr, ipstr) < 0)
+ goto cleanup;
- VIR_FREE(ipstr);
- }
+ VIR_FREE(ipstr);
+ }
- if (tb[NDA_LLADDR]) {
- virMacAddr macaddr;
- char ifmac[VIR_MAC_STRING_BUFLEN];
+ if (tb[NDA_LLADDR]) {
+ virMacAddr macaddr;
+ char ifmac[VIR_MAC_STRING_BUFLEN];
- addr = RTA_DATA(tb[NDA_LLADDR]);
- memcpy(macaddr.addr, addr, VIR_MAC_BUFLEN);
+ addr = RTA_DATA(tb[NDA_LLADDR]);
+ memcpy(macaddr.addr, addr, VIR_MAC_BUFLEN);
- virMacAddrFormat(&macaddr, ifmac);
+ virMacAddrFormat(&macaddr, ifmac);
- if (VIR_STRDUP(table->t[num].mac, ifmac) < 0)
- goto cleanup;
+ if (VIR_STRDUP(table->t[num].mac, ifmac) < 0)
+ goto cleanup;
- num++;
- }
-
- next_nlmsg:
- nh = NLMSG_NEXT(nh, msglen);
+ num++;
+ }
}
end_of_netlink_messages:
--
2.16.1