--- /usr/portage/net-wireless/hostapd/hostapd-2.0.ebuild 2013-04-29 21:01:25.000000000 +0200 +++ hostapd-2.0.ebuild 2013-06-12 19:22:00.000000000 +0200 @@ -4,7 +4,7 @@ EAPI="4" -inherit toolchain-funcs eutils +inherit toolchain-funcs eutils savedconfig flag-o-matic DESCRIPTION="IEEE 802.11 wireless LAN Host AP daemon" HOMEPAGE="http://hostap.epitest.fi" @@ -35,91 +35,96 @@ "${S}/hostapd.conf" || die } +hostapd_config_option() { + local key="$1" ; shift + local val="$@" + + if ! grep -qE "^(#| )*CONFIG_${key}[ =]" "${CONFIG}" ; then + eqawarn "CONFIG_${key} is missing in defconfig" + echo >> "${CONFIG}" + echo "# .config imported from ${S}/defconfig is missing CONFIG_${key}" >> "${CONFIG}" + echo "# CONFIG_${key} is not set" >> "${CONFIG}" + fi + + if [[ ${val} == "n" ]] ; then + sed -i -re "s:^(#| )*CONFIG_${key}[ =].*:# CONFIG_${key} is not set:" "${CONFIG}" + else + sed -i -re "s:^(#| )*CONFIG_${key}[ =].*:CONFIG_${key}=${val}:" "${CONFIG}" + fi + + einfo $(grep -E "^(#| )*CONFIG_${key}[ =]" "${CONFIG}") +} + src_configure() { - local CONFIG="${S}/.config" + tc-export CC - # toolchain setup - echo "CC = $(tc-getCC)" > ${CONFIG} + #append-libs -L/usr/lib + # Add include path for madwifi-driver headers + use madwifi && append-cflags -I/usr/include/madwifi - # EAP authentication methods - echo "CONFIG_EAP=y" >> ${CONFIG} - echo "CONFIG_EAP_MD5=y" >> ${CONFIG} + CONFIG="${S}/.config" + restore_config "${CONFIG}" - if use ssl; then - # SSL authentication methods - echo "CONFIG_EAP_TLS=y" >> ${CONFIG} - echo "CONFIG_EAP_TTLS=y" >> ${CONFIG} - echo "CONFIG_EAP_MSCHAPV2=y" >> ${CONFIG} - echo "CONFIG_EAP_PEAP=y" >> ${CONFIG} - fi + [[ -f "${CONFIG}" ]] && return 0 - if use wps; then - # Enable Wi-Fi Protected Setup - echo "CONFIG_WPS=y" >> ${CONFIG} - echo "CONFIG_WPS2=y" >> ${CONFIG} - echo "CONFIG_WPS_UPNP=y" >> ${CONFIG} - einfo "Enabling Wi-Fi Protected Setup support" - fi + einfo "Generating configuration based on defconfig" + cp "${S}/defconfig" "${CONFIG}" - echo "CONFIG_EAP_GTC=y" >> ${CONFIG} - echo "CONFIG_EAP_SIM=y" >> ${CONFIG} - echo "CONFIG_EAP_AKA=y" >> ${CONFIG} - echo "CONFIG_EAP_PAX=y" >> ${CONFIG} - echo "CONFIG_EAP_PSK=y" >> ${CONFIG} - echo "CONFIG_EAP_SAKE=y" >> ${CONFIG} - echo "CONFIG_EAP_GPSK=y" >> ${CONFIG} - echo "CONFIG_EAP_GPSK_SHA256=y" >> ${CONFIG} + # EAP authentication methods + hostapd_config_option EAP y + hostapd_config_option EAP_MD5 y - einfo "Enabling drivers: " + # SSL authentication methods + hostapd_config_option EAP_TLS $(usex ssl y n) + hostapd_config_option EAP_TTLS $(usex ssl y n) + hostapd_config_option EAP_MSCHAPV2 $(usex ssl y n) + hostapd_config_option EAP_PEAP $(usex ssl y n) + + # Enable Wi-Fi Protected Setup + hostapd_config_option WPS $(usex wps y n) + hostapd_config_option WPS2 $(usex wps y n) + hostapd_config_option WPS_UPNP $(usex wps y n) + + hostapd_config_option EAP_GTC y + hostapd_config_option EAP_SIM y + hostapd_config_option EAP_AKA y + hostapd_config_option EAP_PAX y + hostapd_config_option EAP_PSK y + hostapd_config_option EAP_SAKE y + hostapd_config_option EAP_GPSK y + hostapd_config_option EAP_GPSK_SHA256 y # drivers - echo "CONFIG_DRIVER_HOSTAP=y" >> ${CONFIG} - einfo " HostAP driver enabled" - echo "CONFIG_DRIVER_WIRED=y" >> ${CONFIG} - einfo " Wired driver enabled" - echo "CONFIG_DRIVER_PRISM54=y" >> ${CONFIG} - einfo " Prism54 driver enabled" - echo "CONFIG_DRIVER_NONE=y" >> ${CONFIG} - einfo " None driver enabled" - - if use madwifi; then - # Add include path for madwifi-driver headers - einfo " Madwifi driver enabled" - echo "CFLAGS += -I/usr/include/madwifi" >> ${CONFIG} - echo "CONFIG_DRIVER_MADWIFI=y" >> ${CONFIG} - else - einfo " Madwifi driver disabled" - fi - - einfo " nl80211 driver enabled" - echo "CONFIG_DRIVER_NL80211=y" >> ${CONFIG} - echo "LIBS += -L/usr/lib" >> ${CONFIG} + # TODO: Add support for BSD drivers + hostapd_config_option DRIVER_HOSTAP y + hostapd_config_option DRIVER_WIRED y + hostapd_config_option DRIVER_NONE y + hostapd_config_option DRIVER_MADWIFI $(usex madwifi y n) + hostapd_config_option DRIVER_NL80211 y # misc - echo "CONFIG_PKCS12=y" >> ${CONFIG} - echo "CONFIG_RADIUS_SERVER=y" >> ${CONFIG} - echo "CONFIG_IAPP=y" >> ${CONFIG} - echo "CONFIG_IEEE80211R=y" >> ${CONFIG} - echo "CONFIG_IEEE80211W=y" >> ${CONFIG} - echo "CONFIG_IEEE80211N=y" >> ${CONFIG} - echo "CONFIG_PEERKEY=y" >> ${CONFIG} - echo "CONFIG_RSN_PREAUTH=y" >> ${CONFIG} - echo "CONFIG_INTERWORKING=y" >> ${CONFIG} - - if use ipv6; then - # IPv6 support - echo "CONFIG_IPV6=y" >> ${CONFIG} - fi + hostapd_config_option PKCS12 y + hostapd_config_option RADIUS_SERVER y + hostapd_config_option IAPP y + hostapd_config_option IEEE80211R y + hostapd_config_option IEEE80211W y + hostapd_config_option IEEE80211N y + hostapd_config_option PEERKEY y + hostapd_config_option RSN_PREAUTH y + hostapd_config_option INTERWORKING y + + # IPv6 support + hostapd_config_option IPV6 $(usex ipv6 y n) # If we are using libnl 2.0 and above, enable support for it # Removed for now, since the 3.2 version is broken, and we don't # support it. if has_version ">=dev-libs/libnl-3.2"; then - echo "CONFIG_LIBNL32=y" >> .config + hostapd_config_option LIBNL32 y + else + hostapd_config_option LIBNL32 n fi - # TODO: Add support for BSD drivers - default_src_configure } @@ -133,6 +138,8 @@ } src_install() { + save_config "${CONFIG}" + insinto /etc/${PN} doins ${PN}.{conf,accept,deny,eap_user,radius_clients,sim_db,wpa_psk}