#!/bin/sh CONFIG=1 source /usr/sbin/helper.sh DNSMASQ_CONF=/tmp/etc/dnsmasq.conf cmd_log () { logger "${2}[${1}] - ${3}" } cmd_run () { CMD=`${2}` ERRCODE=$? cmd_log ${ERRCODE} "${1}" "${ERR}: ${2}, ${CMD}" return ${ERRCODE} } iptable () { ARG="${1}" if [ $# -gt 3 ]; then ARG="${ARG} -d ${4}" fi cmd_run "iptable" "iptables -C ${2} -i ${ARG} -j ${3}" if [ $? -eq 1 ]; then cmd_run "iptable" "iptables -I ${2} -i ${ARG} -j ${3}" else cmd_run "iptable" "iptables -D ${2} -i ${ARG} -j ${3}" #iptable ${1} ${2} ${3} ${4} fi } ebtable () { CMD="-p ${2} -${4} ${1} -j ${3}" if [ `ebtables -t broute -L | grep -ice "${CMD}"` -eq 0 ]; then if [ $# -eq 1 ]; then cmd_run "ebtable" "ebtables ${1}" return $? else cmd_run "ebtable" "ebtables -t broute -I BROUTING ${CMD}" fi else cmd_run "ebtable" "ebtables -t broute -D BROUTING ${CMD}" if [ $# -eq 4 ]; then ebtable ${1} ${2} ${3} ${4} fi fi return $? } assign_ip () { IFACE="${1}" IFACE_INET_ADDR="${2}" IFACE_NWRK_ADDR="${IFACE_INET_ADDR%.*}.0" IFACE_MASK_ADDR="255.255.255.0" DHCP_START="${IFACE_INET_ADDR%.*}.${3}" DHCP_END="${IFACE_INET_ADDR%.*}.${4}" LAN=$(ifconfig "br0" | sed -ne's/.*inet addr:\([^ ]*\).*$/\1/p') echo " IFACE: ${IFACE} INET: ${IFACE_INET_ADDR} NWRK: ${IFACE_NWRK_ADDR} MASK: ${IFACE_MASK_ADDR} DCHP START: ${DHCP_START} END: ${DHCP_END} LAN: ${LAN}" ifconfig "${IFACE}" > /dev/null 2>&1 || continue cmd_run "ifconfig" "ifconfig ${IFACE} ${IFACE_INET_ADDR} netmask ${IFACE_MASK_ADDR}" ebtable "${IFACE}" "ipv4" "DROP" "i" ebtable "${IFACE}" "ipv6" "DROP" "i" ebtable "${IFACE}" "arp" "DROP" "i" iptable "${IFACE}" "FORWARD" "ACCEPT" iptable "${IFACE}" "INPUT" "ACCEPT" iptable "${IFACE}" "FORWARD" "DROP" "${LAN}/24" iptable "${IFACE}" "INPUT" "DROP" "${LAN}/24" ebtable "-D FORWARD -i ${IFACE} -j DROP" ebtable "-D FORWARD -o ${IFACE} -j DROP" if [ `cat ${DNSMASQ_CONF} | grep -c ${IFACE}` -eq 0 ]; then logger "dnsmasq-dhcp: Configure ${IFACE} to have special DHCP" pc_append "interface=${IFACE}" ${DNSMASQ_CONF} pc_append "dhcp-range=${IFACE},${DHCP_START},${DHCP_END},${IFACE_MASK_ADDR},24h" ${DNSMASQ_CONF} pc_append "dhcp-option=${IFACE},3,${IFACE_INET_ADDR}" ${DNSMASQ_CONF} #pc_append "dhcp-option=${IFACE},6,8.8.8.8,8.8.4.4" ${DNSMASQ_CONF} pc_append "dhcp-option=${IFACE},252,\"\n\"" ${DNSMASQ_CONF} fi } killall dnsmasq if [ `cat ${DNSMASQ_CONF} | grep -c "log-dhcp"` -eq 0 ]; then pc_append "log-dhcp" ${DNSMASQ_CONF} fi assign_ip "wl0.1" "192.168.2.1" "128" "191" #/26 assign_ip "wl0.2" "192.168.3.1" "128" "191" #/26 cat ${DNSMASQ_CONF} dnsmasq --log-async