summaryrefslogtreecommitdiff
path: root/net/vpnc/patches/patch-bd
blob: 91a5af47874ae8fea396a7bf9abe6cb40101239a (plain)
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