P2P: Add an example p2p-action script for udhcpc/udhcpd

This commit is contained in:
Jouni Malinen 2010-07-29 18:35:26 -07:00 committed by Jouni Malinen
parent 56815b2b7d
commit 7fbf99aa6b
2 changed files with 189 additions and 0 deletions

View file

@ -0,0 +1,69 @@
#!/bin/sh
IFNAME=$1
CMD=$2
kill_daemon() {
NAME=$1
PF=$2
if [ ! -r $PF ]; then
return
fi
PID=`cat $PF`
if [ $PID -gt 0 ]; then
if ps $PID | grep -q $NAME; then
kill $PID
fi
fi
rm $PF
}
if [ "$CMD" = "P2P-GROUP-STARTED" ]; then
GIFNAME=$3
if [ "$4" = "GO" ]; then
kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid
ifconfig $GIFNAME 192.168.42.1 up
udhcpd /etc/udhcpd-p2p.conf
fi
if [ "$4" = "client" ]; then
kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid
kill_daemon udhcpd /var/run/udhcpd-$GIFNAME.pid
udhcpc -i $GIFNAME -p /var/run/udhcpc-$GIFNAME.pid \
-s /etc/udhcpc.script
fi
fi
if [ "$CMD" = "P2P-GROUP-REMOVED" ]; then
GIFNAME=$3
if [ "$4" = "GO" ]; then
kill_daemon udhcpd /var/run/udhcpd-$GIFNAME.pid
ifconfig $GIFNAME 0.0.0.0
fi
if [ "$4" = "client" ]; then
kill_daemon udhcpc /var/run/udhcpc-$GIFNAME.pid
ifconfig $GIFNAME 0.0.0.0
fi
fi
if [ "$CMD" = "P2P-CROSS-CONNECT-ENABLE" ]; then
GIFNAME=$3
UPLINK=$4
# enable NAT/masquarade $GIFNAME -> $UPLINK
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o $UPLINK -j MASQUERADE
iptables -A FORWARD -i $UPLINK -o $GIFNAME -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $GIFNAME -o $UPLINK -j ACCEPT
sysctl net.ipv4.ip_forward=1
fi
if [ "$CMD" = "P2P-CROSS-CONNECT-DISABLE" ]; then
GIFNAME=$3
UPLINK=$4
# disable NAT/masquarade $GIFNAME -> $UPLINK
sysctl net.ipv4.ip_forward=0
iptables -t nat -D POSTROUTING -o $UPLINK -j MASQUERADE
iptables -D FORWARD -i $UPLINK -o $GIFNAME -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -D FORWARD -i $GIFNAME -o $UPLINK -j ACCEPT
fi

View file

@ -0,0 +1,120 @@
# Sample udhcpd configuration file (/etc/udhcpd.conf)
# The start and end of the IP lease block
start 192.168.42.20 #default: 192.168.0.20
end 192.168.42.254 #default: 192.168.0.254
# The interface that udhcpd will use
interface wlan2 #default: eth0
# The maximim number of leases (includes addressesd reserved
# by OFFER's, DECLINE's, and ARP conficts
#max_leases 254 #default: 254
# If remaining is true (default), udhcpd will store the time
# remaining for each lease in the udhcpd leases file. This is
# for embedded systems that cannot keep time between reboots.
# If you set remaining to no, the absolute time that the lease
# expires at will be stored in the dhcpd.leases file.
#remaining yes #default: yes
# The time period at which udhcpd will write out a dhcpd.leases
# file. If this is 0, udhcpd will never automatically write a
# lease file. (specified in seconds)
#auto_time 7200 #default: 7200 (2 hours)
# The amount of time that an IP will be reserved (leased) for if a
# DHCP decline message is received (seconds).
#decline_time 3600 #default: 3600 (1 hour)
# The amount of time that an IP will be reserved (leased) for if an
# ARP conflct occurs. (seconds
#conflict_time 3600 #default: 3600 (1 hour)
# How long an offered address is reserved (leased) in seconds
#offer_time 60 #default: 60 (1 minute)
# If a lease to be given is below this value, the full lease time is
# instead used (seconds).
#min_lease 60 #defult: 60
# The location of the leases file
#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases
# The location of the pid file
pidfile /var/run/udhcpd-wlan2.pid #default: /var/run/udhcpd.pid
# Everytime udhcpd writes a leases file, the below script will be called.
# Useful for writing the lease file to flash every few hours.
#notify_file #default: (no script)
#notify_file dumpleases # <--- usefull for debugging
# The following are bootp specific options, setable by udhcpd.
#siaddr 192.168.0.22 #default: 0.0.0.0
#sname zorak #default: (none)
#boot_file /var/nfs_root #default: (none)
# The remainer of options are DHCP options and can be specifed with the
# keyword 'opt' or 'option'. If an option can take multiple items, such
# as the dns option, they can be listed on the same line, or multiple
# lines. The only option with a default is 'lease'.
#Examles
opt dns 192.168.2.1
option subnet 255.255.255.0
option domain atherosowl.com
option lease 864000 # 10 days of seconds
# Currently supported options, for more info, see options.c
#opt subnet
#opt timezone
#opt router
#opt timesvr
#opt namesvr
#opt dns
#opt logsvr
#opt cookiesvr
#opt lprsvr
#opt bootsize
#opt domain
#opt swapsvr
#opt rootpath
#opt ipttl
#opt mtu
#opt broadcast
#opt wins
#opt lease
#opt ntpsrv
#opt tftp
#opt bootfile
# Static leases map
#static_lease 00:60:08:11:CE:4E 192.168.0.54
#static_lease 00:60:08:11:CE:3E 192.168.0.44