Revert "BNetworkInterfaceAddress: missing initialization"

This reverts commit fbc43a7279.
This commit is contained in:
Axel Dörfler
2015-02-05 11:07:50 +01:00
parent 3d9caafc62
commit a08f5ecbe3
+4 -67
View File
@@ -6,10 +6,7 @@
#include <NetworkInterface.h>
#include <assert.h>
#include <errno.h>
#include <net/if_dl.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/sockio.h>
@@ -51,10 +48,6 @@ do_ifaliasreq(const char* name, int32 option, BNetworkInterfaceAddress& address,
request.ifra_index = address.Index();
request.ifra_flags = address.Flags();
assert(address.Address().sa_len <= sizeof(sockaddr_storage));
assert(address.Mask().sa_len <= sizeof(sockaddr_storage));
assert(address.Broadcast().sa_len <= sizeof(sockaddr_storage));
memcpy(&request.ifra_addr, &address.Address(),
address.Address().sa_len);
memcpy(&request.ifra_mask, &address.Mask(),
@@ -88,14 +81,6 @@ BNetworkInterfaceAddress::BNetworkInterfaceAddress()
fIndex(-1),
fFlags(0)
{
fAddress.ss_family = AF_UNSPEC;
fAddress.ss_len = 2;
fMask.ss_family = AF_UNSPEC;
fMask.ss_len = 2;
fBroadcast.ss_family = AF_UNSPEC;
fBroadcast.ss_len = 2;
}
@@ -115,76 +100,28 @@ BNetworkInterfaceAddress::SetTo(const char* name, int32 index)
void
BNetworkInterfaceAddress::SetAddress(const sockaddr& address)
{
size_t length = min_c(sizeof(sockaddr_storage), address.sa_len);
switch (address.sa_family) {
case AF_INET:
length = sizeof(sockaddr_in);
break;
case AF_INET6:
length = sizeof(sockaddr_in6);
break;
case AF_LINK:
{
sockaddr_dl& link = (sockaddr_dl&)address;
length = sizeof(sockaddr_dl) - sizeof(link.sdl_data) + link.sdl_alen
+ link.sdl_nlen + link.sdl_slen;
break;
}
}
memcpy(&fAddress, &address, length);
memcpy(&fAddress, &address, address.sa_len);
}
void
BNetworkInterfaceAddress::SetMask(const sockaddr& mask)
{
size_t length = min_c(sizeof(sockaddr_storage), mask.sa_len);
switch (mask.sa_family) {
case AF_INET:
length = sizeof(sockaddr_in);
break;
case AF_INET6:
length = sizeof(sockaddr_in6);
break;
case AF_LINK:
{
sockaddr_dl& link = (sockaddr_dl&)mask;
length = sizeof(sockaddr_dl) - sizeof(link.sdl_data) + link.sdl_alen
+ link.sdl_nlen + link.sdl_slen;
break;
}
}
memcpy(&fMask, &mask, length);
memcpy(&fMask, &mask, mask.sa_len);
}
void
BNetworkInterfaceAddress::SetBroadcast(const sockaddr& broadcast)
{
size_t length = min_c(sizeof(sockaddr_storage), broadcast.sa_len);
switch (broadcast.sa_family) {
case AF_INET:
length = sizeof(sockaddr_in);
break;
case AF_INET6:
length = sizeof(sockaddr_in6);
break;
case AF_LINK:
{
sockaddr_dl& link = (sockaddr_dl&)broadcast;
length = sizeof(sockaddr_dl) - sizeof(link.sdl_data) + link.sdl_alen
+ link.sdl_nlen + link.sdl_slen;
break;
}
}
memcpy(&fBroadcast, &broadcast, length);
memcpy(&fBroadcast, &broadcast, broadcast.sa_len);
}
void
BNetworkInterfaceAddress::SetDestination(const sockaddr& destination)
{
SetBroadcast(destination);
memcpy(&fBroadcast, &destination, destination.sa_len);
}