From a9ab9cf19a2348f315644b5d6b63ef69bbf12c84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 28 Feb 2008 15:51:34 +0000 Subject: [PATCH] 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 --- src/bin/network/ifconfig/ifconfig.cpp | 40 +-------------------------- src/servers/net/NetServer.cpp | 40 +-------------------------- 2 files changed, 2 insertions(+), 78 deletions(-) diff --git a/src/bin/network/ifconfig/ifconfig.cpp b/src/bin/network/ifconfig/ifconfig.cpp index b79975fdbd..478e9ac54e 100644 --- a/src/bin/network/ifconfig/ifconfig.cpp +++ b/src/bin/network/ifconfig/ifconfig.cpp @@ -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. * * Authors: @@ -563,30 +563,6 @@ configure_interface(int socket, const char* name, char* const* args, } 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) { 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) { memcpy(&request.ifr_broadaddr, &broadcast, broadcast.sa_len); diff --git a/src/servers/net/NetServer.cpp b/src/servers/net/NetServer.cpp index 2df6e1fc52..71df7323b4 100644 --- a/src/servers/net/NetServer.cpp +++ b/src/servers/net/NetServer.cpp @@ -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. * * Authors: @@ -631,30 +631,6 @@ NetServer::_ConfigureInterface(int socket, BMessage& interface, bool fromMessage } 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) { 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) { memcpy(&request.ifr_broadaddr, &broadcast, broadcast.sa_len);