From: Roy Marples Date: Tue, 27 Jan 2009 19:40:05 +0000 (+0000) Subject: Fix compile on BSD. X-Git-Tag: v5.0.0~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=146d8134bdcbb0d21b51f0da2d1b5a7ce30dbf07;p=thirdparty%2Fdhcpcd.git Fix compile on BSD. --- diff --git a/dhcpcd.c b/dhcpcd.c index 4832f186..8004534a 100644 --- a/dhcpcd.c +++ b/dhcpcd.c @@ -1416,7 +1416,10 @@ main(int argc, char **argv) } } - 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) diff --git a/if-bsd.c b/if-bsd.c index 8648a1a1..1ac15a4d 100644 --- a/if-bsd.c +++ b/if-bsd.c @@ -78,7 +78,7 @@ init_socket(void) 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; } @@ -315,7 +315,7 @@ manage_link(int fd, 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; @@ -359,20 +359,22 @@ manage_link(int fd, 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; } } diff --git a/if-linux.c b/if-linux.c index 71723e92..ce2f92e3 100644 --- a/if-linux.c +++ b/if-linux.c @@ -118,6 +118,7 @@ int init_socket(void) { sock_fd = _open_link_socket(&sock_nl); + set_cloexec(sock_fd); return sock_fd; }