summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2009-03-19 19:17:34 +0000
committerRoy Marples <roy@marples.name>2009-03-19 19:17:34 +0000
commita89ac9ad9646f09d62a6af7232b80549560d8eb7 (patch)
treeea0a41021344ce0db84c69f91488023779e88535
parent1abffd5ba55b4e4a2a149001a33349ef39139457 (diff)
downloaddhcpcd-a89ac9ad9646f09d62a6af7232b80549560d8eb7.tar.xz
Fix compile on Linux.
-rw-r--r--dhcpcd.c4
-rw-r--r--if-linux.c29
2 files changed, 10 insertions, 23 deletions
diff --git a/dhcpcd.c b/dhcpcd.c
index 2448f5e2..1805265c 100644
--- a/dhcpcd.c
+++ b/dhcpcd.c
@@ -35,6 +35,10 @@ const char copyright[] = "Copyright (c) 2006-2009 Roy Marples";
#include <arpa/inet.h>
#include <net/route.h>
+#ifdef __linux__
+# include <linux/rtnetlink.h>
+#endif
+
#include <ctype.h>
#include <errno.h>
#include <getopt.h>
diff --git a/if-linux.c b/if-linux.c
index 0f4a3ab4..8c9c945c 100644
--- a/if-linux.c
+++ b/if-linux.c
@@ -63,10 +63,6 @@
#define BUFFERLEN 256
-static void (*nl_carrier)(const char *);
-static void (*nl_add)(const char *);
-static void (*nl_remove)(const char *);
-
static int sock_fd;
static struct sockaddr_nl sock_nl;
@@ -253,30 +249,17 @@ link_netlink(struct nlmsghdr *nlm)
}
rta = RTA_NEXT(rta, len);
}
- if (nlm->nlmsg_type == RTM_NEWLINK) {
- if (ifi->ifi_change == ~0U) {
- if (nl_add)
- nl_add(ifn);
- } else {
- if (nl_carrier)
- nl_carrier(ifn);
- }
- } else {
- if (nl_remove)
- nl_remove(ifn);
- }
+ if (nlm->nlmsg_type == RTM_NEWLINK)
+ len = ifi->ifi_change == ~0U ? 1 : 0;
+ else
+ len = -1;
+ handle_interface(len, ifn);
return 1;
}
int
-manage_link(int fd,
- void (*if_carrier)(const char *),
- void (*if_add)(const char *),
- void (*if_remove)(const char *))
+manage_link(int fd)
{
- nl_carrier = if_carrier;
- nl_add = if_add;
- nl_remove = if_remove;
return get_netlink(fd, MSG_DONTWAIT, &link_netlink);
}