* INIT-REBOOT state correctly. */
lease->server.s_addr = 0;
state->messages = 0;
- if (lease->addr.s_addr) {
+ if (lease->addr.s_addr && !(state->options & DHCPCD_INFORM)) {
logger(LOG_INFO, "renewing lease of %s",
inet_ntoa(lease->addr));
state->state = STATE_RENEWING;
dhcp, DHO_SERVERID);
log_dhcp(LOG_INFO, "acknowledged", dhcp);
}
- if (!state->offer) {
- state->offer = dhcp;
- *dhcpp = NULL;
- }
+ free(state->offer);
+ state->offer = dhcp;
+ *dhcpp = NULL;
break;
default:
logger(LOG_ERR, "wrong state %d", state->state);
do_socket(state, SOCKET_CLOSED);
r = bind_dhcp(state, options);
if (!(state->options & DHCPCD_ARP)) {
- logger(LOG_DEBUG, "renew in %ld seconds",
- (long int)state->stop.tv_sec);
+ if (!(state->options & DHCPCD_INFORM))
+ logger(LOG_DEBUG, "renew in %ld seconds",
+ (long int)state->stop.tv_sec);
return r;
}
state->state = STATE_ANNOUNCING;
#endif
/* Grab our IP config */
- if (dhcp == NULL || dhcp->yiaddr == 0)
+ if (dhcp == NULL)
up = 0;
else {
addr.s_addr = dhcp->yiaddr;
+ if (addr.s_addr == 0)
+ addr.s_addr = lease->addr.s_addr;
/* Ensure we have all the needed values */
if (get_option_addr(&net.s_addr, dhcp, DHO_SUBNETMASK) == -1)
net.s_addr = get_netmask(addr.s_addr);
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd July 12, 2008
+.Dd August 13, 2008
.Dt DHCPCD.SH 8 SMM
.Sh NAME
.Nm dhcpcd-run-hooks
.Nm
could be invoked:
.Bl -tag -width indent
+.It Dv INFORM
+dhcpcd informed a DHCP server about it's address and obtained other
+configuration details.
.It Dv BOUND
dhcpcd obtained a new lease from a DHCP server.
.It Dv RENEW