X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=mtetherd-net-setup.sh;fp=mtetherd-net-setup.sh;h=e6b919e9a1e8f7d5a91f156e0948bf866787d728;hb=f4eb0d19c92fb621a6d096062597800cfe98dcf2;hp=1de31815bf3bc293538c83f9a01601d9287630bb;hpb=ac639792511f8baf419dd92c8a56ebfcb9b6d27c;p=mtetherd diff --git a/mtetherd-net-setup.sh b/mtetherd-net-setup.sh index 1de3181..e6b919e 100755 --- a/mtetherd-net-setup.sh +++ b/mtetherd-net-setup.sh @@ -17,9 +17,85 @@ # along with this program. If not, see . INTERFACE=$1 -ADDR=$2 -DHCP_START=$3 -DHCP_END=$4 +WAN=$2 +ADDRESS=$3 +NETMASK=$4 +DHCP_START=$5 +DHCP_END=$6 -echo "Setting up routing for: $INTERFACE $ADDR $DHCP_START $DHCP_END" >> /tmp/mtetherd-net-setup.log +log() { + echo $@ + echo $(date): $@ >> /tmp/mtetherd-script.log +} + +die() { + echo $@ >&2 + echo $(date): $@ >> /tmp/mtetherd-script.log + exit 1 +} + +if [ "${INTERFACE}" = "" -o "${WAN}" = "" -o "${ADDRESS}" = "" -o "${NETMASK}" = "" -o "${DHCP_START}" = "" -o "${DHCP_END}" = "" ]; then + die "Usage: $0
" +fi + +log "Setting up routing for: $INTERFACE $WAN $ADDRESS $NETMASK $DHCP_START $DHCP_END" + +echo "${INTERFACE}" | grep -E -q '^[a-zA-Z]+[0-9]+$' || die "Invalid interface name" +echo "${WAN}" | grep -E -q '^[a-zA-Z]+[0-9]+$' || die "Invalid WAN interface name" +echo "${ADDRESS}" | grep -E -q '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' || die "Invalid address" +echo "${NETMASK}" | grep -E -q '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' || die "Invalid netmask" +echo "${DHCP_START}" | grep -E -q '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' || die "Invalid DHCP start address" +echo "${DHCP_END}" | grep -E -q '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' || die "Invalid DHCP end address" + +RUNFILE="/var/run/mtetherd.${INTERFACE}.pid" +log "PID file = ${RUNFILE}" + +log "/sbin/ifconfig ${INTERFACE} ${ADDRESS} netmask ${NETMASK}" +msg=$(/sbin/ifconfig ${INTERFACE} ${ADDRESS} netmask ${NETMASK} 2>&1) +log $msg +log "/sbin/modprobe ipt_MASQUERADE" +msg=$(/sbin/modprobe ipt_MASQUERADE 2>&1) +log $msg +log "/usr/sbin/iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE" +msg=$(/usr/sbin/iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE 2>&1) +log $msg +#-a, --listen-address=ipaddr Specify local address(es) to listen on. +#-d, --no-daemon Do NOT fork into the background: run in debug mode. +#-D, --domain-needed Do NOT forward queries with no domain part. +#-f, --filterwin2k Don't forward spurious DNS requests from Windows hosts. +#-F, --dhcp-range=ipaddr,ipaddr,time Enable DHCP in the range given with lease duration. +#-g, --group=groupname Change to this group after startup (defaults to dip). +#-h, --no-hosts Do NOT load /etc/hosts file. +#-i, --interface=interface Specify interface(s) to listen on. +#-I, --except-interface=int Specify interface(s) NOT to listen on. +#-k, --keep-in-foreground Do NOT fork into the background, do NOT run in debug mode. +#-K, --dhcp-authoritative Assume we are the only DHCP server on the local network. +#-l, --dhcp-leasefile=path Specify where to store DHCP leases (defaults to /var/lib/misc/dnsmasq.leases). +#-n, --no-poll Do NOT poll /etc/resolv.conf file, reload only on SIGHUP. +#-N, --no-negcache Do NOT cache failed search results. +#-o, --strict-order Use nameservers strictly in the order given in /etc/resolv.conf. +#-p, --port=number Specify port to listen for DNS requests on (defaults to 53). +#-q, --log-queries Log DNS queries. +#-Q, --query-port=number Force the originating port for upstream DNS queries. +#-R, --no-resolv Do NOT read resolv.conf. +#-s, --domain= Specify the domain to be assigned in DHCP leases. +#-u, --user=username Change to this user after startup. (defaults to nobody). +#-x, --pid-file=path Specify path of PID file (defaults to /var/run/dnsmasq.pid). +#-X, --dhcp-lease-max=number Specify maximum number of DHCP leases (defaults to 150). +#-z, --bind-interfaces Bind only to interfaces in use. +#-Z, --read-ethers Read DHCP static host information from /etc/ethers. +#-1, --enable-dbus Enable the DBus interface for setting upstream servers, etc. +#-2, --no-dhcp-interface=interface Do not provide DHCP on this interface, only provide DNS. +#-9, --leasefile-ro Do not use leasefile. +# --log-dhcp Extra logging for DHCP. +# --min-port= Specify lowest port available for DNS query transmission. +log "/sbin/start-stop-daemon -S -p \"${RUNFILE}\" -b -x /usr/sbin/dnsmasq -- -x \"${RUNFILE}\" -k -I lo -i ${INTERFACE} -a ${ADDRESS} -z -F ${DHCP_START},${DHCP_END},3600" +msg=$(/sbin/start-stop-daemon -S -p "${RUNFILE}" -b -x /usr/sbin/dnsmasq -- -x "${RUNFILE}" -k -I lo -i ${INTERFACE} -a ${ADDRESS} -z -F ${DHCP_START},${DHCP_END},3600 2>&1) +log $msg +log "echo 1 > /proc/sys/net/ipv4/conf/${INTERFACE}/forwarding" +echo 1 > /proc/sys/net/ipv4/conf/${INTERFACE}/forwarding +log "echo 1 > /proc/sys/net/ipv4/conf/${WAN}/forwarding" +echo 1 > /proc/sys/net/ipv4/conf/${WAN}/forwarding + +log "Finished setting up routing for $INTERFACE"