---
 gdhcp/common.c        |  2 +-
 gdhcp/server.c        |  2 +-
 plugins/loopback.c    |  4 ++--
 src/config.c          |  2 +-
 src/dnsproxy.c        |  4 ++--
 src/inet.c            | 37 ++++++++++++++++++++++++-------------
 src/iptables.c        | 13 +++++++------
 src/ntp.c             |  2 +-
 src/rtnl.c            | 17 +++++++++++++++++
 src/stats.c           | 12 ++++++------
 tools/iptables-test.c | 13 +++++++------
 tools/stats-tool.c    | 12 ++++++------
 12 files changed, 75 insertions(+), 45 deletions(-)

diff --git a/gdhcp/common.c b/gdhcp/common.c
index ae062f3..aaf73b8 100644
--- a/gdhcp/common.c
+++ b/gdhcp/common.c
@@ -474,7 +474,7 @@ int dhcpv6_send_packet(int index, struct dhcpv6_packet 
*dhcp_pkt, int len)
        cmsg->cmsg_type = IPV6_PKTINFO;
        cmsg->cmsg_len = CMSG_LEN(sizeof(*pktinfo));
 
-       pktinfo = (struct in6_pktinfo *)CMSG_DATA(cmsg);
+       pktinfo = (struct in6_pktinfo *)(void *)CMSG_DATA(cmsg);
        memset(pktinfo, 0, sizeof(*pktinfo));
        pktinfo->ipi6_ifindex = index;
        m.msg_controllen = cmsg->cmsg_len;
diff --git a/gdhcp/server.c b/gdhcp/server.c
index 6dec651..cdddb64 100644
--- a/gdhcp/server.c
+++ b/gdhcp/server.c
@@ -338,7 +338,7 @@ static uint32_t get_interface_address(int index)
                goto done;
        }
 
-       server_ip = (struct sockaddr_in *) &ifr.ifr_addr;
+       server_ip = (struct sockaddr_in *)(void *) &ifr.ifr_addr;
        ret = server_ip->sin_addr.s_addr;
 
 done:
diff --git a/plugins/loopback.c b/plugins/loopback.c
index a111eee..70aaac1 100644
--- a/plugins/loopback.c
+++ b/plugins/loopback.c
@@ -104,7 +104,7 @@ static gboolean valid_loopback(int sk, struct ifreq *ifr)
                return err != -EADDRNOTAVAIL ? TRUE : FALSE;
        }
 
-       addr = (struct sockaddr_in *) &ifr->ifr_addr;
+       addr = (struct sockaddr_in *)(void *)&ifr->ifr_addr;
        if (addr->sin_addr.s_addr != loopback_address) {
                connman_warn("Invalid loopback address %s",
                        inet_ntop(AF_INET, &addr->sin_addr, buf, sizeof(buf)));
@@ -118,7 +118,7 @@ static gboolean valid_loopback(int sk, struct ifreq *ifr)
                return TRUE;
        }
 
-       addr = (struct sockaddr_in *) &ifr->ifr_netmask;
+       addr = (struct sockaddr_in *)(void *)&ifr->ifr_netmask;
        if (addr->sin_addr.s_addr != loopback_netmask) {
                connman_warn("Invalid loopback netmask %s",
                        inet_ntop(AF_INET, &addr->sin_addr, buf, sizeof(buf)));
diff --git a/src/config.c b/src/config.c
index 4686914..8a6ade9 100644
--- a/src/config.c
+++ b/src/config.c
@@ -597,7 +597,7 @@ static gboolean inotify_data(GIOChannel *channel, 
GIOCondition cond,
                gchar *ident;
                gsize len;
 
-               event = (struct inotify_event *) next_event;
+               event = (struct inotify_event *)(void *)next_event;
                if (event->len)
                        ident = next_event + sizeof(struct inotify_event);
                else
diff --git a/src/dnsproxy.c b/src/dnsproxy.c
index 2a2e52c..9c22456 100644
--- a/src/dnsproxy.c
+++ b/src/dnsproxy.c
@@ -327,7 +327,7 @@ static int dns_name_length(unsigned char *buf)
 
 static void update_cached_ttl(unsigned char *buf, int len, int new_ttl)
 {
-       unsigned char *c;
+       void *c;
        uint32_t *i;
        uint16_t *w;
        int l;
@@ -1221,7 +1221,7 @@ static void cache_refresh(void)
 
 static int reply_query_type(unsigned char *msg, int len)
 {
-       unsigned char *c;
+       void *c;
        uint16_t *w;
        int l;
        int type;
diff --git a/src/inet.c b/src/inet.c
index be69aca..d327600 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -49,9 +49,18 @@
 #include "connman.h"
 
 #define NLMSG_TAIL(nmsg)                               \
-       ((struct rtattr *) (((uint8_t*) (nmsg)) +       \
+       ((struct rtattr *)(void *)(((uint8_t*) (nmsg)) +\
        NLMSG_ALIGN((nmsg)->nlmsg_len)))
 
+#undef RTA_NEXT
+#define RTA_NEXT(rta,attrlen)                                          \
+       ((attrlen) -= RTA_ALIGN((rta)->rta_len),                        \
+               (struct rtattr*)(((void*)(rta)) + RTA_ALIGN((rta)->rta_len)))
+
+#undef RTM_RTA
+#define RTM_RTA(r)                                                     \
+       ((struct rtattr*)(((void*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
+
 int __connman_inet_rtnl_addattr_l(struct nlmsghdr *n, size_t max_length,
                                int type, const void *data, size_t data_length)
 {
@@ -103,7 +112,7 @@ int __connman_inet_modify_address(int cmd, int flags,
 
        memset(&request, 0, sizeof(request));
 
-       header = (struct nlmsghdr *)request;
+       header = (struct nlmsghdr *)(void *)request;
        header->nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
        header->nlmsg_type = cmd;
        header->nlmsg_flags = NLM_F_REQUEST | flags;
@@ -334,7 +343,7 @@ int connman_inet_ifdown(int index)
 
        memset(&addr_ifr, 0, sizeof(addr_ifr));
        memcpy(&addr_ifr.ifr_name, &ifr.ifr_name, sizeof(ifr.ifr_name));
-       addr = (struct sockaddr_in *)&addr_ifr.ifr_addr;
+       addr = (struct sockaddr_in *)(void *)&addr_ifr.ifr_addr;
        addr->sin_family = AF_INET;
        if (ioctl(sk, SIOCSIFADDR, &addr_ifr) < 0)
                connman_warn("Could not clear IPv4 address index %d", index);
@@ -1269,7 +1278,7 @@ connman_bool_t connman_inet_compare_subnet(int index, 
const char *host)
                return FALSE;
        }
 
-       netmask = (struct sockaddr_in *)&ifr.ifr_netmask;
+       netmask = (struct sockaddr_in *)(void *)&ifr.ifr_netmask;
        netmask_addr = netmask->sin_addr.s_addr;
 
        if (ioctl(sk, SIOCGIFADDR, &ifr) < 0) {
@@ -1279,7 +1288,7 @@ connman_bool_t connman_inet_compare_subnet(int index, 
const char *host)
 
        close(sk);
 
-       addr = (struct sockaddr_in *)&ifr.ifr_addr;
+       addr = (struct sockaddr_in *)(void *)&ifr.ifr_addr;
        if_addr = addr->sin_addr.s_addr;
 
        return ((if_addr & netmask_addr) == (host_addr & netmask_addr));
@@ -1527,7 +1536,7 @@ static int icmpv6_recv(int fd, gpointer user_data)
                return -errno;
        }
 
-       hdr = (struct nd_router_advert *)buf;
+       hdr = (struct nd_router_advert *)(void *)buf;
        DBG("code %d len %zd hdr %zd", hdr->nd_ra_code, len,
                                sizeof(struct nd_router_advert));
        if (hdr->nd_ra_code != 0)
@@ -1653,8 +1662,8 @@ static int ndisc_send_unspec(int type, int oif, const 
struct in6_addr *dest)
        msgh.msg_flags = 0;
 
        memset(cbuf, 0, CMSG_SPACE(sizeof(*pinfo)));
-       cmsg = (struct cmsghdr *)cbuf;
-       pinfo = (struct in6_pktinfo *)CMSG_DATA(cmsg);
+       cmsg = (struct cmsghdr *)(void *)cbuf;
+       pinfo = (struct in6_pktinfo *)(void *)CMSG_DATA(cmsg);
        pinfo->ipi6_ifindex = oif;
 
        cmsg->cmsg_len = CMSG_LEN(sizeof(*pinfo));
@@ -1785,7 +1794,7 @@ GSList *__connman_inet_ipv6_get_prefixes(struct 
nd_router_advert *hdr,
 
                switch (pos[0]) {
                case ND_OPT_PREFIX_INFORMATION:
-                       pinfo = (struct nd_opt_prefix_info *)pos;
+                       pinfo = (struct nd_opt_prefix_info *)(void *)pos;
                        prefix = inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
                                        prefix_str, INET6_ADDRSTRLEN);
                        if (prefix == NULL)
@@ -1851,10 +1860,12 @@ static int get_dest_addr(int family, int index, char 
*buf, int len)
 
        switch (family) {
        case AF_INET:
-               addr = &((struct sockaddr_in *)&ifr.ifr_dstaddr)->sin_addr;
+               addr = &((struct sockaddr_in *)(void *)
+                                       &ifr.ifr_dstaddr)->sin_addr;
                break;
        case AF_INET6:
-               addr = &((struct sockaddr_in6 *)&ifr.ifr_dstaddr)->sin6_addr;
+               addr = &((struct sockaddr_in6 *)(void *)
+                                       &ifr.ifr_dstaddr)->sin6_addr;
                break;
        default:
                errno = EINVAL;
@@ -2439,13 +2450,13 @@ char **__connman_inet_get_running_interfaces(void)
                 */
                switch (r->ifr_addr.sa_family) {
                case AF_INET:
-                       addr4 = ntohl(((struct sockaddr_in *)
+                       addr4 = ntohl(((struct sockaddr_in *)(void *)
                                                &r->ifr_addr)->sin_addr.s_addr);
                        if (((addr4 & 0xff000000) >> 24) == 127)
                                continue;
                        break;
                case AF_INET6:
-                       addr6 = &((struct sockaddr_in6 *)
+                       addr6 = &((struct sockaddr_in6 *)(void *)
                                                &r->ifr_addr)->sin6_addr;
                        if (IN6_IS_ADDR_LINKLOCAL(addr6))
                                continue;
diff --git a/src/iptables.c b/src/iptables.c
index ccd54ac..43a2782 100644
--- a/src/iptables.c
+++ b/src/iptables.c
@@ -117,7 +117,7 @@ static GHashTable *table_hash = NULL;
 static struct ipt_entry *get_entry(struct connman_iptables *table,
                                        unsigned int offset)
 {
-       return (struct ipt_entry *)((char *)table->blob_entries->entrytable +
+       return (struct ipt_entry *)((void *)table->blob_entries->entrytable +
                                                                        offset);
 }
 
@@ -465,7 +465,7 @@ static int iptables_add_chain(struct connman_iptables 
*table,
        entry_head->target_offset = sizeof(struct ipt_entry);
        entry_head->next_offset = entry_head_size;
 
-       error = (struct error_target *) entry_head->elems;
+       error = (struct error_target *)(void *)entry_head->elems;
        strcpy(error->t.u.user.name, IPT_ERROR_TARGET);
        error->t.u.user.target_size = ALIGN(sizeof(struct error_target));
        strcpy(error->error, name);
@@ -485,7 +485,7 @@ static int iptables_add_chain(struct connman_iptables 
*table,
        entry_return->target_offset = sizeof(struct ipt_entry);
        entry_return->next_offset = entry_return_size;
 
-       standard = (struct ipt_standard_target *) entry_return->elems;
+       standard = (struct ipt_standard_target *)(void *)entry_return->elems;
        standard->target.u.user.target_size =
                                ALIGN(sizeof(struct ipt_standard_target));
        standard->verdict = XT_RETURN;
@@ -796,7 +796,7 @@ static GList *find_existing_rule(struct connman_iptables 
*table,
        if (xt_t != NULL)
                xt_e_t = ipt_get_target(entry_test);
        if (xt_m != NULL)
-               xt_e_m = (struct xt_entry_match *)entry_test->elems;
+               xt_e_m = (struct xt_entry_match *)(void *)entry_test->elems;
 
        entry = chain_head->data;
        builtin = entry->builtin;
@@ -828,7 +828,8 @@ static GList *find_existing_rule(struct connman_iptables 
*table,
                if (xt_m != NULL) {
                        struct xt_entry_match *tmp_xt_e_m;
 
-                       tmp_xt_e_m = (struct xt_entry_match *)tmp_e->elems;
+                       tmp_xt_e_m = (struct xt_entry_match *)(void *)
+                                                               tmp_e->elems;
 
                        if (!is_same_match(tmp_xt_e_m, xt_e_m))
                                continue;
@@ -1089,7 +1090,7 @@ static void dump_match(struct connman_iptables *table, 
struct ipt_entry *entry)
        if (entry->elems == (unsigned char *)entry + entry->target_offset)
                return;
 
-       match = (struct xt_entry_match *) entry->elems;
+       match = (struct xt_entry_match *)(void *)entry->elems;
 
        if (!strlen(match->u.user.name))
                return;
diff --git a/src/ntp.c b/src/ntp.c
index b588c99..3bfc618 100644
--- a/src/ntp.c
+++ b/src/ntp.c
@@ -374,7 +374,7 @@ static gboolean received_data(GIOChannel *channel, 
GIOCondition condition,
 
                switch (cmsg->cmsg_type) {
                case SCM_TIMESTAMP:
-                       tv = (struct timeval *) CMSG_DATA(cmsg);
+                       tv = (struct timeval *)(void *)CMSG_DATA(cmsg);
                        break;
                }
        }
diff --git a/src/rtnl.c b/src/rtnl.c
index 5f3fe15..10a7dac 100644
--- a/src/rtnl.c
+++ b/src/rtnl.c
@@ -42,6 +42,23 @@
 
 #include "connman.h"
 
+#undef RTA_NEXT
+#define RTA_NEXT(rta,attrlen)                                          \
+       ((attrlen) -= RTA_ALIGN((rta)->rta_len),                        \
+               (struct rtattr*)(((void*)(rta)) + RTA_ALIGN((rta)->rta_len)))
+
+#undef RTM_RTA
+#define RTM_RTA(r)                                                     \
+       ((struct rtattr*)(((void*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
+
+#undef IFLA_RTA
+#define IFLA_RTA(r)  ((struct rtattr*)                                 \
+               (((void*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
+
+#undef IFA_RTA
+#define IFA_RTA(r) ((struct rtattr*)                                   \
+               (((void*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
+
 #ifndef ARPHDR_PHONET_PIPE
 #define ARPHDR_PHONET_PIPE (821)
 #endif
diff --git a/src/stats.c b/src/stats.c
index 828c1ef..dde5fca 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -129,21 +129,21 @@ GHashTable *stats_hash = NULL;
 
 static struct stats_file_header *get_hdr(struct stats_file *file)
 {
-       return (struct stats_file_header *)file->addr;
+       return (struct stats_file_header *)(void *)file->addr;
 }
 
 static struct stats_record *get_begin(struct stats_file *file)
 {
        unsigned int off = get_hdr(file)->begin;
 
-       return (struct stats_record *)(file->addr + off);
+       return (struct stats_record *)(void *)(file->addr + off);
 }
 
 static struct stats_record *get_end(struct stats_file *file)
 {
        unsigned int off = get_hdr(file)->end;
 
-       return (struct stats_record *)(file->addr + off);
+       return (struct stats_record *)(void *)(file->addr + off);
 }
 
 static struct stats_record *get_home(struct stats_file *file)
@@ -155,7 +155,7 @@ static struct stats_record *get_home(struct stats_file 
*file)
        if (hdr->home == UINT_MAX)
                return NULL;
 
-       return (struct stats_record *)(file->addr + hdr->home);
+       return (struct stats_record *)(void *)(file->addr + hdr->home);
 }
 
 static struct stats_record *get_roaming(struct stats_file *file)
@@ -167,7 +167,7 @@ static struct stats_record *get_roaming(struct stats_file 
*file)
        if (hdr->roaming == UINT_MAX)
                return NULL;
 
-       return (struct stats_record *)(file->addr + hdr->roaming);
+       return (struct stats_record *)(void *)(file->addr + hdr->roaming);
 }
 
 static void set_end(struct stats_file *file, struct stats_record *end)
@@ -245,7 +245,7 @@ static void stats_free(gpointer user_data)
 
 static void update_first(struct stats_file *file)
 {
-       file->first = (struct stats_record *)
+       file->first = (struct stats_record *)(void *)
                        (file->addr + sizeof(struct stats_file_header));
 }
 
diff --git a/tools/iptables-test.c b/tools/iptables-test.c
index cc227e8..2985788 100644
--- a/tools/iptables-test.c
+++ b/tools/iptables-test.c
@@ -112,7 +112,7 @@ struct connman_iptables {
 static struct ipt_entry *get_entry(struct connman_iptables *table,
                                        unsigned int offset)
 {
-       return (struct ipt_entry *)((char *)table->blob_entries->entrytable +
+       return (struct ipt_entry *)((void *)table->blob_entries->entrytable +
                                                                        offset);
 }
 
@@ -493,7 +493,7 @@ static int connman_iptables_add_chain(struct 
connman_iptables *table,
        entry_head->target_offset = sizeof(struct ipt_entry);
        entry_head->next_offset = entry_head_size;
 
-       error = (struct error_target *) entry_head->elems;
+       error = (struct error_target *)(void *)entry_head->elems;
        strcpy(error->t.u.user.name, IPT_ERROR_TARGET);
        error->t.u.user.target_size = ALIGN(sizeof(struct error_target));
        strcpy(error->error, name);
@@ -513,7 +513,7 @@ static int connman_iptables_add_chain(struct 
connman_iptables *table,
        entry_return->target_offset = sizeof(struct ipt_entry);
        entry_return->next_offset = entry_return_size;
 
-       standard = (struct ipt_standard_target *) entry_return->elems;
+       standard = (struct ipt_standard_target *)(void *)entry_return->elems;
        standard->target.u.user.target_size =
                                ALIGN(sizeof(struct ipt_standard_target));
        standard->verdict = XT_RETURN;
@@ -789,7 +789,7 @@ static GList *find_existing_rule(struct connman_iptables 
*table,
        if (xt_t != NULL)
                xt_e_t = ipt_get_target(entry_test);
        if (xt_m != NULL)
-               xt_e_m = (struct xt_entry_match *)entry_test->elems;
+               xt_e_m = (struct xt_entry_match *)(void *)entry_test->elems;
 
        entry = chain_head->data;
        builtin = entry->builtin;
@@ -821,7 +821,8 @@ static GList *find_existing_rule(struct connman_iptables 
*table,
                if (xt_m != NULL) {
                        struct xt_entry_match *tmp_xt_e_m;
 
-                       tmp_xt_e_m = (struct xt_entry_match *)tmp_e->elems;
+                       tmp_xt_e_m = (struct xt_entry_match *)
+                                                       (void *)tmp_e->elems;
 
                        if (!is_same_match(tmp_xt_e_m, xt_e_m))
                                continue;
@@ -1061,7 +1062,7 @@ static void dump_match(struct connman_iptables *table, 
struct ipt_entry *entry)
        if (entry->elems == (unsigned char *)entry + entry->target_offset)
                return;
 
-       match = (struct xt_entry_match *) entry->elems;
+       match = (struct xt_entry_match *)(void *)entry->elems;
 
        if (!strlen(match->u.user.name))
                return;
diff --git a/tools/stats-tool.c b/tools/stats-tool.c
index 0f06d8e..13e9e98 100644
--- a/tools/stats-tool.c
+++ b/tools/stats-tool.c
@@ -139,21 +139,21 @@ static GOptionEntry options[] = {
 
 static struct stats_file_header *get_hdr(struct stats_file *file)
 {
-       return (struct stats_file_header *)file->addr;
+       return (struct stats_file_header *)(void *)file->addr;
 }
 
 static struct stats_record *get_begin(struct stats_file *file)
 {
        unsigned int off = get_hdr(file)->begin;
 
-       return (struct stats_record *)(file->addr + off);
+       return (struct stats_record *)(void *)(file->addr + off);
 }
 
 static struct stats_record *get_end(struct stats_file *file)
 {
        unsigned int off = get_hdr(file)->end;
 
-       return (struct stats_record *)(file->addr + off);
+       return (struct stats_record *)(void *)(file->addr + off);
 }
 
 static struct stats_record *get_home(struct stats_file *file)
@@ -165,7 +165,7 @@ static struct stats_record *get_home(struct stats_file 
*file)
        if (hdr->home == UINT_MAX)
                return NULL;
 
-       return (struct stats_record *)(file->addr + hdr->home);
+       return (struct stats_record *)(void *)(file->addr + hdr->home);
 }
 
 static struct stats_record *get_roaming(struct stats_file *file)
@@ -177,7 +177,7 @@ static struct stats_record *get_roaming(struct stats_file 
*file)
        if (hdr->roaming == UINT_MAX)
                return NULL;
 
-       return (struct stats_record *)(file->addr + hdr->roaming);
+       return (struct stats_record *)(void *)(file->addr + hdr->roaming);
 }
 
 static void set_end(struct stats_file *file, struct stats_record *end)
@@ -379,7 +379,7 @@ static void update_nr_entries(struct stats_file *file)
 
 static void update_first(struct stats_file *file)
 {
-       file->first = (struct stats_record *)(file->addr +
+       file->first = (struct stats_record *)(void *)(file->addr +
                                        sizeof(struct stats_file_header));
 }
 
-- 
1.7.11.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to