1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
$NetBSD: patch-bd,v 1.2 2011/05/18 12:28:50 is Exp $
--- sysdep.c.orig 2008-11-19 20:36:12.000000000 +0000
+++ sysdep.c
@@ -666,7 +666,7 @@ int tun_get_hwaddr(int fd, char *dev, ui
}
return 0;
-#elif defined(SIOCGIFHWADDR)
+#elif defined(SIOCGIFHWADDR) || defined(SIOCGENADDR)
struct ifreq ifr;
/* Use a new socket fd! */
@@ -677,11 +677,20 @@ int tun_get_hwaddr(int fd, char *dev, ui
memset(&ifr, 0, sizeof(struct ifreq));
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
+#if defined(SIOCGIFHWADDR) && !defined(__sun)
if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) {
return -1;
}
memcpy(hwaddr, &ifr.ifr_hwaddr.sa_data, ETH_ALEN);
+#endif
+#if defined(SIOCGENADDR)
+ if (ioctl(fd, SIOCGENADDR, &ifr) < 0) {
+ return -1;
+ }
+
+ memcpy(hwaddr, &ifr.ifr_enaddr, ETH_ALEN);
+#endif
return 0;
#else
@@ -751,7 +760,7 @@ void error(int status, int errornum, con
#endif
#ifndef HAVE_GETLINE
-int getline(char **line, size_t * length, FILE * stream)
+ssize_t getline(char **line, size_t * length, FILE * stream)
{
size_t len;
#ifdef HAVE_FGETLN
|