From: Peter Meerwald <p.meerw...@bct-electronic.com> Connman constantly updates the IP when a lease without gateway is received, e.g. connmand[7607]: eth0.42 {del} route 0.0.0.0 gw 0.0.0.0 scope 253 <LINK> connmand[7607]: eth0.42 {add} route 0.0.0.0 gw 0.0.0.0 scope 253 <LINK> connmand[7607]: eth0.42 {del} route 0.0.0.0 gw 0.0.0.0 scope 253 <LINK> connmand[7607]: eth0.42 {add} route 0.0.0.0 gw 0.0.0.0 scope 253 <LINK>
the problematic condition in dhcp.c/lease_available_cb() is: if (!c_address || !c_gateway) ip_change = true; i.e. no address or gateway configured -> IP changed?! the remaining checks need to be fixed as well, g_strcmp0() already handles the case when one or both of the strings is NULL Signed-off-by: Peter Meerwald <pme...@pmeerw.net> --- src/dhcp.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/dhcp.c b/src/dhcp.c index 4436164..1360de2 100644 --- a/src/dhcp.c +++ b/src/dhcp.c @@ -443,14 +443,12 @@ static void lease_available_cb(GDHCPClient *dhcp_client, gpointer user_data) DBG("c_address %s", c_address); - if (address && c_address && g_strcmp0(address, c_address) != 0) + if (g_strcmp0(address, c_address) != 0) ip_change = true; - else if (gateway && c_gateway && g_strcmp0(gateway, c_gateway) != 0) + else if (g_strcmp0(gateway, c_gateway) != 0) ip_change = true; else if (prefixlen != c_prefixlen) ip_change = true; - else if (!c_address || !c_gateway) - ip_change = true; else ip_change = false; -- 1.7.9.5 _______________________________________________ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman