diff options
| author | Roy Marples <roy@marples.name> | 2008-10-15 13:00:33 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2008-10-15 13:00:33 +0000 |
| commit | 674616cd8372909ff6df63167e669046d3a044a0 (patch) | |
| tree | 0ba4a2ae0d56fb0e0c67dea60b69742290762d7a /if-bsd.c | |
| parent | dacb4c85c2a5b0e34648339c15772e0615b49301 (diff) | |
| download | dhcpcd-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.c | 18 |
1 files changed, 7 insertions, 11 deletions
@@ -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 |
