#!/bin/sh
source /jffs/scripts/aiop/aiop-func

if [ `cat ${DNSMASQ_CONF} | grep -c "log-dhcp"` -eq 0 ]; then
    pc_append "log-dhcp" ${DNSMASQ_CONF}
fi

assign_ip () {

    if [ $# -ne 4 ]; then
        echo "Wrong number of parameters"
        return
    fi

    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}"

    if [ `ifconfig ${IFACE} 2&> /dev/null | grep -ice "UP"` -ne 1 ]; then
        logger "dnsmasq-dhcp: Unknown interface ${IFACE}."
        return
    fi

    if [ `ifconfig | grep -ice $(_quote ${IFACE_INET_ADDR%.*}.)` -ne 0 ]; then
        if [ `ifconfig ${IFACE} | grep -ice "$(_quote ${IFACE_INET_ADDR%.*}.)"` -ne 1 ]; then
            logger "dnsmasq-dhcp: Service already running on subnet ${IFACE_INET_ADDR%.*}"
            return
        fi
    fi

    logger "dnsmasq-dhcp: Configure ${IFACE} to have special DHCP on ${IFACE_INET_ADDR}"
    
    if [ `cat ${DNSMASQ_CONF} | grep -c ${IFACE}` -eq 0 ]; then
        cmd_run "pc_append" "pc_append interface=${IFACE} ${DNSMASQ_CONF}"
        cmd_run "pc_append" "pc_append dhcp-range=${IFACE},${DHCP_START},${DHCP_END},${IFACE_MASK_ADDR},24h ${DNSMASQ_CONF}"
        cmd_run "pc_append" "pc_append dhcp-option=${IFACE},3,${IFACE_INET_ADDR} ${DNSMASQ_CONF}"
    fi

    cmd_run "ifconfig" "ifconfig ${IFACE} ${IFACE_INET_ADDR} netmask ${IFACE_MASK_ADDR}"

    ebtable "${IFACE}" "I" "ipv4"
    ebtable "${IFACE}" "I" "ipv6"
    ebtable "${IFACE}" "I" "arp"

    iptable "${IFACE}" "I" "INPUT" "ACCEPT"

}