Setting a default netmask/broadcast address is no longer needed in ifconfig
and the net_server; the network stack now does this internally since r24170; it worked for IPv4 only, anyway. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24171 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
b5a5aebc90
commit
a9ab9cf19a
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2006-2007, Haiku, Inc. All Rights Reserved.
|
* Copyright 2006-2008, Haiku, Inc. All Rights Reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
|
@ -563,30 +563,6 @@ configure_interface(int socket, const char* name, char* const* args,
|
||||||
}
|
}
|
||||||
currentFlags = request.ifr_flags;
|
currentFlags = request.ifr_flags;
|
||||||
|
|
||||||
if (!hasMask && hasAddress && kFamilies[familyIndex].family == AF_INET
|
|
||||||
&& ioctl(socket, SIOCGIFNETMASK, &request, sizeof(struct ifreq)) == 0
|
|
||||||
&& request.ifr_mask.sa_family == AF_UNSPEC) {
|
|
||||||
// generate standard netmask if it doesn't have one yet
|
|
||||||
sockaddr_in *netmask = (sockaddr_in *)&mask;
|
|
||||||
netmask->sin_len = sizeof(sockaddr_in);
|
|
||||||
netmask->sin_family = AF_INET;
|
|
||||||
|
|
||||||
// choose default netmask depending on the class of the address
|
|
||||||
in_addr_t net = ((sockaddr_in *)&address)->sin_addr.s_addr;
|
|
||||||
if (IN_CLASSA(net)
|
|
||||||
|| (ntohl(net) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) {
|
|
||||||
// class A, or loopback
|
|
||||||
netmask->sin_addr.s_addr = IN_CLASSA_NET;
|
|
||||||
} else if (IN_CLASSB(net)) {
|
|
||||||
// class B
|
|
||||||
netmask->sin_addr.s_addr = IN_CLASSB_NET;
|
|
||||||
} else {
|
|
||||||
// class C and rest
|
|
||||||
netmask->sin_addr.s_addr = IN_CLASSC_NET;
|
|
||||||
}
|
|
||||||
|
|
||||||
hasMask = true;
|
|
||||||
}
|
|
||||||
if (hasMask) {
|
if (hasMask) {
|
||||||
memcpy(&request.ifr_mask, &mask, mask.sa_len);
|
memcpy(&request.ifr_mask, &mask, mask.sa_len);
|
||||||
|
|
||||||
|
@ -596,20 +572,6 @@ configure_interface(int socket, const char* name, char* const* args,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasBroadcast && hasAddress && (currentFlags & IFF_BROADCAST)
|
|
||||||
&& kFamilies[familyIndex].family == AF_INET
|
|
||||||
&& ioctl(socket, SIOCGIFBRDADDR, &request, sizeof(struct ifreq)) == 0
|
|
||||||
&& request.ifr_mask.sa_family == AF_UNSPEC) {
|
|
||||||
// generate standard broadcast address if it doesn't have one yet
|
|
||||||
sockaddr_in *broadcastAddr = (sockaddr_in *)&broadcast;
|
|
||||||
uint32 maskValue = ((sockaddr_in *)&mask)->sin_addr.s_addr;
|
|
||||||
uint32 broadcastValue = ((sockaddr_in *)&address)->sin_addr.s_addr;
|
|
||||||
broadcastValue = (broadcastValue & maskValue) | ~maskValue;
|
|
||||||
broadcastAddr->sin_len = sizeof(sockaddr_in);
|
|
||||||
broadcastAddr->sin_family = AF_INET;
|
|
||||||
broadcastAddr->sin_addr.s_addr = broadcastValue;
|
|
||||||
hasBroadcast = true;
|
|
||||||
}
|
|
||||||
if (hasBroadcast) {
|
if (hasBroadcast) {
|
||||||
memcpy(&request.ifr_broadaddr, &broadcast, broadcast.sa_len);
|
memcpy(&request.ifr_broadaddr, &broadcast, broadcast.sa_len);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2006-2007, Haiku, Inc. All Rights Reserved.
|
* Copyright 2006-2008, Haiku, Inc. All Rights Reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
|
@ -631,30 +631,6 @@ NetServer::_ConfigureInterface(int socket, BMessage& interface, bool fromMessage
|
||||||
}
|
}
|
||||||
int32 currentFlags = request.ifr_flags;
|
int32 currentFlags = request.ifr_flags;
|
||||||
|
|
||||||
if (!hasMask && hasAddress && family_at_index(familyIndex) == AF_INET
|
|
||||||
&& ioctl(familySocket, SIOCGIFNETMASK, &request, sizeof(struct ifreq)) == 0
|
|
||||||
&& request.ifr_mask.sa_family == AF_UNSPEC) {
|
|
||||||
// generate standard netmask if it doesn't have one yet
|
|
||||||
sockaddr_in *netmask = (sockaddr_in *)&mask;
|
|
||||||
netmask->sin_len = sizeof(sockaddr_in);
|
|
||||||
netmask->sin_family = AF_INET;
|
|
||||||
|
|
||||||
// choose default netmask depending on the class of the address
|
|
||||||
in_addr_t net = ((sockaddr_in *)&address)->sin_addr.s_addr;
|
|
||||||
if (IN_CLASSA(net)
|
|
||||||
|| (ntohl(net) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) {
|
|
||||||
// class A, or loopback
|
|
||||||
netmask->sin_addr.s_addr = IN_CLASSA_NET;
|
|
||||||
} else if (IN_CLASSB(net)) {
|
|
||||||
// class B
|
|
||||||
netmask->sin_addr.s_addr = IN_CLASSB_NET;
|
|
||||||
} else {
|
|
||||||
// class C and rest
|
|
||||||
netmask->sin_addr.s_addr = IN_CLASSC_NET;
|
|
||||||
}
|
|
||||||
|
|
||||||
hasMask = true;
|
|
||||||
}
|
|
||||||
if (hasMask) {
|
if (hasMask) {
|
||||||
memcpy(&request.ifr_mask, &mask, mask.sa_len);
|
memcpy(&request.ifr_mask, &mask, mask.sa_len);
|
||||||
|
|
||||||
|
@ -664,20 +640,6 @@ NetServer::_ConfigureInterface(int socket, BMessage& interface, bool fromMessage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasBroadcast && hasAddress && (currentFlags & IFF_BROADCAST)
|
|
||||||
&& family_at_index(familyIndex) == AF_INET
|
|
||||||
&& ioctl(familySocket, SIOCGIFBRDADDR, &request, sizeof(struct ifreq)) == 0
|
|
||||||
&& request.ifr_mask.sa_family == AF_UNSPEC) {
|
|
||||||
// generate standard broadcast address if it doesn't have one yet
|
|
||||||
sockaddr_in *broadcastAddr = (sockaddr_in *)&broadcast;
|
|
||||||
uint32 maskValue = ((sockaddr_in *)&mask)->sin_addr.s_addr;
|
|
||||||
uint32 broadcastValue = ((sockaddr_in *)&address)->sin_addr.s_addr;
|
|
||||||
broadcastValue = (broadcastValue & maskValue) | ~maskValue;
|
|
||||||
broadcastAddr->sin_len = sizeof(sockaddr_in);
|
|
||||||
broadcastAddr->sin_family = AF_INET;
|
|
||||||
broadcastAddr->sin_addr.s_addr = broadcastValue;
|
|
||||||
hasBroadcast = true;
|
|
||||||
}
|
|
||||||
if (hasBroadcast) {
|
if (hasBroadcast) {
|
||||||
memcpy(&request.ifr_broadaddr, &broadcast, broadcast.sa_len);
|
memcpy(&request.ifr_broadaddr, &broadcast, broadcast.sa_len);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue