From fee9053f6a8a22ff53d59fc7865230ad41fdf760 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 30 Aug 2006 21:20:53 +0000 Subject: a few fixes in netlink handling git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1289 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-autoipd/iface-linux.c | 10 ++-------- avahi-autoipd/main.c | 12 +++++++----- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/avahi-autoipd/iface-linux.c b/avahi-autoipd/iface-linux.c index c2f24df..5e2996a 100644 --- a/avahi-autoipd/iface-linux.c +++ b/avahi-autoipd/iface-linux.c @@ -121,7 +121,6 @@ static int process_nlmsg(struct nlmsghdr *n) { int l; uint32_t address = 0; Address *i; - char buf[32]; ifa = NLMSG_DATA(n); @@ -144,8 +143,6 @@ static int process_nlmsg(struct nlmsghdr *n) { a = RTA_NEXT(a, l); } - daemon_log(LOG_INFO, "%s", inet_ntop(AF_INET, &address, buf, sizeof(buf))); - if (!address || is_ll_address(address)) return 0; @@ -189,7 +186,7 @@ static int process_response(int wait_for_done, unsigned seq) { return -1; } - if (p->nlmsg_type == NLMSG_DONE && wait_for_done && p->nlmsg_seq == seq) + if (p->nlmsg_type == NLMSG_DONE && wait_for_done && p->nlmsg_seq == seq && (pid_t) p->nlmsg_pid == getpid()) return 0; if (p->nlmsg_type == NLMSG_ERROR) { @@ -201,9 +198,6 @@ static int process_response(int wait_for_done, unsigned seq) { } } - if ((pid_t) p->nlmsg_pid != getpid()) - continue; - if (process_nlmsg(p) < 0) return -1; } @@ -272,7 +266,7 @@ int iface_process(Event *event) { if (process_response(0, 0) < 0) return -1; - if (b && !!addresses) + if (b && !addresses) *event = EVENT_ROUTABLE_ADDR_UNCONFIGURED; else if (!b && addresses) *event = EVENT_ROUTABLE_ADDR_CONFIGURED; diff --git a/avahi-autoipd/main.c b/avahi-autoipd/main.c index 200cab0..feb88ee 100644 --- a/avahi-autoipd/main.c +++ b/avahi-autoipd/main.c @@ -230,14 +230,14 @@ static void set_state(State st, int reset_counter) { static int add_address(int iface, uint32_t addr) { char buf[64]; - daemon_log(LOG_INFO, "Selected address %s", inet_ntop(AF_INET, &addr, buf, sizeof(buf))); + daemon_log(LOG_INFO, "Configuring address %s", inet_ntop(AF_INET, &addr, buf, sizeof(buf))); return 0; } static int remove_address(int iface, uint32_t addr) { char buf[64]; - daemon_log(LOG_INFO, "Removing address %s", inet_ntop(AF_INET, &addr, buf, sizeof(buf))); + daemon_log(LOG_INFO, "Unconfiguring address %s", inet_ntop(AF_INET, &addr, buf, sizeof(buf))); return 0; } @@ -464,6 +464,8 @@ static int loop(int iface, uint32_t addr) { daemon_log(LOG_INFO, "Successfully claimed IP address %s", inet_ntop(AF_INET, &addr, buf, sizeof(buf))); set_state(STATE_RUNNING, 0); + + next_wakeup_valid = 0; } else if (event == EVENT_PACKET) { ArpPacketInfo info; @@ -514,10 +516,11 @@ static int loop(int iface, uint32_t addr) { daemon_log(LOG_INFO, "A routable address has been configured."); - set_state(STATE_SLEEPING, 1); - if (state == STATE_RUNNING || state == STATE_ANNOUNCING) remove_address(iface, addr); + + set_state(STATE_SLEEPING, 1); + next_wakeup_valid = 0; } else if (event == EVENT_ROUTABLE_ADDR_UNCONFIGURED && state == STATE_SLEEPING) { @@ -655,7 +658,6 @@ fail: /* TODO: -- netlink - man page - user script - chroot/drop privs/caps -- cgit