summaryrefslogtreecommitdiffstats
path: root/if-bsd.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-10-15 13:00:33 +0000
committerRoy Marples <roy@marples.name>2008-10-15 13:00:33 +0000
commit674616cd8372909ff6df63167e669046d3a044a0 (patch)
tree0ba4a2ae0d56fb0e0c67dea60b69742290762d7a /if-bsd.c
parentdacb4c85c2a5b0e34648339c15772e0615b49301 (diff)
downloaddhcpcd-674616cd8372909ff6df63167e669046d3a044a0.tar.xz
Cast to void * to avoid compiler warnings on Sparc64. Also, save a needless malloc.
Diffstat (limited to 'if-bsd.c')
-rw-r--r--if-bsd.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/if-bsd.c b/if-bsd.c
index 1ebf2cc0..6f640758 100644
--- a/if-bsd.c
+++ b/if-bsd.c
@@ -281,7 +281,7 @@ manage_link(int fd,
void (*if_add)(const char *),
void (*if_remove)(const char *))
{
- char buffer[2048], *p;
+ char buffer[2048], *p, *e;
char ifname[IF_NAMESIZE];
ssize_t bytes;
struct rt_msghdr *rtm;
@@ -297,14 +297,12 @@ manage_link(int fd,
continue;
return -1;
}
- for (p = buffer; bytes > 0;
- bytes -= ((struct rt_msghdr *)p)->rtm_msglen,
- p += ((struct rt_msghdr *)p)->rtm_msglen)
- {
- rtm = (struct rt_msghdr *)p;
+ e = buffer + bytes;
+ for (p = buffer; p < e; p += rtm->rtm_msglen) {
+ rtm = (struct rt_msghdr *)(void *)p;
switch(rtm->rtm_type) {
case RTM_IFANNOUNCE:
- ifa = (struct if_announcemsghdr *)p;
+ ifa = (struct if_announcemsghdr *)(void *)p;
switch(ifa->ifan_what) {
case IFAN_ARRIVAL:
if_add(ifa->ifan_name);
@@ -315,7 +313,7 @@ manage_link(int fd,
}
break;
case RTM_IFINFO:
- ifm = (struct if_msghdr *)p;
+ ifm = (struct if_msghdr *)(void *)p;
memset(ifname, 0, sizeof(ifname));
if (if_indextoname(ifm->ifm_index, ifname))
if_carrier(ifname);
@@ -358,8 +356,7 @@ discover_link(struct interface **ifs, int argc, char * const *argv,
}
if (!(ifp = init_interface(ifr->ifr_name)))
return;
- sdl = xmalloc(ifr->ifr_addr.sa_len);
- memcpy(sdl, &ifr->ifr_addr, ifr->ifr_addr.sa_len);
+ sdl = (struct sockaddr_dl *)&ifr->ifr_addr;
switch(sdl->sdl_type) {
case IFT_ETHER:
ifp->family = ARPHRD_ETHER;
@@ -377,7 +374,6 @@ discover_link(struct interface **ifs, int argc, char * const *argv,
ifp = NULL;
break;
}
- free(sdl);
if (ifl)
ifl->next = ifp;
else