Revert "BNetworkInterfaceAddress: missing initialization"
This reverts commit fbc43a7279.
This commit is contained in:
@@ -6,10 +6,7 @@
|
|||||||
|
|
||||||
#include <NetworkInterface.h>
|
#include <NetworkInterface.h>
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <net/if_dl.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/sockio.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_index = address.Index();
|
||||||
request.ifra_flags = address.Flags();
|
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(),
|
memcpy(&request.ifra_addr, &address.Address(),
|
||||||
address.Address().sa_len);
|
address.Address().sa_len);
|
||||||
memcpy(&request.ifra_mask, &address.Mask(),
|
memcpy(&request.ifra_mask, &address.Mask(),
|
||||||
@@ -88,14 +81,6 @@ BNetworkInterfaceAddress::BNetworkInterfaceAddress()
|
|||||||
fIndex(-1),
|
fIndex(-1),
|
||||||
fFlags(0)
|
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
|
void
|
||||||
BNetworkInterfaceAddress::SetAddress(const sockaddr& address)
|
BNetworkInterfaceAddress::SetAddress(const sockaddr& address)
|
||||||
{
|
{
|
||||||
size_t length = min_c(sizeof(sockaddr_storage), address.sa_len);
|
memcpy(&fAddress, &address, 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BNetworkInterfaceAddress::SetMask(const sockaddr& mask)
|
BNetworkInterfaceAddress::SetMask(const sockaddr& mask)
|
||||||
{
|
{
|
||||||
size_t length = min_c(sizeof(sockaddr_storage), mask.sa_len);
|
memcpy(&fMask, &mask, 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BNetworkInterfaceAddress::SetBroadcast(const sockaddr& broadcast)
|
BNetworkInterfaceAddress::SetBroadcast(const sockaddr& broadcast)
|
||||||
{
|
{
|
||||||
size_t length = min_c(sizeof(sockaddr_storage), broadcast.sa_len);
|
memcpy(&fBroadcast, &broadcast, 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BNetworkInterfaceAddress::SetDestination(const sockaddr& destination)
|
BNetworkInterfaceAddress::SetDestination(const sockaddr& destination)
|
||||||
{
|
{
|
||||||
SetBroadcast(destination);
|
memcpy(&fBroadcast, &destination, destination.sa_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user