#!/bin/sh

# This script is not intended to be invoked directly by the user so
# it does only rudimentary option processing.  See cpqswcfg -q.
SNMPSET=/usr/bin/snmpset
SNMPGET=/usr/bin/snmpget
SNMPWALK=/usr/bin/snmpwalk

myExit()
{
	if [ "$exitwait" = 1 ]; then
		echo Press enter to continue...
		read x
	fi

	exit $1
}
	
error()
{
	echo Error
	myExit 1
}
	
usage()
{
	echo $0: Incorrect usage, use cpqswcfg -q
	error
}

setvar()
{
	eval $SNMPSET "$*" > /dev/null # 2>&1
	if [ $? != 0 ]; then
		error
	fi
}

setvarNerror()
{
	# ignore expected error
	eval $SNMPSET "$*" > /dev/null 2>&1
}

if [ "$4" = -y -o "$5" = -y -o "$6" = -y -o "$7" = -y -o "$8" = -y -o "$9" = -y ]; then
	exitwait=1
else
	exitwait=0
fi

case "$3" in
reset)
	case "$4" in
	reboot)
		# swL2DevCtrlSystemReboot (no return)
		setvarNerror $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.1.0 i 2 	
		;;
	save)
		# swL2DevCtrlSystemReboot (no return)
		setvarNerror $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.1.0 i 3
		;;
	default)
		# swL2DevCtrlSystemReboot (no return)
		setvarNerror $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.1.0 i 4 	
		;;
	def_noIP)
		# swL2DevCtrlSystemReboot (no return)
		setvarNerror $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.1.0 i 5 	
		;;
	nvram)
		# Write new config to NVRAM.
		setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.6.3 i 3
		;;
	*)
		usage
		;;
	esac

	;;

get_cfgfile)
	# Set TFTP server addr.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.3.3 a $4 		
	
	# Set transfer type to network-load.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.4.3 i 2 		
	
	# Set filename.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.5.3 s $5 		
	
	# Set load type to upload. 
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.7.3 i 2 		
	
	# Start the transfer. 
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.8.3 i 3 		
	
	;;

set_cfgfile)
	# auto-reboots
	# Set TFTP server addr.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.3.3 a $4 		

	# Set transfer type to network-load.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.4.3 i 2 		

	# Set filename.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.5.3 s $5 		

	# Set load type to download.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.7.3 i 3 		

	# Start the transfer.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.8.3 i 3 		
	;;

get_logfile)
	# Set TFTP server addr.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.3.2 a $4 		

	# Set transfer type to network-load.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.4.2 i 2 		

	# Set filename.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.5.2 s $5 		

	# Set load type to upload.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.7.2 i 2 		

	# Start the transfer.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.8.2 i 3 		
	;;

firmware)
	# Set TFTP server addr.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.3.1 a $4 	

	# Set transfer type to network-load.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.4.1 i 2 			

	# Set filename.
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.5.1 s $5		

	# Set load type to download.  
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.7.1 i 3 			

	# Start the download.  
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.8.1 i 3 			
	;;

mib2)
	setvar $1 $2 .1.3.6.1.2.1.1.4.0 s $4
	setvar $1 $2 .1.3.6.1.2.1.1.5.0 s $5
	setvar $1 $2 .1.3.6.1.2.1.1.6.0 s $6
	;;

IPaddress)
	case "$4" in
	manual)
		# agentIpGetIpFrom
		setvarNerror $1 $2 .1.3.6.1.4.1.232.161.3.1.3.3.0 i 2 		

		if [ "$5" != "" -a "$5" != "-y" ]; then
			# swL2DevCtrlSystemIP
			setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.2.0 a $5

			if [ "$6" != "" -a "$6" != "-y" ]; then
				# swL2DevCtrlSubnetMask
				setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.3.0 a $6
				if [ "$7" != "" -a "$7" != "-y" ]; then
					# swL2DevCtrlDefaultGateway
					setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.4.0 a $7
				fi
			fi
		fi

		;;
	BOOTP)
		# agentIpGetIpFrom
		setvarNerror $1 $2 .1.3.6.1.4.1.232.161.3.1.3.3.0 i 3
		;;
	DHCP)
		# agentIpGetIpFrom
		setvarNerror $1 $2 .1.3.6.1.4.1.232.161.3.1.3.3.0 i 4
		;;
	*)
		usage
		;;
	esac

	;;

snmpTrap)
	case "$6" in
	delete)
		# agentIpTrapManagerStatus
		setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.4.1.1.3.$4 i 2	
		;;
	create)
		# agentIpTrapManagerStatus
		setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.4.1.1.3.$4 i 3	

		# agentIpTrapManagerIpAddr
		# setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.4.1.1.1.$4 a $4	

		# agentIpTrapManagerComm
		setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.4.1.1.2.$4 s $5	
		;;
	*)
		usage
		;;
	esac
	;;

rs232)
	case "$4" in
	enable)
		setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.4.0 i 2
		;;
	oob)
		setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.4.0 i 3
		;;
	disable)
		setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.2.4.0 i 4
		;;
	*)
		usage
		;;
	esac


	if [ "$5" != "" -a "$5" != "-y" ]; then
		case "$5" in
		2400)
			# agentConsoleModeManagerBaudRate
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.4.0 i 2
			;;
		9600)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.4.0 i 3
			;;
		19200)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.4.0 i 4
			;;
		38400)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.4.0 i 5
			;;
		57200)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.4.0 i 6
			;;
		115200)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.4.0 i 7
			;;
		*)
			usage
			;;
		esac
	fi

	if [ "$6" != "" -a "$6" != "-y" ]; then
		case "$6" in
		7dataBits)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.1.0 i 2
			;;
		8dataBits)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.1.0 i 3
			;;
		*)
			usage
			;;
		esac
	fi

	if [ "$7" != "" -a "$7" != "-y" ]; then
		case "$7" in
		1stopBits)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.2.0 i 2
			;;
		2stopBits)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.2.0 i 3
			;;
		*)
			usage
			;;
		esac
	fi

	if [ "$8" != "" -a "$8" != "-y" ]; then
		case "$8" in
		oddParity)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.3.0 i 2
			;;
		evenParity)
			setvar $1 $2 .1.3.6.1.4.1.232.161.3.1.5.3.0 i 3
			;;
		*)
			usage
			;;
		esac
	fi
	;;

autologout)
	case "$4" in
	console)
		case "$5" in
		0)
			# swL2DevCtrlConsoleTimeout
			setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.14.0 i 1 	
			;;
		2)
			setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.14.0 i 2 	
			;;
		5)
			setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.14.0 i 3 	
			;;
		10)
			setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.14.0 i 4 	
			;;
		15)
			setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.14.0 i 5 	
			;;
		*)
			usage
			;;
		esac
		;;
	web)
		# swL2DevCtrlConsoleTimeout
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.15.0 i $5 	
		;;
	*)
		usage
		;;
	esac
	;;

portStatus)
	case "$5" in
	enable)
		# swL2PortCtrlAdminState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.2.$4 i 3 	
		;;
	
	disable)
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.2.$4 i 2 	
		;;
	*)
		usage
		;;
	esac
	;;

portCfg)
	case "$5" in
	noflow)
		# swL2PortCtrlFlowCtrlState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.4.$4 i 2
		;;
	flow)
		# swL2PortCtrlFlowCtrlState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.4.$4 i 3
		;;
	*)
		usage
		;;
	esac


	case "$6" in
	nway)
		# swL2PortCtrlNWayState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.3.$4 i 2
		;;
	10half)
		# swL2PortCtrlNWayState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.3.$4 i 3
		;;
	10full)
		# swL2PortCtrlNWayState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.3.$4 i 4
		;;
	100half)
		# swL2PortCtrlNWayState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.3.$4 i 5
		;;
	100full)
		# swL2PortCtrlNWayState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.3.$4 i 6
		;;
	1000half)
		# swL2PortCtrlNWayState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.3.$4 i 7
		;;
	1000full)
		# swL2PortCtrlNWayState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.3.$4 i 8
		;;
	*)
		usage
		;;
	esac

	;;

portName)
	# ifName
	setvar $1 $2 .1.3.6.1.2.1.31.1.1.1.18.$4 s $5	
	;;

vlanCreate)
	# dot1qVlanStaticRowStatus (4=createAndGo)
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.5.$4 i 4 		

	# dot1qVlanStaticName
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.1.$4 s $5 		

	# dot1qVlanStaticEgressPorts
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.2.$4 x $6 		

	# dot1qVlanForbiddenEgressPorts
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.3.$4 x $7 		

	# dot1qVlanStaticUntaggedPorts
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.4.$4 x $8 		
	;;

vlanModify)
	# dot1qVlanStaticName
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.1.$4 s $5 		

	# dot1qVlanStaticEgressPorts
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.2.$4 x $6 		

	# dot1qVlanForbiddenEgressPorts
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.3.$4 x $7 		

	# dot1qVlanStaticUntaggedPorts
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.4.$4 x $8 		
	;;

vlanDelete)
	# dot1qVlanStatiRowStatus (6=delete)
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.5.$4 i 6 		
	;;

vlanMgmt)
	# swL2DevCtrlManagementVlanId
	setvarNerror $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.5.0 i $4 	
	;;

vlanPort)
	case "$6" in
	all)
		x=1
		;;
	tag)
		x=2
		;;
	*)
		usage
		;;
	esac

	case "$7" in
	accept)
		y=2
		;;
	discard)
		y=1
		;;
	*)
		usage
		;;
	esac

	case "$8" in
	enable_gvrp)
		z=1
		;;
	disable_gvrp)
		z=2
		;;
	*)
		usage
		;;
	esac

	# dot1qPvid
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.1.$4 u $5 		

	# dot1qPortAcceptingFrameTypes
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.2.$4 i $x 	

	# dot1qPortIngressFiltering
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.3.$4 i $y 	

	# dot1qPortGvrpStatus
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.4.$4 i $z 	
	;;

trunkCreate)
	# swPortTrunkName
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.1.3.1.2.$4 s $5	

	# swPortTrunkPortList
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.1.3.1.4.$4 x $6	

	# swPortTrunkState (4=rowStatus createAndGo)
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.1.3.1.5.$4 i 1	
	;;

trunkDelete)
	# swPortTrunkState (6=rowStatus delete, but that fails. 2=notInService)
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.1.3.1.5.$4 i 2	
	;;

mirrorCreate)
	# swPortMirrorSourcePort
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.2.$4 i $5	

	# swPortMirrorTargetPort
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.3.$4 i $6	

	# swPortMirrorDirection
	case "$7" in
	ingress)
		x=2
		;;
	egress)
		x=3
		;;
	both)
		x=4
		;;
	*)
		usage
		;;
	esac

	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.4.$4 i $x	

	# swPortMirrorState (1=active)
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.5.$4 i 1	
	;;

mirrorDelete)
	# swPortMirrorState (2=notInService)
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.5.$4 i 2	
	;;

stp)
	if [ "$4" = "enable" ]; then
		# swL2DevCtrlStpState
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.6.0 i 3 		
	elif [ "$4" = "disable" ]; then
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.6.0 i 2 		
	else
		usage
	fi

	if [ "$5" != "" -a "$5" != "-y" ]; then
		# dot1dStpBridgeMaxAge
		setvar $1 $2 .1.3.6.1.2.1.17.2.12.0 i $5

		if [ "$6" != "" -a "$6" != "-y" ]; then
			# dot1dStpBridgeHelloTime
			setvar $1 $2 .1.3.6.1.2.1.17.2.13.0 i $6

			if [ "$7" != "" -a "$7" != "-y" ]; then
				# dot1dStpBridgeForwardDelay
				setvar $1 $2 .1.3.6.1.2.1.17.2.14.0 i $7

				if [ "$8" != "" -a "$8" != "-y" ]; then
					# dot1dStpPriority
					setvar $1 $2 .1.3.6.1.2.1.17.2.2.0 i $8
				fi
			fi
		fi
	fi
	;;

stpPort)
	case "$5" in
	enable)
		# bridge-mib:dot1dStpPortEnable
		setvar $1 $2 .1.3.6.1.2.1.17.2.15.1.4.$4 i 1 		
		;;
	disable)
		# bridge-mib:dot1dStpPortEnable
		setvar $1 $2 .1.3.6.1.2.1.17.2.15.1.4.$4 i 2 		
		;;
	*)
		usage
		;;
	esac

	if [ "$6" != "" -a "$6" != "-y" ]; then
		# dot1dStpPortPriority
		setvar $1 $2 .1.3.6.1.2.1.17.2.15.1.2.$4 i $6 		

		if [ "$7" != "" -a "$7" != "-y" ]; then
			# dot1dStpPortPathCost
			setvar $1 $2 .1.3.6.1.2.1.17.2.15.1.5.$4 i $7 		
		fi
	fi
	if [ "$8" != "" -a "$8" != "-y" ]; then
		case "$8" in
		byPassEnable)
			# swL2STPCtrlByPass
			setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.8.1.1.2.$4 i 3
			;;
		byPassDisable)
			setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.8.1.1.2.$4 i 2
			;;
		*)
			usage
			;;
		esac
	fi
	;;

igmpCreate)
	# swIGMPCtrlState
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.7.$4 i 4

	# swIGMPCtrlVid
	# setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.1.$4 i $4	
	# 
	# swIGMPQueryInterval
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.2.$4 i $5	
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.3.$4 i $6	
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.4.$4 i $7	
	if [ "$8" = "other" ]; then
		x=1
	elif [ "$8" = "v0Querier" ]; then
		x=2
	elif [ "$8" = "v1Querier" ]; then
                x=3
	elif [ "$8" = "v2Querier" ]; then
                x=4
	else
		usage
	fi
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.6.$4 i $x
	;;

igmpDelete)
	setvar $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.7.$4 i 6	
	;;

uniAddrFilter)
	# fdbID addr rcvPort mask status
	case "$8" in
	invalid)
		x=2
		;;
	perm)
		x=3
		;;
	delReset)
		x=4
		;;
	delTimeout)
		x=5
		;;
	*)
		usage
		;;
	esac

	# dot1qStaticUnicastStatus
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.3.1.1.4.$4.$5.$6 i $x	

	if [ "$8" != "invalid" ]; then
		# dot1qStaticUnicastAllowedToGoTo
		setvar $1 $2 .1.3.6.1.2.1.17.7.1.3.1.1.3.$4.$5.$6 x $7	
	fi

	;;

multAddrFilter)
	# vlanID addr rcvPort egress forbid status
	case "$9" in
	invalid)
		x=2
		;;
	perm)
		x=3
		;;
	delReset)
		x=4
		;;
	delTimeout)
		x=5
		;;
	*)
		usage
		;;
	esac

	# dot1qStaticMulticastStatus
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.3.2.1.5.$4.$5.$6 i $x	

	if [ "$9" != "invalid" ]; then
		# dot1qStaticMulticastStaticEgressPorts
		setvar $1 $2 .1.3.6.1.2.1.17.7.1.3.2.1.3.$4.$5.$6 x $7	

		# dot1qStaticMulticastForbiddenEgressPorts
		setvar $1 $2 .1.3.6.1.2.1.17.7.1.3.2.1.4.$4.$5.$6 x $8	
	fi

	;;

gvrp)
	case "$4" in
	enable)
		# dot1qGvrpStatus
		setvar $1 $2 .1.3.6.1.2.1.17.7.1.1.5.0 i 1 		
		;;
	disable)
		# dot1qGvrpStatus
		setvar $1 $2 .1.3.6.1.2.1.17.7.1.1.5.0 i 2 		
		;;
	*)
		usage
		;;
	esac

	;;

gvrpPort)
	case "$5" in
	enable)
		x=1
		;;
	disable)
		x=2
		;;
	*)
		usage
		;;
	esac

	# dot1qPortGvrpStatus
	setvar $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.4.$4 i $x		
	;;

cos)
	case "$4" in
	strict)
		# swL2CosScheduleMethod
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.3.1.0 i 2
		;;
	round)
		# swL2CosScheduleMethod
		setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.3.1.0 i 3
		;;
	*)
		usage
		;;
	esac
	;;

cosQueue)
	# swL2CosMaxPackets
	setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.3.2.1.2.$4 i $5 		

	# swL2CosMaxLatency
	setvar $1 $2 .1.3.6.1.4.1.232.161.2.2.3.2.1.3.$4 i $6 		
	;;

qos)
	# dot1dTrafficClass
	setvar $1 $2 .1.3.6.1.2.1.17.6.1.2.3.1.2.$4.$5 i $6	
	;;

query)
	echo =========== $4 function SNMP configuration:
	if [ "$4" = "all" ]; then
		qlist="reset get_cfgfile mib2 IPaddress snmpTrap rs232 autologout portStatus portCfg portName vlanCreate vlanMgmt vlanPort trunkCreate mirrorCreate stp stpPort igmpCreate uniAddrFilter multAddrFilter gvrp gvrpPort cos cosQueue qos"
	else
		qlist=$4
	fi

	for qfunc in $qlist; do

	case "$qfunc" in
	reset)
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.1.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.6.3
		
		;;

	get_cfgfile | set_cfgfile | get_logfile | firmware)
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.3.3
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.4.3
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.5.3
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.7.3
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.2.1.1.8.3
		
		;;

	mib2)
		$SNMPGET $1 $2 .1.3.6.1.2.1.1.4.0
		$SNMPGET $1 $2 .1.3.6.1.2.1.1.5.0
		$SNMPGET $1 $2 .1.3.6.1.2.1.1.6.0
		;;

	IPaddress)
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.3.3.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.2.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.3.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.4.0

		;;

	snmpTrap)
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.1.4.1.1.3
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.1.4.1.1.2

		;;

	rs232)
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.2.4.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.5.4.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.5.1.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.5.2.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.3.1.5.3.0
		;;

	autologout)
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.14.0
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.15.0
		;;

	portStatus)
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.2
		;;

	portCfg)
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.4
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.2.2.6.2.1.3

		;;

	portName)
		$SNMPWALK $1 $2 .1.3.6.1.2.1.31.1.1.1.18
		;;

	vlanCreate | vlanModify | vlanDelete)
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.5
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.1
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.2
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.3
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.3.1.4
		;;

	vlanMgmt)
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.5.0
		;;

	vlanPort)
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.1
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.2
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.3
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.4
		;;

	trunkCreate | trunkDelete)
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.1.3.1.2
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.1.3.1.4
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.1.3.1.5
		;;

	mirrorCreate | mirrorDelete)
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.2
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.3
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.4
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.2.2.1.5
		;;

	stp)
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.5.2.6.0
		$SNMPGET $1 $2 .1.3.6.1.2.1.17.2.12.0
		$SNMPGET $1 $2 .1.3.6.1.2.1.17.2.13.0
		$SNMPGET $1 $2 .1.3.6.1.2.1.17.2.14.0
		$SNMPGET $1 $2 .1.3.6.1.2.1.17.2.2.0
		;;

	stpPort)
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.2.15.1.4
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.2.15.1.2
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.2.15.1.5
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.2.2.8.1.1.2
		;;

	igmpCreate | igmpDelete)
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.7
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.2
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.3
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.4
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.3.2.3.3.1.6
		;;

	uniAddrFilter)
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.3.1.1.3
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.3.1.1.4
		;;

	multAddrFilter)
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.3.2.1.3
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.3.2.1.4
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.3.2.1.5
		;;

	gvrp)
		$SNMPGET $1 $2 .1.3.6.1.2.1.17.7.1.1.5.0
		;;

	gvrpPort)
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.7.1.4.5.1.4
		;;

	cos)
		$SNMPGET $1 $2 .1.3.6.1.4.1.232.161.2.2.3.1.0
		;;

	cosQueue)
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.2.2.3.2.1.2
		$SNMPWALK $1 $2 .1.3.6.1.4.1.232.161.2.2.3.2.1.3
		;;

	qos)
		$SNMPWALK $1 $2 .1.3.6.1.2.1.17.6.1.2.3.1.2
		;;

	*)
		usage
		;;
	esac

	done

	;;

*)
	usage
	;;
esac

echo Operation successful

myExit 0
