codel: Enable fq_codel on all devices.
authorMichael Tremer# <michael.tremer@ipfire.org>
Tue, 14 Aug 2012 13:44:19 +0000 (15:44 +0200)
committerMichael Tremer# <michael.tremer@ipfire.org>
Tue, 14 Aug 2012 13:44:19 +0000 (15:44 +0200)
Except loopback.

config/rootfiles/common/udev
config/udev/99-codel.rules [new file with mode: 0644]
config/udev/enable_codel [new file with mode: 0644]
lfs/udev

index 5e5cb5a0d8b9b2a9e2d8db4d01c32f3a548413ed..58df07cee369c530e81351195cb94f1a45b5c17b 100644 (file)
@@ -31,6 +31,7 @@ lib/udev
 #lib/udev/devices/stdin
 #lib/udev/devices/stdout
 #lib/udev/edd_id
+#lib/udev/enable_codel
 #lib/udev/firmware.sh
 #lib/udev/path_id
 #lib/udev/rules.d
@@ -43,6 +44,7 @@ lib/udev
 #lib/udev/rules.d/61-persistent-storage-edd.rules
 #lib/udev/rules.d/80-drivers.rules
 #lib/udev/rules.d/95-udev-late.rules
+#lib/udev/rules.d/99-codel.rules
 #lib/udev/scsi_id
 #lib/udev/usb_id
 #lib/udev/vol_id
diff --git a/config/udev/99-codel.rules b/config/udev/99-codel.rules
new file mode 100644 (file)
index 0000000..d6747ba
--- /dev/null
@@ -0,0 +1,2 @@
+# Call the enable codel script.
+SUBSYSTEM=="net", RUN+="/lib/udev/enable_codel"
diff --git a/config/udev/enable_codel b/config/udev/enable_codel
new file mode 100644 (file)
index 0000000..6cafd9b
--- /dev/null
@@ -0,0 +1,57 @@
+#!/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
index decdce8bbb5ab7df6c557ef5546b26002199988a..5b8b602737a5c7dcd4c0c719779ff1ac2364edcc 100644 (file)
--- a/lfs/udev
+++ b/lfs/udev
@@ -105,5 +105,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        chmod 755 /etc/udev/dvb.sh
        touch /etc/udev/rules.d/30-persistent-network.rules
        cp -vf $(DIR_SRC)/config/udev/blacklist /etc/modprobe.d/blacklist
+
+       # Install codel rules.
+       install -v -m 644 $(DIR_SRC)/config/udev/99-codel.rules \
+               /lib/udev/rules.d
+       install -m 755 $(DIR_SRC)/config/udev/enable_codel \
+               /lib/udev/enable_codel
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)