diff options
author | Sören Tempel <soeren+git@soeren-tempel.net> | 2015-09-05 16:05:02 +0200 |
---|---|---|
committer | Francesco Colista <fcolista@alpinelinux.org> | 2015-09-07 12:07:30 +0000 |
commit | cc8f61f6330f49f1e2522e6fbed88e84e47190c3 (patch) | |
tree | 4947c1f8740852311e0158a3c8a61237caac7d4f /main/wpa_supplicant | |
parent | 226fe478c20bcc6958b000864775186f115865c0 (diff) | |
download | aports-cc8f61f6330f49f1e2522e6fbed88e84e47190c3.tar.bz2 aports-cc8f61f6330f49f1e2522e6fbed88e84e47190c3.tar.xz |
main/wpa_supplicant: add wpa_cli(8) action script
This action script manages the associated network interfaces. It start
them when wpa_supplicant successfully established a connection and it
stops them when wpa_supplicant disconnected from an access point.
When traveling between different location / networks / access points
with my laptop I noticed that udhcpc didn't automatically require a new
lease and had to be restarted each time I was associated with a new
access point. I had to manually invoke `ifdown <interface> && ifup
<interface>` each time I associated with a new access point.
Searching for solutions I looked at gentoo's netifrc[1] and noticed that
they are using a wpa_cli(8) action script[2] to solve this. I read the
gentoo action script[3] and decided to write a new action script for
alpine loosely based on gentoo's version. This is the result.
Maybe there is a better way to solve this problem if so I would to hear
about it. Otherwise I believe that this is the best approach to solve
it. It should also make it unnecessary to add the wpa_supplicant service
to the boot level since it doesn't need to be started before the
networking service anymore.
The action script has to be started manually using `wpa_cli -a
/etc/wpa_supplicant/wpa_cli.sh` currently. I couldn't decide how to
start it automatically. Gentoo starts it as a part of netifrc using
start-stop-daemon[4]. Maybe we should start it with the same options
from the wpa_supplicant OpenRC service?
[1]: https://gitweb.gentoo.org/proj/netifrc.git
[2]: https://gitweb.gentoo.org/proj/netifrc.git/tree/net/wpa_supplicant.sh#n54
[3]: https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/net-wireless/wpa_supplicant/files/wpa_cli.sh
[4]: https://gitweb.gentoo.org/proj/netifrc.git/tree/net/wpa_supplicant.sh#n164
Diffstat (limited to 'main/wpa_supplicant')
-rw-r--r-- | main/wpa_supplicant/APKBUILD | 19 | ||||
-rw-r--r-- | main/wpa_supplicant/wpa_cli.sh | 33 |
2 files changed, 47 insertions, 5 deletions
diff --git a/main/wpa_supplicant/APKBUILD b/main/wpa_supplicant/APKBUILD index d9d04b127c..2e62b70061 100644 --- a/main/wpa_supplicant/APKBUILD +++ b/main/wpa_supplicant/APKBUILD @@ -1,7 +1,8 @@ +# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=wpa_supplicant pkgver=2.4 -pkgrel=2 +pkgrel=3 pkgdesc="A utility providing key negotiation for WPA wireless networks" url="http://hostap.epitest.fi/wpa_supplicant" arch="all" @@ -21,6 +22,8 @@ source="http://hostap.epitest.fi/releases/$pkgname-$pkgver.tar.gz wpa_supplicant.initd wpa_supplicant.confd + + wpa_cli.sh " _builddir="$srcdir"/$pkgname-$pkgver @@ -125,7 +128,10 @@ package() { cd "$_builddir"/wpa_supplicant make DESTDIR="$pkgdir" LIBDIR=/lib BINDIR=/sbin install || return 1 install -Dm644 wpa_supplicant.conf \ - "$pkgdir"/etc/wpa_supplicant/wpa_supplicant.conf + "$pkgdir"/etc/wpa_supplicant/wpa_supplicant.conf || return 1 + install -Dm755 "$srcdir"/wpa_cli.sh \ + "$pkgdir"/etc/wpa_supplicant/wpa_cli.sh || return 1 + install -Dm644 doc/docbook/wpa_supplicant.conf.5 \ "$pkgdir"/usr/share/man/man5/wpa_supplicant.conf.5 || return 1 for i in wpa_background wpa_cli wpa_passphrase wpa_supplicant; do @@ -170,7 +176,8 @@ fa2aed3cf49f7e6c7b17bf9db9a001f5 0003-EAP-pwd-peer-Fix-Total-Length-parsing-for de0fca4d74a1883d15ef5754f13a5226 0004-EAP-pwd-server-Fix-Total-Length-parsing-for-fragment.patch 9d854969af23b207f9f3dff38ef78770 0005-EAP-pwd-peer-Fix-asymmetric-fragmentation-behavior.patch a8da41f58b8b4779d666ab7bd8233c18 wpa_supplicant.initd -bc117427f2c538439f3f1481a028ee06 wpa_supplicant.confd" +bc117427f2c538439f3f1481a028ee06 wpa_supplicant.confd +cbdff360cf3f0f31d33027deb868e5f2 wpa_cli.sh" sha256sums="058dc832c096139a059e6df814080f50251a8d313c21b13364c54a1e70109122 wpa_supplicant-2.4.tar.gz a3abf75801f02199ff48c316a7b6598860e6ca20ce2fe79b0bec873905e5c8a4 CVE-2015-1863.patch eb63d845fdc38b6310c527ad1705b6fe3b74f90e263188da2aca97468cc55142 CVE-2015-4141.patch @@ -181,7 +188,8 @@ a204bc37f52e5346780a306c01706689eb46263dedcdcb1eb2f4c0b291a0db93 0001-EAP-pwd-p c28ca6303a562809dfd1812f9b918808b3b0f0c52cc43070fd1777e1cfc88f18 0004-EAP-pwd-server-Fix-Total-Length-parsing-for-fragment.patch 04ef66fbd5b2167274cd7123d7f7252963b9a9c1ec2f5edf6558a6ad92d47689 0005-EAP-pwd-peer-Fix-asymmetric-fragmentation-behavior.patch 5d6ee43b7752d15013fb31298087e9d82caa2568064e59e6ed6230d7de403867 wpa_supplicant.initd -61ec59007f66ac5bacc0aa095d1f2ccbc977a687038e161a463d1727223d5a90 wpa_supplicant.confd" +61ec59007f66ac5bacc0aa095d1f2ccbc977a687038e161a463d1727223d5a90 wpa_supplicant.confd +34c06cabfb9c7cf73fda64836971898424b4fcf2569bf21af628239093e8417e wpa_cli.sh" sha512sums="03d8199325b3910f77013ddb7edd803ab4444542230484e1cb465dc3df9372b39ee3307d823ce88730e8f5a5231ef3183954c54cf07297b70432f526e45aac2b wpa_supplicant-2.4.tar.gz 61f90d06bd42fb7ea17ba147db861303f5b1fdce2cda35492cec578214da5ea5d654a1df99dee4d4a0c07ef3e8b3bfb65ab4b98eff21c2013adf536766136ce1 CVE-2015-1863.patch 4633a96a91e151407e4c62b74b4e78d37e4fba586278c6ae4340ce149bee0c644a4d62675256839c3130374a4dc7531beaeed8282946e7dcd3faf1ed74bf99be CVE-2015-4141.patch @@ -192,4 +200,5 @@ dc561d90f3f329ebb201abbb53eea161603fb2abba6b2fc5c79298d97c84f2d65d401608cd7bb2fb b752f91c3d6dcf0784d9cb20a0c7f8de6c837c38ff62cf77b136d9b818890b13f55eeed1d6097f244181b480be953e1bdfb5651116dc5d62a2d02c018e19042a 0004-EAP-pwd-server-Fix-Total-Length-parsing-for-fragment.patch 07a21f0cc7d00e17bed8ef5ced36159020a410a4606aa0ca24e47223835ab0cc5fbeed3075c4f17d2ce1aee437eedf9fea8f4b95252b2fa255d54a195637cb6f 0005-EAP-pwd-peer-Fix-asymmetric-fragmentation-behavior.patch cfe9de2813d5ec778c7f5cb404c23aad371dee9922dea172358a8ea95ab4e5dd01a3b9fc1a452dd3c3c9a2f02e8b12ffe162b69767f95faa18480fb79499301b wpa_supplicant.initd -29103161ec2b9631fca9e8d9a97fafd60ffac3fe78cf613b834395ddcaf8be1e253c22e060d7d9f9b974b2d7ce794caa932a2125e29f6494b75bce475f7b30e1 wpa_supplicant.confd" +29103161ec2b9631fca9e8d9a97fafd60ffac3fe78cf613b834395ddcaf8be1e253c22e060d7d9f9b974b2d7ce794caa932a2125e29f6494b75bce475f7b30e1 wpa_supplicant.confd +fa2688288c8f7882745e131f90f5ed6692c38c4fd9d0cd4082f3661bbf6fc09627c3d5005a9f4d00ac900753a8a28931079e5e17e2238bff33e1beff48774cfd wpa_cli.sh" diff --git a/main/wpa_supplicant/wpa_cli.sh b/main/wpa_supplicant/wpa_cli.sh new file mode 100644 index 0000000000..3c7325c0e6 --- /dev/null +++ b/main/wpa_supplicant/wpa_cli.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Distributed under the terms of the BSD License. +# Copyright (c) 2015 Sören Tempel <soeren+alpine@soeren-tempel.net> + +IFUP="/sbin/ifup" +IFDOWN="/sbin/ifdown" + +if [ -z "${1}" -o -z "${2}" ]; then + logger -t wpa_cli "this script should be called from wpa_cli(8)" + exit 1 +elif ! [ -x "${IFUP}" -a -x "${IFDOWN}" ]; then + logger -t wpa_cli "/sbin/ifup or /sbin/ifdown doesn't exist" + exit 1 +fi + +IFNAME="${1}" +ACTION="${2}" + +EXEC="" +case "${ACTION}" in + CONNECTED) + EXEC="${IFUP}" + ;; + DISCONNECTED) + EXEC="${IFDOWN}" + ;; + *) + logger -t wpa_cli "unknown action '${ACTION}'" + exit 1 +esac + +logger -t wpa_cli "interface ${IFNAME} ${ACTION}" +${EXEC} "${IFNAME}" || logger -t wpa_cli "executing '${EXEC}' failed" |