Browse Source

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.
Jouni Malinen 14 years ago
parent
commit
afa4926c95
1 changed files with 8 additions and 2 deletions
  1. 8 2
      wpa_supplicant/examples/p2p-action.sh

+ 8 - 2
wpa_supplicant/examples/p2p-action.sh

@@ -27,9 +27,15 @@ if [ "$CMD" = "P2P-GROUP-STARTED" ]; then
 	rm /var/run/dhclient.leases-$GIFNAME
 	kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME
 	ifconfig $GIFNAME 192.168.42.1 up
-	dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \
+	if ! dnsmasq -x /var/run/dnsmasq.pid-$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
     if [ "$4" = "client" ]; then
 	kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid