- SET_SA_FAMILY(rt.rt_dst, AF_INET);
- ((struct sockaddr_in *) &rt.rt_dst)->sin_addr.s_addr = h;
- SET_SA_FAMILY(rt.rt_gateway, AF_INET);
- ((struct sockaddr_in *) &rt.rt_gateway)->sin_addr.s_addr = o;
- rt.rt_flags = RTF_HOST;
- if (ioctl(sockfd, (int)SIOCDELRT, (caddr_t) &rt) < 0) {
- syslog(LOG_ERR, "ioctl(SIOCDELRT): %m");
+ ifaddrs[0] = 0;
+ bzero(&ifr, sizeof (ifr));
+ strncpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
+ SET_SA_FAMILY(ifr.ifr_addr, AF_INET);
+ ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr = o;
+ if (ioctl(sockfd, (int)SIOCDIFADDR, (caddr_t) &ifr) < 0) {
+ syslog(LOG_ERR, "ioctl(SIOCDIFADDR): %m");