From Bugzilla Helper: User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) My environment is: Red Hat 6.2, pump 0.7.8, 0.8.3 and 0.8.8. (I read and test the 3 version code.) The Linux system got 2 LAN interface. One used Fix IP address. (ex. 192.168.0.1), the other used Dynamic. (DHCP client) Situation: First of all, I brought up the "eth1" interface with Fix IP. - -> OK Secondary, I run "ifup eth0" to trigger the "pump" program. But it couldn't get an IP address from the DHCP Server. ( the ISP) I capture the packets and found that the program will send "from 192.168.0.1 to 255.255.255.255" IP/UDP/DHCP packet. It's a broadcast packet, the server should receive it. But the ISP won't response any packet. Other Router or PC will send "from 0.0.0.0 to 255.255.255.255" packet to get a legal IP address from this ISP. I read the source of pump. It use "socket(AF_PACKET, SOCKET_DGRAM, ntohs(ETH_P_IP))" and "sendto(....serverAddr..)". The "sendto" function doesn't contain any source address field. I tried several ways to change the source address. (bind, setsockopt, ...) But I didn't succeed. It seems the low level code filled in the source IP address. But as my opinion, the "eth0" didn't up or get any valid IP address. It shouldn't send with the IP of eth1.(192.168.0.1) If the interface hasn't been ready. It should use 0.0.0.0 as its source. If I couldn't solve this problem, the customers of my company would have no chance to connect the that ISP. (It's a big ISP in local.) After several days trial, I still fail to change the field of source IP address. Reproducible: Always Steps to Reproduce: 1. Set up your first LAN interface with Fix IP. Active it. run "ifup eth1". (set /etc/sysconfig/network-scripts/ifcfg-eth1 with fix ip) 2. Active the second interface with DHCP cleint. run "ifup eth0". (set /etc/sysconfig/network-scripts/ifcfg-eth0 with dhcp client, ONBOOT=no) 3. Couldn't get an IP from eth0. The ISP doesn't reply. Actual Results: The ISP doesn't reply any packet to us. The Linux couln't get an IP address from the ISP. Expected Results: The eth0 should get a legal IP address from the ISP. We set DHCP client and pump could get an IP address from other DHCP server. We could get the IP address from most ISP. And if we got 1 LAN interface, we could get the IP without problem. I capture the LAN packets and compare it with other machine. (Other router and PC) The only different is in the IP layer. On Linux: Source: 192.168.0.1 Destination: 255.255.255.255 On Router: Source: 0.0.0.0 Destination: 255.255.255.255 Because the DHCP request packet should use "0.0.0.0 -> 255.255.255.255" when the interface hasn't up and without any IP address. It shouldn't use the IP address on another LAN interface as its source IP. (192.168.0.1)
The ISP is "@home" in the U.S.. The pump-0.8.8-1 RPM is ported from Red Hat 7.0 version to Red Hat 6.2 version by me. It works well but still couldn't fix this problem.
*** This bug has been marked as a duplicate of 23052 ***