net: enabling DHCP
authorAdam Turowski <adam.turowski@inf.ethz.ch>
Tue, 4 Jul 2017 09:56:36 +0000 (11:56 +0200)
committerAdam Turowski <adam.turowski@inf.ethz.ch>
Tue, 4 Jul 2017 09:56:36 +0000 (11:56 +0200)
Signed-off-by: Adam Turowski <adam.turowski@inf.ethz.ch>

include/lwip2/lwipopts.h
lib/net/net.c
lib/posixcompat/Hakefile
usr/drivers/net_socket_server/e1000_net_sockets_server.c

index 86027a0..6c867b9 100644 (file)
@@ -444,7 +444,7 @@ struct netif *arp_filter_netif(struct pbuf *p, struct netif *netif, uint16_t typ
 */
 
 #define LWIP_NOASSERT 1
-//#define LWIP_DEBUG 0
+#define LWIP_DEBUG 1
 #define TAPIF_DEBUG      LWIP_DBG_OFF
 #define TUNIF_DEBUG      LWIP_DBG_OFF
 #define UNIXIF_DEBUG     LWIP_DBG_OFF
@@ -462,7 +462,7 @@ struct netif *arp_filter_netif(struct pbuf *p, struct netif *netif, uint16_t typ
 #define IP_REASS_DEBUG   LWIP_DBG_OFF
 #define RAW_DEBUG        LWIP_DBG_OFF
 #define ICMP_DEBUG       LWIP_DBG_OFF
-#define UDP_DEBUG        LWIP_DBG_OFF
+#define UDP_DEBUG        (LWIP_DBG_ON | LWIP_DBG_TYPES_ON | LWIP_DBG_MIN_LEVEL)
 #define TCP_DEBUG        LWIP_DBG_OFF
 #define TCP_INPUT_DEBUG  LWIP_DBG_OFF
 #define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
index b5f3750..6f22689 100644 (file)
@@ -305,12 +305,6 @@ static errval_t networking_init_with_queue_st(struct net_state *st,struct devq *
         if (err_is_fail(err)) {
             DEBUG_ERR(err, "failed to subscribte the ARP service\n");
         }
-        
-        ip4_addr_t ipaddr, netmask;
-        IP4_ADDR(&ipaddr, 192, 168, 0, 36);
-        IP4_ADDR(&netmask, 255, 255, 255, 0);
-        netif_set_addr(&st->netif, &ipaddr, &netmask,
-                    IP_ADDR_ANY);
     }
 
     NETDEBUG("initialization complete.\n");
index a02e8a9..99ea7f9 100644 (file)
@@ -103,7 +103,7 @@ in
         flounderBindings = [ "unixsock", "octopus" ],
         flounderExtraBindings = [ ("octopus", [ "rpcclient" ]) ],
         flounderTHCStubs = [ "octopus" ],
-        addLibraries = libDeps [ "vfs_noblockdev",  "term_server", "octopus" ],
+        addLibraries = libDeps [ "vfs_ramfs",  "term_server", "octopus", "lwip" ],
         architectures = [ "x86_32", "k1om", "armv7", "armv8" ]
     }
 ]
index 36a14e8..7411238 100644 (file)
@@ -481,13 +481,19 @@ static errval_t net_connect(struct net_sockets_binding *binding, uint32_t descri
 
     if (socket->udp_socket) {
         ip_addr_t addr;
+        err_t e;
+
         addr.addr = ip_address;
-        assert(udp_connect(socket->udp_socket, &addr, port) == ERR_OK);
+        e = udp_connect(socket->udp_socket, &addr, port);
+        assert(e == ERR_OK);
         *error = SYS_ERR_OK;
     } else if (socket->tcp_socket) {
         ip_addr_t addr;
+        err_t e;
+
         addr.addr = ip_address;
-        assert(tcp_connect(socket->tcp_socket, &addr, port, net_tcp_connected) == ERR_OK);
+        e = tcp_connect(socket->tcp_socket, &addr, port, net_tcp_connected);
+        assert(e == ERR_OK);
         *error = SYS_ERR_OK;
     }
 
@@ -625,9 +631,19 @@ static errval_t q_notify(struct descq* q)
                     notify = 1;
                     // debug_printf("%s(%d): %d\n", __func__, socket->descriptor, p->tot_len);
                     if (port && addr.addr) {
-                        assert(udp_sendto(pcb, p, &addr, port) == ERR_OK);
+                        err_t e;
+
+                        e = udp_sendto(pcb, p, &addr, port);
+                        if (e != ERR_OK)
+                            debug_printf("%s(%d): err:%d\n", __func__, socket->descriptor, e);
+                        assert(e == ERR_OK);
                     } else {
-                        assert(udp_send(pcb, p) == ERR_OK);
+                        err_t e;
+
+                        e = udp_send(pcb, p);
+                        if (e != ERR_OK)
+                            debug_printf("%s(%d): err:%d\n", __func__, socket->descriptor, e);
+                        assert(e == ERR_OK);
                     }
                     pbuf_free(p);
                 } else if (socket->tcp_socket) {
@@ -741,7 +757,7 @@ int main(int argc, char *argv[])
     snprintf(servicename, sizeof(servicename), "e1000:%s", argv[2]);
 
     /* connect to the network */
-    err = networking_init(servicename, 0);
+    err = networking_init(servicename, NET_FLAGS_DO_DHCP);
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "Failed to initialize the network");
     }