#!/bin/sh
exec_option=$1
USE_WIFI=$2
INTERFACE=eth0

isrepeate()
{
    for i in 1 2 3 4 5 6
	  do
		    if [ $i -gt $2 ]
		    then
			      return 0
		    fi
		    val=$(eval echo \$L${i}_SIGPORT)
		    if [ $val = $1 ]
		    then
			      return 1
		    fi
	  done
	  return 0
}

if [ -f /usr/local/data/configuration/Network/Qos.cfg ]
then
    . /usr/local/data/configuration/Network/Qos.cfg
    . /usr/local/data/configuration/Network/Wan.cfg
    x_tmp=$(echo $USE_WIFI | tr [A-Z] [a-z])
    if [[ "$x_tmp" = "yes" ]]
    then
  	    INTERFACE=wlan0
    fi      
	  if [ X"$exec_option" = X"start" ]
	  then
		    if [ X"$VOICEQOS" != X"" ] && [ X"$VOICEQOS" != X"0" ]
		    then
			      if [ X"$MINRTPPORT" != X"" ] && [ X"$MAXRTPPORT" != X"" ]
			      then
			          if [ $NETWORKTYPE -ne 2 ]
			          then
				            iptables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $MINRTPPORT:$MAXRTPPORT -j DSCP --set-dscp $VOICEQOS
				        fi
				        if [ $NETWORKTYPE -gt 1 ]
				        then
				            ip6tables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $MINRTPPORT:$MAXRTPPORT -j DSCP --set-dscp $VOICEQOS
				        fi
			      fi
			  fi

        if [ X"$SIPQOS" != X"" ] && [ X"$SIPQOS" != X"0" ]
		    then
            if [ X"$L1_SIGPORT" != X"" ]
            then
                if [ $NETWORKTYPE -ne 2 ]
			          then
				            iptables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L1_SIGPORT -j DSCP --set-dscp $SIPQOS
				        fi
				        if [ $NETWORKTYPE -gt 1 ]
				        then
				            ip6tables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L1_SIGPORT -j DSCP --set-dscp $SIPQOS
				        fi
			      fi
			      if [ X"$L2_SIGPORT" != X"" ]                        
            then
                ret=$(isrepeate $L2_SIGPORT 1)
				        if [ "$?" != "1" ]
				        then
				            if [ $NETWORKTYPE -ne 2 ]
			              then
					              iptables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L2_SIGPORT -j DSCP --set-dscp $SIPQOS
					          fi
					          if [ $NETWORKTYPE -gt 1 ]
					          then
					              ip6tables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L2_SIGPORT -j DSCP --set-dscp $SIPQOS
					          fi
				        fi
			      else
                exit 0
			      fi
            if [ X"$L3_SIGPORT" != X"" ]                            
            then                                                    
                ret=$(isrepeate $L3_SIGPORT 2)                  
                if [ "$?" != "1" ]                              
                then
                    if [ $NETWORKTYPE -ne 2 ]
			              then                                            
                        iptables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L3_SIGPORT -j DSCP --set-dscp $SIPQOS
                    fi
                    if [ $NETWORKTYPE -gt 1 ]
                    then
                        ip6tables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L3_SIGPORT -j DSCP --set-dscp $SIPQOS
                    fi                               
                fi                                              
            else                                                    
                exit 0                                          
            fi
			      if [ X"$L4_SIGPORT" != X"" ]                            
            then                                                    
                ret=$(isrepeate $L4_SIGPORT 3)                
                if [ "$?" != "1" ]                              
                then
                    if [ $NETWORKTYPE -ne 2 ]
			              then                                            
                        iptables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L4_SIGPORT -j DSCP --set-dscp $SIPQOS 
                    fi
                    if [ $NETWORKTYPE -gt 1 ]
                    then
                        ip6tables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L4_SIGPORT -j DSCP --set-dscp $SIPQOS
                    fi
                fi                                              
            else                                                    
                exit 0                                          
            fi
				    if [ X"$L5_SIGPORT" != X"" ]                            
            then                                                    
                ret=$(isrepeate $L5_SIGPORT 4)                  
                if [ "$?" != "1" ]                              
                then  
                    if [ $NETWORKTYPE -ne 2 ]
			              then                                          
                        iptables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L5_SIGPORT -j DSCP --set-dscp $SIPQOS
                    fi
                    if [ $NETWORKTYPE -gt 1 ]
                    then
                        ip6tables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L5_SIGPORT -j DSCP --set-dscp $SIPQOS
                    fi
                fi                                              
            else                                                    
                exit 0                                          
            fi
				    if [ X"$L6_SIGPORT" != X"" ]                            
            then                                                    
                ret=$(isrepeate $L6_SIGPORT 5)                  
                if [ "$?" != "1" ]                              
                then  
                    if [ $NETWORKTYPE -ne 2 ]
			              then                                          
                        iptables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L6_SIGPORT -j DSCP --set-dscp $SIPQOS
                    fi
                    if [ $NETWORKTYPE -gt 1 ]
                    then
                        ip6tables -t mangle -A OUTPUT -o $INTERFACE -p udp --sport $L6_SIGPORT -j DSCP --set-dscp $SIPQOS
                    fi
                fi                                              
            else                                                    
                exit 0                                          
            fi
        fi
    elif [ X"$exec_option" = X"stop" ]
    then
        if [ $NETWORKTYPE -ne 2 ]
        then
            iptables -t mangle -F	
        fi
        if [ $NETWORKTYPE -gt 1 ]
        then
            ip6tables -t mangle -F
        fi
    fi
else
    echo 'Hi, guy, i need config file.'
fi
