diff --git a/src/n-dhcp4/src/n-dhcp4-c-connection.c b/src/n-dhcp4/src/n-dhcp4-c-connection.c index e76ea16592..707c660487 100644 --- a/src/n-dhcp4/src/n-dhcp4-c-connection.c +++ b/src/n-dhcp4/src/n-dhcp4-c-connection.c @@ -379,6 +379,10 @@ void n_dhcp4_c_connection_get_timeout(NDhcp4CConnection *connection, *timeoutp = timeout; } +void n_dhcp4_c_connection_clear_client_ip(NDhcp4CConnection *connection) { + connection->client_ip = INADDR_ANY; +} + static int n_dhcp4_c_connection_packet_broadcast(NDhcp4CConnection *connection, NDhcp4Outgoing *message) { int r; diff --git a/src/n-dhcp4/src/n-dhcp4-c-probe.c b/src/n-dhcp4/src/n-dhcp4-c-probe.c index 58d61e72ba..43dff7b050 100644 --- a/src/n-dhcp4/src/n-dhcp4-c-probe.c +++ b/src/n-dhcp4/src/n-dhcp4-c-probe.c @@ -198,7 +198,7 @@ _c_public_ void n_dhcp4_client_probe_config_set_init_reboot(NDhcp4ClientProbeCon * * This sets the DSCP property of the configuration object, which specifies * the DSCP value to set in the first six bits of the DS field in the IPv4 - * header. If this function is not called, the DSCP will be set to CS0. + * header. If this function is not called, the DSCP will be set to CS0 (0). */ _c_public_ void n_dhcp4_client_probe_config_set_dscp(NDhcp4ClientProbeConfig *config, uint8_t dscp) { config->dscp = dscp & 0x3F; @@ -703,6 +703,8 @@ static int n_dhcp4_client_probe_transition_deferred(NDhcp4ClientProbe *probe, ui switch (probe->state) { case N_DHCP4_CLIENT_PROBE_STATE_INIT: + /* reset client IP (CIADDR) */ + n_dhcp4_c_connection_clear_client_ip(&probe->connection); r = n_dhcp4_c_connection_listen(&probe->connection); if (r) return r; diff --git a/src/n-dhcp4/src/n-dhcp4-private.h b/src/n-dhcp4/src/n-dhcp4-private.h index dbfe9b4ad0..7e71406e18 100644 --- a/src/n-dhcp4/src/n-dhcp4-private.h +++ b/src/n-dhcp4/src/n-dhcp4-private.h @@ -617,6 +617,8 @@ void n_dhcp4_c_connection_close(NDhcp4CConnection *connection); void n_dhcp4_c_connection_get_timeout(NDhcp4CConnection *connection, uint64_t *timeoutp); +void n_dhcp4_c_connection_clear_client_ip(NDhcp4CConnection *connection); + int n_dhcp4_c_connection_discover_new(NDhcp4CConnection *connection, NDhcp4Outgoing **request); int n_dhcp4_c_connection_select_new(NDhcp4CConnection *connection,