P2P: Use alternative way of starting dnsmasq if needed

Some other dnsmasq users (like libvirt) seem to be binding the DHCP
server to all interfaces which prevents the previously used mechanism
here from working (bind on the DHCP socket fails). If a failure is
noticed, try to start dnsmasq with -z option to avoid that.
This commit is contained in:
Jouni Malinen 2010-11-26 15:47:13 +02:00 committed by Jouni Malinen
parent 0fb337c121
commit afa4926c95

View file

@ -27,9 +27,15 @@ if [ "$CMD" = "P2P-GROUP-STARTED" ]; then
rm /var/run/dhclient.leases-$GIFNAME rm /var/run/dhclient.leases-$GIFNAME
kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME
ifconfig $GIFNAME 192.168.42.1 up ifconfig $GIFNAME 192.168.42.1 up
dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \ if ! dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \
-i $GIFNAME \ -i $GIFNAME \
-F192.168.42.11,192.168.42.99 -F192.168.42.11,192.168.42.99; then
# another dnsmasq instance may be running and blocking us; try to
# start with -z to avoid that
dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \
-i $GIFNAME \
-F192.168.42.11,192.168.42.99 --listen-address 192.168.42.1 -z
fi
fi fi
if [ "$4" = "client" ]; then if [ "$4" = "client" ]; then
kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid