Make sure the virtual interface will have a new mac address.
Fixes issues #6 and #7
This commit is contained in:
parent
40249cfd93
commit
67588aa7a7
21
create_ap
21
create_ap
@ -66,12 +66,25 @@ get_avail_bridge() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_new_macaddr() {
|
||||||
|
OLDMAC=$(get_macaddr "$1")
|
||||||
|
for i in {20..255}; do
|
||||||
|
NEWMAC="${OLDMAC%:*}:$(printf %02x $i)"
|
||||||
|
(ip link | grep "ether ${NEWMAC}" > /dev/null 2>&1) || break
|
||||||
|
done
|
||||||
|
echo $NEWMAC
|
||||||
|
}
|
||||||
|
|
||||||
ADDED_UNMANAGED=0
|
ADDED_UNMANAGED=0
|
||||||
NETWORKMANAGER_CONF=/etc/NetworkManager/NetworkManager.conf
|
NETWORKMANAGER_CONF=/etc/NetworkManager/NetworkManager.conf
|
||||||
|
|
||||||
networkmanager_add_unmanaged() {
|
networkmanager_add_unmanaged() {
|
||||||
[[ ! -f ${NETWORKMANAGER_CONF} ]] && return
|
[[ ! -f ${NETWORKMANAGER_CONF} ]] && return
|
||||||
|
if [[ -n "$2" ]]; then
|
||||||
MAC=$(get_macaddr "$1")
|
MAC=$(get_macaddr "$1")
|
||||||
|
else
|
||||||
|
MAC="$2"
|
||||||
|
fi
|
||||||
grep -E "^unmanaged-devices=mac:${MAC}" ${NETWORKMANAGER_CONF} > /dev/null 2>&1 && return
|
grep -E "^unmanaged-devices=mac:${MAC}" ${NETWORKMANAGER_CONF} > /dev/null 2>&1 && return
|
||||||
echo -n "Network Manager config found, set $1 as unmanaged device... "
|
echo -n "Network Manager config found, set $1 as unmanaged device... "
|
||||||
grep -E '^\[keyfile\]' ${NETWORKMANAGER_CONF} > /dev/null 2>&1 || echo -e '\n\n[keyfile]' >> ${NETWORKMANAGER_CONF}
|
grep -E '^\[keyfile\]' ${NETWORKMANAGER_CONF} > /dev/null 2>&1 || echo -e '\n\n[keyfile]' >> ${NETWORKMANAGER_CONF}
|
||||||
@ -84,7 +97,11 @@ networkmanager_add_unmanaged() {
|
|||||||
networkmanager_rm_unmanaged() {
|
networkmanager_rm_unmanaged() {
|
||||||
[[ $ADDED_UNMANAGED -eq 0 ]] && return
|
[[ $ADDED_UNMANAGED -eq 0 ]] && return
|
||||||
[[ ! -f ${NETWORKMANAGER_CONF} ]] && return
|
[[ ! -f ${NETWORKMANAGER_CONF} ]] && return
|
||||||
|
if [[ -n "$2" ]]; then
|
||||||
MAC=$(get_macaddr "$1")
|
MAC=$(get_macaddr "$1")
|
||||||
|
else
|
||||||
|
MAC="$2"
|
||||||
|
fi
|
||||||
sed -e "/^unmanaged-devices=mac:${MAC}/d" -i ${NETWORKMANAGER_CONF}
|
sed -e "/^unmanaged-devices=mac:${MAC}/d" -i ${NETWORKMANAGER_CONF}
|
||||||
sleep 2
|
sleep 2
|
||||||
}
|
}
|
||||||
@ -296,7 +313,8 @@ else
|
|||||||
die "Failed to create a virtual WiFi interface from ${WIFI_IFACE}."
|
die "Failed to create a virtual WiFi interface from ${WIFI_IFACE}."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
networkmanager_add_unmanaged ${VWIFI_IFACE}
|
NEW_MACADDR=$(get_new_macaddr ${VWIFI_IFACE})
|
||||||
|
networkmanager_add_unmanaged ${VWIFI_IFACE} ${NEW_MACADDR}
|
||||||
|
|
||||||
[[ $HIDDEN -eq 1 ]] && echo "Access Point's SSID is hidden!"
|
[[ $HIDDEN -eq 1 ]] && echo "Access Point's SSID is hidden!"
|
||||||
|
|
||||||
@ -338,6 +356,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# initialize WiFi interface
|
# initialize WiFi interface
|
||||||
|
ip link set dev ${VWIFI_IFACE} address ${NEW_MACADDR} || die
|
||||||
ip link set down dev ${VWIFI_IFACE} || die
|
ip link set down dev ${VWIFI_IFACE} || die
|
||||||
ip addr flush ${VWIFI_IFACE} || die
|
ip addr flush ${VWIFI_IFACE} || die
|
||||||
if [[ "$SHARE_METHOD" != "bridge" ]]; then
|
if [[ "$SHARE_METHOD" != "bridge" ]]; then
|
||||||
|
Loading…
Reference in New Issue
Block a user