Browse Source

Merge pull request #735 from JianRuiqian/master

[lwIP] Update ethernetif.c
Bernard Xiong 8 years ago
parent
commit
e760d655b1

+ 14 - 9
components/net/lwip-1.4.1/src/netif/ethernetif.c

@@ -230,15 +230,20 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, char *name, rt_uint16
     {
         struct ip_addr ipaddr, netmask, gw;
 
-#if !LWIP_DHCP
-        IP4_ADDR(&ipaddr, RT_LWIP_IPADDR0, RT_LWIP_IPADDR1, RT_LWIP_IPADDR2, RT_LWIP_IPADDR3);
-        IP4_ADDR(&gw, RT_LWIP_GWADDR0, RT_LWIP_GWADDR1, RT_LWIP_GWADDR2, RT_LWIP_GWADDR3);
-        IP4_ADDR(&netmask, RT_LWIP_MSKADDR0, RT_LWIP_MSKADDR1, RT_LWIP_MSKADDR2, RT_LWIP_MSKADDR3);
-#else
-        IP4_ADDR(&ipaddr, 0, 0, 0, 0);
-        IP4_ADDR(&gw, 0, 0, 0, 0);
-        IP4_ADDR(&netmask, 0, 0, 0, 0);
-#endif
+    #if LWIP_DHCP
+        if (dev->flags & NETIF_FLAG_DHCP)
+        {
+            IP4_ADDR(&ipaddr, 0, 0, 0, 0);
+            IP4_ADDR(&gw, 0, 0, 0, 0);
+            IP4_ADDR(&netmask, 0, 0, 0, 0);
+        }
+        else
+    #endif
+        {
+            IP4_ADDR(&ipaddr, RT_LWIP_IPADDR0, RT_LWIP_IPADDR1, RT_LWIP_IPADDR2, RT_LWIP_IPADDR3);
+            IP4_ADDR(&gw, RT_LWIP_GWADDR0, RT_LWIP_GWADDR1, RT_LWIP_GWADDR2, RT_LWIP_GWADDR3);
+            IP4_ADDR(&netmask, RT_LWIP_MSKADDR0, RT_LWIP_MSKADDR1, RT_LWIP_MSKADDR2, RT_LWIP_MSKADDR3);
+        }
 
         netifapi_netif_add(netif, &ipaddr, &netmask, &gw, dev, eth_netif_device_init, tcpip_input);
     }

+ 4 - 1
components/net/lwip_dhcpd/dhcp_server.c

@@ -122,7 +122,10 @@ static rt_err_t _low_level_dhcp_send(struct netif *netif,
     memcpy((char *)udphdr + sizeof(struct udp_hdr),
            buffer, size);
 
-    return netif->linkoutput(netif, p);
+    netif->linkoutput(netif, p);
+    pbuf_free(p);
+    
+    return RT_EOK;
 }
 
 static void dhcpd_thread_entry(void *parameter)