svn commit: r267715 - in head: contrib/wpa/src/utils usr.sbin/wpa/hostapd usr.sbin/wpa/hostapd_cli usr.sbin/wpa/wpa_cli usr.sbin/wpa/wpa_passphrase usr.sbin/wpa/wpa_supplicant

John-Mark Gurney jmg at FreeBSD.org
Sun Jun 22 10:00:35 UTC 2014


Author: jmg
Date: Sun Jun 22 10:00:33 2014
New Revision: 267715
URL: http://svnweb.freebsd.org/changeset/base/267715

Log:
  convert to using pidfile...  This prevents multiple wpa_supplicants
  running at the same time causing problems w/ wifi not working..
  
  the patch will be submitted upstream...  The next step if someone wants
  to push it upstream is to break os_unix.c up so that all these other
  utilities don't need libutil..
  
  Reviewed by:	rpaulo

Modified:
  head/contrib/wpa/src/utils/os_unix.c
  head/usr.sbin/wpa/hostapd/Makefile
  head/usr.sbin/wpa/hostapd_cli/Makefile
  head/usr.sbin/wpa/wpa_cli/Makefile
  head/usr.sbin/wpa/wpa_passphrase/Makefile
  head/usr.sbin/wpa/wpa_supplicant/Makefile

Modified: head/contrib/wpa/src/utils/os_unix.c
==============================================================================
--- head/contrib/wpa/src/utils/os_unix.c	Sun Jun 22 08:32:31 2014	(r267714)
+++ head/contrib/wpa/src/utils/os_unix.c	Sun Jun 22 10:00:33 2014	(r267715)
@@ -153,16 +153,40 @@ static int os_daemon(int nochdir, int no
 #endif /* __APPLE__ */
 
 
+#ifdef __FreeBSD__
+#include <err.h>
+#include <libutil.h>
+#include <stdint.h>
+#endif /* __FreeBSD__ */
+
 int os_daemonize(const char *pid_file)
 {
 #if defined(__uClinux__) || defined(__sun__)
 	return -1;
 #else /* defined(__uClinux__) || defined(__sun__) */
+#ifdef __FreeBSD__
+	pid_t otherpid;
+	struct pidfh *pfh;
+
+	pfh = pidfile_open(pid_file, 0600, &otherpid);
+	if (pfh == NULL) {
+		if (errno == EEXIST) {
+			errx(1, "Daemon already running, pid: %jd.",
+			    (intmax_t)otherpid);
+		}
+		warn("Cannot open or create pidfile.");
+	}
+#endif /* __FreeBSD__ */
+
 	if (os_daemon(0, 0)) {
 		perror("daemon");
+#ifdef __FreeBSD__
+		pidfile_remove(pfh);
+#endif /* __FreeBSD__ */
 		return -1;
 	}
 
+#ifndef __FreeBSD__
 	if (pid_file) {
 		FILE *f = fopen(pid_file, "w");
 		if (f) {
@@ -170,6 +194,9 @@ int os_daemonize(const char *pid_file)
 			fclose(f);
 		}
 	}
+#else /* __FreeBSD__ */
+	pidfile_write(pfh);
+#endif /* __FreeBSD__ */
 
 	return -0;
 #endif /* defined(__uClinux__) || defined(__sun__) */

Modified: head/usr.sbin/wpa/hostapd/Makefile
==============================================================================
--- head/usr.sbin/wpa/hostapd/Makefile	Sun Jun 22 08:32:31 2014	(r267714)
+++ head/usr.sbin/wpa/hostapd/Makefile	Sun Jun 22 10:00:33 2014	(r267715)
@@ -46,8 +46,8 @@ CFLAGS+=-DCONFIG_DRIVER_BSD \
 CFLAGS+= -DCONFIG_IPV6
 .endif
 #CFLAGS+= -g
-DPADD+=	${LIBPCAP}
-LDADD+=	-lpcap
+DPADD+=	${LIBPCAP} ${LIBUTIL}
+LDADD+=	-lpcap -lutil
 
 # User customizations for wpa_supplicant/hostapd build environment
 CFLAGS+=${HOSTAPD_CFLAGS}

Modified: head/usr.sbin/wpa/hostapd_cli/Makefile
==============================================================================
--- head/usr.sbin/wpa/hostapd_cli/Makefile	Sun Jun 22 08:32:31 2014	(r267714)
+++ head/usr.sbin/wpa/hostapd_cli/Makefile	Sun Jun 22 10:00:33 2014	(r267715)
@@ -10,6 +10,9 @@ SRCS=	common.c edit.c eloop.c hostapd_cl
 CFLAGS+= -DCONFIG_CTRL_IFACE
 CFLAGS+= -DCONFIG_CTRL_IFACE_UNIX
 
+DPADD+=	${LIBUTIL}
+LDADD+=	-lutil
+
 MAN=	hostapd_cli.8
 
 .include <bsd.prog.mk>

Modified: head/usr.sbin/wpa/wpa_cli/Makefile
==============================================================================
--- head/usr.sbin/wpa/wpa_cli/Makefile	Sun Jun 22 08:32:31 2014	(r267714)
+++ head/usr.sbin/wpa/wpa_cli/Makefile	Sun Jun 22 10:00:33 2014	(r267715)
@@ -15,7 +15,7 @@ CFLAGS+= -DCONFIG_CTRL_IFACE_UNIX
 CFLAGS+= -D_DIRENT_HAVE_D_TYPE
 
 CFLAGS+= -DCONFIG_READLINE -I${DESTDIR}/${INCLUDEDIR}/edit
-LDADD+= -ledit -ltermcap
-DPADD+= ${LIBEDIT} ${LIBTERMCAP}
+LDADD+= -ledit -ltermcap -lutil
+DPADD+= ${LIBEDIT} ${LIBTERMCAP} ${LIBUTIL}
 
 .include <bsd.prog.mk>

Modified: head/usr.sbin/wpa/wpa_passphrase/Makefile
==============================================================================
--- head/usr.sbin/wpa/wpa_passphrase/Makefile	Sun Jun 22 08:32:31 2014	(r267714)
+++ head/usr.sbin/wpa/wpa_passphrase/Makefile	Sun Jun 22 10:00:33 2014	(r267715)
@@ -11,6 +11,9 @@ SRCS=	common.c md5-internal.c md5.c os_u
 CFLAGS+= -DINTERNAL_SHA1
 CFLAGS+= -DINTERNAL_MD5
 
+DPADD+=	${LIBUTIL}
+LDADD+=	-lutil
+
 MAN=	wpa_passphrase.8
 
 .include <bsd.prog.mk>

Modified: head/usr.sbin/wpa/wpa_supplicant/Makefile
==============================================================================
--- head/usr.sbin/wpa/wpa_supplicant/Makefile	Sun Jun 22 08:32:31 2014	(r267714)
+++ head/usr.sbin/wpa/wpa_supplicant/Makefile	Sun Jun 22 10:00:33 2014	(r267715)
@@ -49,8 +49,8 @@ CFLAGS+=-DCONFIG_BACKEND_FILE \
 	-DCONFIG_GAS \
 	-DPKCS12_FUNCS
 #CFLAGS+= -g
-DPADD+=	${LIBPCAP}
-LDADD+=	-lpcap
+DPADD+=	${LIBPCAP} ${LIBUTIL}
+LDADD+=	-lpcap -lutil
 
 # User customizations to the wpa_supplicant build environment
 CFLAGS+=${WPA_SUPPLICANT_CFLAGS}


More information about the svn-src-all mailing list