NetIf-darwin.cpp revision 8e9951d7663b4c2e1ea75c5ce62df9f2910954fa
/* $Id$ */
/** @file
* Main - NetIfList, Darwin implementation.
*/
/*
* Copyright (C) 2008 Sun Microsystems, Inc.
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
* Clara, CA 95054 USA or visit http://www.sun.com if you need
* additional information or have any questions.
*/
/*******************************************************************************
* Header Files *
*******************************************************************************/
/*
* Deal with conflicts first.
* PVM - BSD mess, that FreeBSD has correct a long time ago.
*/
#define LOG_GROUP LOG_GROUP_MAIN
#include <string.h>
#include <net/if_types.h>
#include <ifaddrs.h>
#include <errno.h>
#include <unistd.h>
#include <list>
#include "HostNetworkInterfaceImpl.h"
#include "netif.h"
#include "iokit.h"
#include "Logging.h"
#if 0
{
if (sock < 0)
{
return NULL;
}
if (rc)
{
return VERR_INTERNAL_ERROR;
}
while (pEtherNICs)
{
{
}
else
{
continue;
{
case AF_INET:
break;
break;
case AF_INET6:
break;
sizeof(pNew->IPv6Address));
sizeof(pNew->IPv6NetMask));
break;
}
}
/* next, free current */
void *pvFree = pEtherNICs;
}
return VINF_SUCCESS;
}
#else
#define ROUNDUP(a) \
((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
{
if (!(iAddrMask & (1 << i)))
continue;
}
{
case AF_INET:
{
}
break;
case AF_INET6:
{
sizeof(pInfo->IPv6Address));
sizeof(pInfo->IPv6NetMask));
}
break;
default:
break;
}
}
{
int rc = VINF_SUCCESS;
int aiMib[6];
aiMib[2] = 0;
aiMib[5] = 0;
{
return RTErrConvertFromErrno(errno);
}
return VERR_NO_MEMORY;
{
return RTErrConvertFromErrno(errno);
}
if (sock < 0)
{
return RTErrConvertFromErrno(errno);
}
{
{
Log(("NetIfList: Got message %u while expecting %u.\n",
break;
}
{
break;
}
if (!pNew)
{
rc = VERR_NO_MEMORY;
break;
}
/*
* If we found the adapter in the list returned by
* DarwinGetEthernetControllers() copy the name and UUID from there.
*/
if (pNIC)
{
}
else
{
/* Generate UUID from name and MAC address. */
RTUuidClear(&uuid);
}
{
break;
extractAddresses(pIfAddrMsg->ifam_addrs, (char *)(pIfAddrMsg + 1), pIfAddrMsg->ifam_msglen + (char *)pIfAddrMsg, pNew);
}
{
{
}
else
else
}
}
{
}
return rc;
}
{
int rc = VINF_SUCCESS;
int aiMib[6];
aiMib[2] = 0;
aiMib[5] = 0;
{
return RTErrConvertFromErrno(errno);
}
return VERR_NO_MEMORY;
{
return RTErrConvertFromErrno(errno);
}
if (sock < 0)
{
return RTErrConvertFromErrno(errno);
}
{
{
Log(("NetIfList: Got message %u while expecting %u.\n",
break;
}
{
break;
if (!fSkip)
extractAddresses(pIfAddrMsg->ifam_addrs, (char *)(pIfAddrMsg + 1), pIfAddrMsg->ifam_msglen + (char *)pIfAddrMsg, pInfo);
}
{
/* Generate UUID from name and MAC address. */
RTUuidClear(&uuid);
{
}
else
return VINF_SUCCESS;
}
}
return rc;
}
#endif