The dhcp server address is the one to consider as remote address if
there is no gateway set.
---
 src/peer.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/peer.c b/src/peer.c
index f48fb03..206b799 100644
--- a/src/peer.c
+++ b/src/peer.c
@@ -285,6 +285,7 @@ static void append_ipv4(DBusMessageIter *iter, void 
*user_data)
        char trans[INET_ADDRSTRLEN+1] = {};
        const char *local = "";
        const char *remote = "";
+       char *dhcp = NULL;
 
        if (!is_connected(peer))
                return;
@@ -299,13 +300,22 @@ static void append_ipv4(DBusMessageIter *iter, void 
*user_data)
                remote = trans;
        } else if (peer->ipconfig) {
                local = __connman_ipconfig_get_local(peer->ipconfig);
+
                remote = __connman_ipconfig_get_gateway(peer->ipconfig);
+               if (!remote) {
+                       remote = dhcp = __connman_dhcp_get_server_address(
+                                                       peer->ipconfig);
+                       if (!dhcp)
+                               remote = "";
+               }
        }
 
        connman_dbus_dict_append_basic(iter, "Local",
                                                DBUS_TYPE_STRING, &local);
        connman_dbus_dict_append_basic(iter, "Remote",
                                                DBUS_TYPE_STRING, &remote);
+       if (dhcp)
+               g_free(dhcp);
 }
 
 static void append_peer_service(DBusMessageIter *iter,
-- 
2.0.5

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to