diff options
| -rw-r--r-- | avahi-autoipd/iface-linux.c | 10 | ||||
| -rw-r--r-- | 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 | 
