svn commit: r459634 - head/net/boinc-client/files

Larry Rosenman ler at FreeBSD.org
Mon Jan 22 01:54:26 UTC 2018


Author: ler
Date: Mon Jan 22 01:54:25 2018
New Revision: 459634
URL: https://svnweb.freebsd.org/changeset/ports/459634

Log:
  net/boinc-client: actually get the real MAC address

Modified:
  head/net/boinc-client/files/patch-client_mac__address.cpp

Modified: head/net/boinc-client/files/patch-client_mac__address.cpp
==============================================================================
--- head/net/boinc-client/files/patch-client_mac__address.cpp	Mon Jan 22 01:11:55 2018	(r459633)
+++ head/net/boinc-client/files/patch-client_mac__address.cpp	Mon Jan 22 01:54:25 2018	(r459634)
@@ -1,12 +1,46 @@
---- client/mac_address.cpp.orig	2018-01-21 22:41:16 UTC
+--- client/mac_address.cpp.orig	2018-01-14 10:07:52 UTC
 +++ client/mac_address.cpp
-@@ -262,6 +262,9 @@ int get_mac_address(char* address) {
+@@ -67,6 +67,10 @@
+ #ifdef HAVE_NETINET_ETHER_H
+ #include <netinet/ether.h>
+ #endif
++#if defined(__FreeBSD__)
++#include <ifaddrs.h>
++#include <net/if_dl.h>
++#endif 
+ 
+ #include "mac_address.h"
+ 
+@@ -262,10 +266,32 @@ int get_mac_address(char* address) {
              return -1;
          }
          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
-+	/* Need to teach this how on FreeBSD, but for now don't crash */
 +	return -1;
  #endif
          strcpy(address, ether_ntoa(hw_addr));
++#if	defined(__FreeBSD__)
++	freeifaddrs(ifap);
++#endif
  #ifdef HAVE_STRUCT_LIFCONF
+         if (strstr(item->lifr_name, "eth")) break;
++#elif  defined(__FreeBSD__)
++	break;
+ #else
+         if (strstr(item->ifr_name, "eth")) break;
+ #endif


More information about the svn-ports-all mailing list