mirror of https://github.com/BOINC/boinc.git
client: fix BSD build (from Larry Rosenman)
This commit is contained in:
parent
7c8386b100
commit
ba01adb354
|
@ -164,7 +164,9 @@ extern "C" {
|
||||||
// The following is intended to be true both on Linux
|
// The following is intended to be true both on Linux
|
||||||
// and Debian GNU/kFreeBSD (see trac #521)
|
// and Debian GNU/kFreeBSD (see trac #521)
|
||||||
//
|
//
|
||||||
#define LINUX_LIKE_SYSTEM (defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && !defined(__HAIKU__)
|
#if (defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && !defined(__HAIKU__)
|
||||||
|
#define LINUX_LIKE_SYSTEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
// Returns the offset between LOCAL STANDARD TIME and UTC.
|
// Returns the offset between LOCAL STANDARD TIME and UTC.
|
||||||
// LOCAL_STANDARD_TIME = UTC_TIME + get_timezone().
|
// LOCAL_STANDARD_TIME = UTC_TIME + get_timezone().
|
||||||
|
|
|
@ -67,6 +67,10 @@
|
||||||
#ifdef HAVE_NETINET_ETHER_H
|
#ifdef HAVE_NETINET_ETHER_H
|
||||||
#include <netinet/ether.h>
|
#include <netinet/ether.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
#include <ifaddrs.h>
|
||||||
|
#include <net/if_dl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "mac_address.h"
|
#include "mac_address.h"
|
||||||
|
|
||||||
|
@ -262,10 +266,32 @@ int get_mac_address(char* address) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
hw_addr = (struct ether_addr *)&(item->lifr_lifru.lifru_enaddr);
|
hw_addr = (struct ether_addr *)&(item->lifr_lifru.lifru_enaddr);
|
||||||
|
#elif defined(__FreeBSD__)
|
||||||
|
struct ifaddrs *ifap, *ifaptr;
|
||||||
|
unsigned char *ptr;
|
||||||
|
|
||||||
|
if (getifaddrs(&ifap) == 0) {
|
||||||
|
for(ifaptr = ifap; ifaptr != NULL; ifaptr = (ifaptr)->ifa_next) {
|
||||||
|
if (!strcmp((ifaptr)->ifa_name, item->ifr_name) && (((ifaptr)->ifa_addr)->sa_family == AF_LINK)) {
|
||||||
|
ptr = (unsigned char *)LLADDR((struct sockaddr_dl *)(ifaptr)->ifa_addr);
|
||||||
|
hw_addr = (struct ether_addr *)ptr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return -1;
|
||||||
#endif
|
#endif
|
||||||
strcpy(address, ether_ntoa(hw_addr));
|
strcpy(address, ether_ntoa(hw_addr));
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
freeifaddrs(ifap);
|
||||||
|
#endif
|
||||||
#ifdef HAVE_STRUCT_LIFCONF
|
#ifdef HAVE_STRUCT_LIFCONF
|
||||||
if (strstr(item->lifr_name, "eth")) break;
|
if (strstr(item->lifr_name, "eth")) break;
|
||||||
|
#elif defined(__FreeBSD__)
|
||||||
|
break;
|
||||||
#else
|
#else
|
||||||
if (strstr(item->ifr_name, "eth")) break;
|
if (strstr(item->ifr_name, "eth")) break;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue