diff --git a/res/write-udev-rule.sh b/res/write-udev-rule.sh new file mode 100755 index 0000000..394f504 --- /dev/null +++ b/res/write-udev-rule.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +./kill-wpa.sh + +. miracle-utils.sh + +ETHER_NAMES=$(find_choosable_networknames) + +ETHER_COUNT=$(echo "$ETHER_NAMES" | wc -l) + +if [ 0 = $ETHER_COUNT ] +then + echo There is no net devices avaliable + exit 1 +elif [ 1 = $ETHER_COUNT ] +then + ETHERNAME="$ETHER_NAMES" +elif [ 2 -le $ETHER_COUNT ] +then + echo choose device for normal connection: + QUIT="exit" + select et_name in $ETHER_NAMES $QUIT + do + case $et_name + in + "$QUIT") + exit + ;; + "") + if [ "$REPLY" = $QUIT ] + then + exit + else + echo unknow $REPLY + fi + ;; + *) + ETHERNAME=$et_name + break + ;; + esac + done +fi + +# default path for config file +CONFIG_FILE=${1:-/run/network/wpa_supplicant_${ETHERNAME}.conf} + +NUMBER=10 + +cat > /etc/udev/rules.d/${NUMBER}-network.rules << EOF + SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="$(cat /sys/class/net/${ETHERNAME}/address)", NAME="${ETHERNAME}", TAGS+="miracle" +EOF diff --git a/src/wifi/wifid.c b/src/wifi/wifid.c index 30676b1..739cb02 100644 --- a/src/wifi/wifid.c +++ b/src/wifi/wifid.c @@ -40,7 +40,7 @@ #include "wifid.h" #include "config.h" -#define DO_NOT_RELY_UDEV 0 +#define RELY_UDEV 0 const char *arg_wpa_bindir = "/usr/bin"; unsigned int arg_wpa_loglevel = LOG_NOTICE; @@ -100,7 +100,7 @@ static void manager_add_udev_link(struct manager *m, link_set_friendly_name(l, m->friendly_name); -#if DO_NOT_RELY_UDEV +#if RELY_UDEV if (udev_device_has_tag(d, "miracle")) #endif link_set_managed(l, true); @@ -138,13 +138,13 @@ static int manager_udev_fn(sd_event_source *source, link_renamed(l, ifname); } -#if DO_NOT_RELY_UDEV - link_set_managed(l, true); -#else +#if RELY_UDEV if (udev_device_has_tag(d, "miracle")) link_set_managed(l, true); else link_set_managed(l, false); +#else + link_set_managed(l, true); #endif } else { manager_add_udev_link(m, d);