Updated handling of port without IP address.

This commit is contained in:
skarg
2007-08-11 17:16:22 +00:00
parent 572fe661c3
commit 722b183f98
+10 -3
View File
@@ -71,22 +71,29 @@ static int get_local_address_ioctl(char *ifname,
return rv; return rv;
} }
/* on Linux, ifname is eth0, ath0, arc0, and others. */ /* on Linux, ifname is eth0, ath0, arc0, and others. */
static void bip_set_interface(char *ifname) static void bip_set_interface(char *ifname)
{ {
struct in_addr local_address; struct in_addr local_address;
struct in_addr broadcast_address; struct in_addr broadcast_address;
int rv = 0;
/* setup local address */ /* setup local address */
get_local_address_ioctl(ifname, &local_address, SIOCGIFADDR); rv = get_local_address_ioctl(ifname, &local_address, SIOCGIFADDR);
if (rv < 0) {
local_address.s_addr = 0;
}
bip_set_addr(local_address.s_addr); bip_set_addr(local_address.s_addr);
#ifdef BIP_DEBUG #ifdef BIP_DEBUG
fprintf(stderr, "Interface: %s\n", ifname); fprintf(stderr, "Interface: %s\n", ifname);
fprintf(stderr, "IP Address: %s\n", inet_ntoa(local_address)); fprintf(stderr, "IP Address: %s\n", inet_ntoa(local_address));
#endif #endif
/* setup local broadcast address */ /* setup local broadcast address */
get_local_address_ioctl(ifname, &broadcast_address, SIOCGIFBRDADDR); rv = get_local_address_ioctl(ifname, &broadcast_address,
SIOCGIFBRDADDR);
if (rv < 0) {
broadcast_address.s_addr = ~0;
}
bip_set_broadcast_addr(broadcast_address.s_addr); bip_set_broadcast_addr(broadcast_address.s_addr);
#ifdef BIP_DEBUG #ifdef BIP_DEBUG
fprintf(stderr, "IP Broadcast Address: %s\n", fprintf(stderr, "IP Broadcast Address: %s\n",