]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Fix compile on BSD.
authorRoy Marples <roy@marples.name>
Tue, 27 Jan 2009 19:40:05 +0000 (19:40 +0000)
committerRoy Marples <roy@marples.name>
Tue, 27 Jan 2009 19:40:05 +0000 (19:40 +0000)
dhcpcd.c
if-bsd.c
if-linux.c

index 4832f186a855418216f37a78e44e329b780e01ef..8004534afe3cb9a331d68e2ba687f425f71005b7 100644 (file)
--- 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)
index 8648a1a1e4250ab818bedc5c25538df3ef552b5b..1ac15a4ddd0443217ff7990afe0c0561b0f74ed6 100644 (file)
--- 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;
                        }
                }
index 71723e92a553d79de4445d7f5f46628a36fc540f..ce2f92e344c9f05d8ee3e7e53923445b8faf810d 100644 (file)
@@ -118,6 +118,7 @@ int
 init_socket(void)
 {
        sock_fd = _open_link_socket(&sock_nl);
+       set_cloexec(sock_fd);
        return sock_fd;
 }