diff --git a/client/main.c b/client/main.c index 35c1ccbf0..015957617 100644 --- a/client/main.c +++ b/client/main.c @@ -1151,7 +1151,7 @@ do_lease(int argc, char **argv) } opt_address = argv[optind++]; - if (ni_sockaddr_prefix_parse(opt_address, &local_addr, &prefixlen) < 0) { + if (!ni_sockaddr_prefix_parse(opt_address, &local_addr, &prefixlen)) { ni_error("cannot parse interface address \"%s\"", opt_address); goto failed; } @@ -1205,7 +1205,7 @@ do_lease(int argc, char **argv) } opt_route = argv[optind++]; - if (ni_sockaddr_prefix_parse(opt_route, &dest_addr, &prefixlen) < 0) { + if (!ni_sockaddr_prefix_parse(opt_route, &dest_addr, &prefixlen)) { ni_error("cannot parse route destination \"%s\"", opt_route); goto failed; } diff --git a/dhcp4/fsm.c b/dhcp4/fsm.c index c809e7efa..5ef46e7ca 100644 --- a/dhcp4/fsm.c +++ b/dhcp4/fsm.c @@ -53,7 +53,9 @@ ni_dhcp4_defer_timeout(void *user_data, const ni_timer_t *timer) ni_warn("%s: bad timer handle", __func__); return; } - ni_note("%s: DHCLIENT_WAIT_AT_BOOT=%u reached (state %s)", dev->ifname, dev->config->defer_timeout, ni_dhcp4_fsm_state_name(dev->fsm.state)); + ni_note("%s: defer timeout %u reached (state %s)", + dev->ifname, dev->config->defer_timeout, + ni_dhcp4_fsm_state_name(dev->fsm.state)); ni_dhcp4_send_event(NI_DHCP4_EVENT_DEFERRED, dev, NULL); } @@ -473,9 +475,12 @@ ni_dhcp4_fsm_release(ni_dhcp4_device_t *dev) if (dev->config->release_lease) { ni_debug_dhcp("%s: releasing lease", dev->ifname); ni_dhcp4_device_send_message(dev, DHCP4_RELEASE, dev->lease); + ni_dhcp4_fsm_commit_lease(dev, NULL); + } else { + ni_dhcp4_device_drop_lease(dev); + ni_dhcp4_send_event(NI_DHCP4_EVENT_RELEASED, dev, NULL); + ni_dhcp4_fsm_restart(dev); } - - ni_dhcp4_fsm_commit_lease(dev, NULL); } /*