Hi, I have some problems about lwip with two ethernet ports and it only has one network interface card(NIC).
I handle a project that want to use one NIC to support two ethernet ports, I add the second netif and initialize it.
struct netif* xnetif_0;
struct netif* xnetif_1;
ip_addr_t ipaddr, netmask, gw;
/*set all to zero*/
ip_addr_set_zero(&ipaddr);
ip_addr_set_zero(&netmask);
ip_addr_set_zero(&gw);
#ifdef CFG_NET_ETHERNET_IPADDR
ipaddr_aton(CFG_NET_ETHERNET_IPADDR, &ipaddr); //default "192.168.1.1"
ipaddr_aton(CFG_NET_ETHERNET_NETMASK, &netmask); //default "255.255.255.0"
ipaddr_aton(CFG_NET_ETHERNET_GATEWAY, &gw); //default "192.168.1.254"
#endif // CFG_NET_ETHERNET_IPADDR
//ethernetif_init(xnetif_0);
//ethernetif_init(xnetif_1);
//eth0
netif_set_default(netif_add(xnetif_0, &ipaddr, &netmask, &gw, NULL, ethernetif_init, tcpip_input));
netif_set_up(xnetif_0);
//eth 1
netif_set_default(netif_add(xnetif_1, &ipaddr, &netmask, &gw, NULL, ethernetif_init, tcpip_input));
netif_set_up(xnetif_1);
eth0 and eth1 are both read .ini file to access the ip, netmask and gw,
/********device_1********/
//eth0
ip: 192.168.191.220
netmask: 255.255.255.0
gw: 192.168.191.254
//eth1
ip: 172.16.0.101
netmask: 255.255.0.0
gw: 172.16.0.254
/********device_1********/
/********device_2********/
//eth0
ip: 192.168.191.199
netmask: 255.255.255.0
gw: 192.168.191.254
/********device_2********/
//my PC
ip: 172.16.0.102
netmask: 255.255.0.0
gw: 172.16.0.101
PC<---->eth1[device_1]eth1<---->device_2
After coding, l use PC to ping eth1(device_1), it's OK, but I ping eth0(device_1) and device_2 has some problems.
Problem 1:
The ICMP packet loss on etharp_output, why the gw of packet is chaged to default (255.255.0.0)??
Problem 1:
If I ping device2(192.168.191.199), ip_forward have worked exectly, but the packet does not send to etharp_send_ip(), is it relate about arp_table??