#!/bin/bash
############################################################################
#                                                                          #
# This file is part of the IPFire Firewall.                                #
#                                                                          #
# IPFire is free software; you can redistribute it and/or modify           #
# it under the terms of the GNU General Public License as published by     #
# the Free Software Foundation; either version 2 of the License, or        #
# (at your option) any later version.                                      #
#                                                                          #
# IPFire is distributed in the hope that it will be useful,                #
# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
# GNU General Public License for more details.                             #
#                                                                          #
# You should have received a copy of the GNU General Public License        #
# along with IPFire; if not, write to the Free Software                    #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
#                                                                          #
# Copyright (C) 2007-2012 IPFire Team <info@ipfire.org>.                   #
#                                                                          #
############################################################################

LOG_FACILITY="codel"

function log() {
	logger -t "${LOG_FACILITY}" $@
}

if [ -z "${INTERFACE}" ]; then
	echo "INTERFACE variable was not set." >&2
	exit 1
fi

# Do nothing for the loopback device.
[ "${INTERFACE}" = "lo" ] && exit 0

case "${ACTION}" in
	add|register)
		# Change root qdisc to use fq_codel.
		/sbin/tc qdisc add root dev ${INTERFACE} fq_codel
		ret=$?

		if [ ${ret} -eq 0 ]; then
			log "Codel AQM has been enabled on '${INTERFACE}'."
		else
			log "Codel AQM could not be enabled on '${INTERFACE}'. Error code: ${ret}"
			exit ${ret}
		fi
		;;

	remove|unregister)
		# Nothing to do here.
		;;
esac

exit 0
