}
}
- init_socket();
+ if (init_socket() == -1) {
+ syslog(LOG_ERR, "init_socket: %m");
+ exit(EXIT_FAILURE);
+ }
if (ifo->options & DHCPCD_LINK) {
linkfd = open_link_socket();
if (linkfd == -1)
set_cloexec(a_fd);
if ((r_fd = socket(PF_ROUTE, SOCK_RAW, 0)) == -1)
return -1;
- set_cloexec(a_fd);
+ set_cloexec(r_fd);
return 0;
}
struct rt_msghdr *rtm;
struct if_announcemsghdr *ifa;
struct if_msghdr *ifm;
- struct in_addr dst, net, gate;
+ struct rt rt;
struct sockaddr *sa;
struct sockaddr_in *sin;
sa = (struct sockaddr *)(rtm + 1);
if (sa->sa_family != AF_INET)
break;
+ rt.next = NULL;
+ rt.iface = NULL;
sin = (struct sockaddr_in *)sa;
- memcpy(&dst.s_addr, &sin->sin_addr.s_addr,
- sizeof(dst.s_addr));
+ memcpy(&rt.dest.s_addr, &sin->sin_addr.s_addr,
+ sizeof(rt.dest.s_addr));
sa = (struct sockaddr *)
(ROUNDUP(sa->sa_len) + (char *)sa);
sin = (struct sockaddr_in *)sa;
- memcpy(&gate.s_addr, &sin->sin_addr.s_addr,
- sizeof(gate.s_addr));
+ memcpy(&rt.gate.s_addr, &sin->sin_addr.s_addr,
+ sizeof(rt.gate.s_addr));
sa = (struct sockaddr *)
(ROUNDUP(sa->sa_len) + (char *)sa);
sin = (struct sockaddr_in *)sa;
- memcpy(&net.s_addr, &sin->sin_addr.s_addr,
- sizeof(net.s_addr));
- route_deleted(&dst, &net, &gate);
+ memcpy(&rt.net.s_addr, &sin->sin_addr.s_addr,
+ sizeof(rt.net.s_addr));
+ route_deleted(&rt);
break;
}
}