From 02ea74d8f57009040ea2a268b1080e72ded286bf Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Tue, 22 Dec 2015 14:28:53 +0000
Subject: [PATCH] esp8266: Add network.ifconfig().

---
 esp8266/modnetwork.c   | 14 ++++++++++++++
 esp8266/qstrdefsport.h |  1 +
 2 files changed, 15 insertions(+)

diff --git a/esp8266/modnetwork.c b/esp8266/modnetwork.c
index b47ec8a67..79d712186 100644
--- a/esp8266/modnetwork.c
+++ b/esp8266/modnetwork.c
@@ -136,6 +136,19 @@ STATIC mp_obj_t esp_mac(mp_uint_t n_args, const mp_obj_t *args) {
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(esp_mac_obj, 0, 1, esp_mac);
 
+STATIC mp_obj_t esp_ifconfig(void) {
+    struct ip_info info;
+    wifi_get_ip_info(STATION_IF, &info);
+    mp_obj_t ifconfig[4] = {
+            netutils_format_ipv4_addr((uint8_t*)&info.ip, NETUTILS_BIG),
+            netutils_format_ipv4_addr((uint8_t*)&info.netmask, NETUTILS_BIG),
+            netutils_format_ipv4_addr((uint8_t*)&info.gw, NETUTILS_BIG),
+            MP_OBJ_NEW_QSTR(MP_QSTR_), // no DNS server
+    };
+    return mp_obj_new_tuple(4, ifconfig);
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_0(esp_ifconfig_obj, esp_ifconfig);
+
 STATIC const mp_map_elem_t mp_module_network_globals_table[] = {
     { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_network) },
     // MicroPython "network" module interface requires it to contains classes
@@ -149,6 +162,7 @@ STATIC const mp_map_elem_t mp_module_network_globals_table[] = {
     { MP_OBJ_NEW_QSTR(MP_QSTR_scan), (mp_obj_t)&esp_scan_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_isconnected), (mp_obj_t)&esp_isconnected_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_mac), (mp_obj_t)&esp_mac_obj },
+    { MP_OBJ_NEW_QSTR(MP_QSTR_ifconfig), (mp_obj_t)&esp_ifconfig_obj },
 
 #if MODNETWORK_INCLUDE_CONSTANTS
     { MP_OBJ_NEW_QSTR(MP_QSTR_STAT_IDLE),
diff --git a/esp8266/qstrdefsport.h b/esp8266/qstrdefsport.h
index 1f199a373..d75c65414 100644
--- a/esp8266/qstrdefsport.h
+++ b/esp8266/qstrdefsport.h
@@ -103,6 +103,7 @@ Q(scan)
 Q(status)
 Q(isconnected)
 Q(mac)
+Q(ifconfig)
 Q(STAT_IDLE)
 Q(STAT_CONNECTING)
 Q(STAT_WRONG_PASSWORD)
-- 
GitLab