summaryrefslogtreecommitdiff
path: root/net-misc/htbinit
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /net-misc/htbinit
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.xz
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'net-misc/htbinit')
-rw-r--r--net-misc/htbinit/Manifest1
-rw-r--r--net-misc/htbinit/files/htb.init-v0.8.5_tos.patch51
-rw-r--r--net-misc/htbinit/files/htb.init_find_fix.patch33
-rw-r--r--net-misc/htbinit/files/htb_0.8.5_esfq.diff53
-rw-r--r--net-misc/htbinit/files/htb_0.8.5_ipv6.diff128
-rw-r--r--net-misc/htbinit/files/htbinit.rc47
-rw-r--r--net-misc/htbinit/files/prio_rule.patch20
-rw-r--r--net-misc/htbinit/files/timecheck_fix.patch42
-rw-r--r--net-misc/htbinit/htbinit-0.8.5-r6.ebuild61
-rw-r--r--net-misc/htbinit/metadata.xml21
10 files changed, 457 insertions, 0 deletions
diff --git a/net-misc/htbinit/Manifest b/net-misc/htbinit/Manifest
new file mode 100644
index 00000000000..85a10b2096f
--- /dev/null
+++ b/net-misc/htbinit/Manifest
@@ -0,0 +1 @@
+DIST htb.init-v0.8.5 32038 SHA256 acfda369dff72b9073a8b70f2b05b1397a61a1cdb23970e5ed216d632ff33586 SHA512 5f54f662e8b30c4efa6c8cac50eeddfec8650aa6f651065c0962c32067ca7ba17266d20860c296bac44d1f78caa50f6c948f3c55d468a76f9ce2069a43d3c6dd WHIRLPOOL e83c96c152f5e781e963585794df339d5b44fbbfdc3f9bf23defb3c37aa301e08b7324877c784411138ffa600c6ce3c3b45e3ae92ba3e274a09eeb05d2d12d05
diff --git a/net-misc/htbinit/files/htb.init-v0.8.5_tos.patch b/net-misc/htbinit/files/htb.init-v0.8.5_tos.patch
new file mode 100644
index 00000000000..a798508631d
--- /dev/null
+++ b/net-misc/htbinit/files/htb.init-v0.8.5_tos.patch
@@ -0,0 +1,51 @@
+--- htb.init.old 2005-03-15 14:56:08.328305288 +0200
++++ htb.init 2005-03-15 15:05:16.612953352 +0200
+@@ -240,6 +240,10 @@
+ # Maximum packet size HTB creates rate maps for. The default should
+ # be sufficient for most cases, it certainly is for Ethernet.
+ #
++# TOS=<number> optional, default "none"
++#
++# TOS field
++#
+ ### SFQ qdisc parameters
+ #
+ # The SFQ queueing discipline is a cheap way to fairly share class bandwidth
+@@ -435,6 +435,7 @@
+ HTB_CLASS="RATE\|CEIL\|BURST\|CBURST\|PRIO\|LEAF\|MTU"
+ HTB_CLASS="$HTB_CLASS\|PRIO_RULE\|PRIO_MARK\|PRIO_REALM"
+ HTB_CLASS="$HTB_CLASS\|LIMIT\|QUANTUM\|PERTURB"
++HTB_CLASS="$HTB_CLASS\|TOS"
+
+
+ #############################################################################
+@@ -646,7 +647,7 @@
+ ### Set defaults & load class
+ MTU=""; LEAF=none; PERTURB=10
+ RATE=""; BURST=""; CEIL=""; CBURST=""
+- PRIO=""; LIMIT=""; QUANTUM=""
++ PRIO=""; LIMIT=""; QUANTUM=""; TOS=""
+
+ PRIO_RULE=$PRIO_RULE_DEFAULT
+ PRIO_MARK=$PRIO_MARK_DEFAULT
+@@ -868,12 +869,19 @@
+ u32_d="${DPORT:+match ip dport $DPORT $DMASK}"
+ u32_d="${DADDR:+match ip dst $DADDR} $u32_d"
+
++
++ u32_tos=""
++ if [ -n "$TOS" ]; then
++ u32_tos="match ip tos $TOS 0xff"
++ fi
++
++
+ ### Uncomment the following if you want to see parsed rules
+ #echo "$rule: $u32_s $u32_d"
+
+ ### Attach u32 filter to the appropriate class
+ tc filter add dev $DEVICE parent 1:0 protocol ip \
+- prio $PRIO_RULE u32 $u32_s $u32_d classid 1:$CLASS
++ prio $PRIO_RULE u32 $u32_s $u32_d $u32_tos classid 1:$CLASS
+ done ### rule
+
+ [ "$1" = "compile" ] && echo
diff --git a/net-misc/htbinit/files/htb.init_find_fix.patch b/net-misc/htbinit/files/htb.init_find_fix.patch
new file mode 100644
index 00000000000..12222b3e32a
--- /dev/null
+++ b/net-misc/htbinit/files/htb.init_find_fix.patch
@@ -0,0 +1,33 @@
+--- htb.init.old 2004-01-29 22:41:23.000000000 +0100
++++ htb.init 2006-09-08 00:22:11.000000000 +0200
+@@ -468,8 +468,8 @@
+ ### List of classes in $HTB_PATH
+ htb_class_list () {
+ for dev in `htb_device_list`; do
+- find $HTB_PATH \( -type f -or -type l \) \
+- -name "$dev-*" -not -name '*~' -maxdepth 1 \
++ find $HTB_PATH -maxdepth 1 \( -type f -or -type l \) \
++ -name "$dev-*" -not -name '*~' \
+ -printf "%f\n"| sort
+ done
+ } # htb_class_list
+@@ -483,8 +483,8 @@
+ ### Validate cache against config files
+ htb_valid_cache () {
+ for dev in `htb_device_list`; do
+- [ `find $HTB_PATH \( -type f -or -type l \) \
+- -name "$dev*" -maxdepth 1 -newer $HTB_CACHE| \
++ [ `find $HTB_PATH -maxdepth 1 \( -type f -or -type l \) \
++ -name "$dev*" -newer $HTB_CACHE| \
+ wc -l` -gt 0 ] && VALID=0
+ [ $VALID -ne 1 ] && break
+ done
+@@ -493,7 +493,7 @@
+
+ ### Find class config for device $1, which is newer than cache
+ htb_cache_older () {
+- [ `find $HTB_PATH -type f -name "$1*" -maxdepth 1 \
++ [ `find $HTB_PATH -maxdepth 1 -type f -name "$1*" \
+ -newer $HTB_CACHE| wc -l` -gt 0 ] && return 0
+ return 1
+ } # htb_cache_older
diff --git a/net-misc/htbinit/files/htb_0.8.5_esfq.diff b/net-misc/htbinit/files/htb_0.8.5_esfq.diff
new file mode 100644
index 00000000000..3130f6868a4
--- /dev/null
+++ b/net-misc/htbinit/files/htb_0.8.5_esfq.diff
@@ -0,0 +1,53 @@
+--- htb.init.old 2004-01-29 22:41:23.000000000 +0100
++++ htb.init 2006-09-07 23:32:58.000000000 +0200
+@@ -226,7 +226,7 @@
+ # priority. Also, classes with higher priority are offered excess
+ # bandwidth first.
+ #
+-# LEAF=none|sfq|pfifo|bfifo optional, default "none"
++# LEAF=none|sfq|esfq|pfifo|bfifo optional, default "none"
+ #
+ # Tells the script to attach specified leaf queueing discipline to HTB
+ # class. By default, no leaf qdisc is used.
+@@ -261,6 +261,15 @@
+ # will never take place which is what you probably don't want. The
+ # default value of 10 seconds is probably a good value.
+ #
++### ESFQ qdisc parameters
++#
++# Same as SFQ and ...
++#
++# HASH=classic|src|dst
++#
++# src mean is fair per source IP
++# dsr mean is fair per destination IP
++#
+ ### PFIFO/BFIFO qdisc parameters
+ #
+ # Those are simple FIFO queueing disciplines. They only have one parameter
+@@ -427,14 +445,14 @@
+
+ ### Modules to probe for. Uncomment the last HTB_PROBE
+ ### line if you have QoS support compiled into kernel
+-HTB_PROBE="sch_htb sch_sfq cls_fw cls_u32 cls_route"
++HTB_PROBE="sch_htb sch_sfq sch_esfq cls_fw cls_u32 cls_route"
+ #HTB_PROBE=""
+
+ ### Config keywords
+ HTB_QDISC="DEFAULT\|DCACHE\|R2Q"
+ HTB_CLASS="RATE\|CEIL\|BURST\|CBURST\|PRIO\|LEAF\|MTU"
+ HTB_CLASS="$HTB_CLASS\|PRIO_RULE\|PRIO_MARK\|PRIO_REALM"
+-HTB_CLASS="$HTB_CLASS\|LIMIT\|QUANTUM\|PERTURB"
++HTB_CLASS="$HTB_CLASS\|LIMIT\|QUANTUM\|PERTURB\|HASH"
+ HTB_CLASS="$HTB_CLASS\|TOS"
+
+
+@@ -801,6 +819,8 @@
+ LEAFPARM="${PERTURB:+perturb $PERTURB} ${QUANTUM:+quantum $QUANTUM}"
+ elif [ "$LEAF" = "pfifo" -o "$LEAF" = "bfifo" ]; then
+ LEAFPARM="${LIMIT:+limit $LIMIT}"
++ elif [ "$LEAF" = "esfq" ]; then
++ LEAFPARM="${PERTURB:+perturb $PERTURB} ${QUANTUM:+quantum $QUANTUM} ${HASH:+hash $HASH}"
+ else
+ htb_fail_off "unknown leaf qdisc ($LEAF) in $classfile!"
+ fi
diff --git a/net-misc/htbinit/files/htb_0.8.5_ipv6.diff b/net-misc/htbinit/files/htb_0.8.5_ipv6.diff
new file mode 100644
index 00000000000..815f99545a6
--- /dev/null
+++ b/net-misc/htbinit/files/htb_0.8.5_ipv6.diff
@@ -0,0 +1,128 @@
+--- htb.init.old 2004-01-29 22:41:23.000000000 +0100
++++ htb.init 2006-09-07 23:32:58.000000000 +0200
+@@ -275,6 +284,7 @@
+ ### Filtering parameters
+ #
+ # RULE=[[saddr[/prefix]][:port[/mask]],][daddr[/prefix]][:port[/mask]]
++# RULEIPv6=[[saddr[/prefix]][_port[/mask]],][daddr[/prefix]][_port[/mask]]
+ #
+ # These parameters make up "u32" filter rules that select traffic for
+ # each of the classes. You can use multiple RULE fields per config.
+@@ -300,9 +310,13 @@
+ # RULE=10.5.5.5:80,
+ # selects traffic going from port 80 of single host 10.5.5.5
+ #
++# RULEIPv6=3ffe:80fe:c28:1:45d1:3a1:5e2b:e6c8
++# selects traffic going to IPv6 host 3ffe:80fe:c28:1:45d1:3a1:5e2b:e6c8
++#
+ #
+ #
+ # REALM=[srealm,][drealm]
++# REALMIPv6=[srealm,][drealm]
+ #
+ # These parameters make up "route" filter rules that classify traffic
+ # according to packet source/destination realms. For information about
+@@ -327,6 +341,7 @@
+ #
+ #
+ # MARK=<mark>
++# MARKIPv6=<mark>
+ #
+ # These parameters make up "fw" filter rules that select traffic for
+ # each of the classes accoring to firewall "mark". Mark is a decimal
+@@ -414,6 +429,9 @@
+ PRIO_RULE_DEFAULT=${PRIO_RULE:-100}
+ PRIO_MARK_DEFAULT=${PRIO_MARK:-200}
+ PRIO_REALM_DEFAULT=${PRIO_REALM:-300}
++PRIO_RULEIPv6=${PRIO_RULEIPv6:-150}
++PRIO_MARKIPv6=${PRIO_MARKIPv6:-250}
++PRIO_REALMIPv6=${PRIO_REALMIPv6:-350}
+
+ ### Default HTB_PATH & HTB_CACHE settings
+ HTB_PATH=${HTB_PATH:-/etc/sysconfig/htb}
+@@ -818,6 +838,13 @@
+ prio $PRIO_MARK handle $mark fw classid 1:$CLASS
+ done ### mark
+
++ ### Create fw filter for MARKIPv6 fields
++ for mark in `htb_cfile_rules MARKIPv6`; do
++ ### Attach fw filter to root class
++ tc filter add dev $DEVICE parent 1:0 protocol ipv6 \
++ prio $PRIO_MARKIPv6 handle $mark fw classid 1:$CLASS
++ done ### markipv6
++
+ ### Create route filter for REALM fields
+ for realm in `htb_cfile_rules REALM`; do
+ ### Split realm into source & destination realms
+@@ -833,6 +860,21 @@
+ ${DREALM:+to $DREALM} classid 1:$CLASS
+ done ### realm
+
++ ### Create route filter for REALMIPv6 fields
++ for realm in `htb_cfile_rules REALMIPv6`; do
++ ### Split realm into source & destination realms
++ SREALM=${realm%%,*}; DREALM=${realm##*,}
++ [ "$SREALM" = "$DREALM" ] && SREALM=""
++
++ ### Convert asterisks to empty strings
++ SREALM=${SREALM#\*}; DREALM=${DREALM#\*}
++
++ ### Attach route filter to the root class
++ tc filter add dev $DEVICE parent 1:0 protocol ipv6 \
++ prio $PRIO_REALM route ${SREALM:+from $SREALM} \
++ ${DREALM:+to $DREALM} classid 1:$CLASS
++ done ### realmipv6
++
+ ### Create u32 filter for RULE fields
+ for rule in `htb_cfile_rules RULE`; do
+ ### Split rule into source & destination
+@@ -876,6 +918,49 @@
+ prio $PRIO_RULE u32 $u32_s $u32_d classid 1:$CLASS
+ done ### rule
+
++ ### Create u32 filter for RULEIPv6 fields
++ for rule in `htb_cfile_rules RULEIPv6`; do
++ ### Split rule into source & destination
++ SRC=${rule%%,*}; DST=${rule##*,}
++ [ "$SRC" = "$rule" ] && SRC=""
++
++
++ ### Split destination into address, port & mask fields
++ DADDR=${DST%%_*}; DTEMP=${DST##*_}
++ [ "$DADDR" = "$DST" ] && DTEMP=""
++
++ DPORT=${DTEMP%%/*}; DMASK=${DTEMP##*/}
++ [ "$DPORT" = "$DTEMP" ] && DMASK="0xffff"
++
++
++ ### Split up source (if specified)
++ SADDR=""; SPORT=""
++ if [ -n "$SRC" ]; then
++ SADDR=${SRC%%_*}; STEMP=${SRC##*_}
++ [ "$SADDR" = "$SRC" ] && STEMP=""
++
++ SPORT=${STEMP%%/*}; SMASK=${STEMP##*/}
++ [ "$SPORT" = "$STEMP" ] && SMASK="0xffff"
++ fi
++
++
++ ### Convert asterisks to empty strings
++ SADDR=${SADDR#\*}; DADDR=${DADDR#\*}
++
++ ### Compose u32 filter rules
++ u32_s="${SPORT:+match ip6 sport $SPORT $SMASK}"
++ u32_s="${SADDR:+match ip6 src $SADDR} $u32_s"
++ u32_d="${DPORT:+match ip6 dport $DPORT $DMASK}"
++ u32_d="${DADDR:+match ip6 dst $DADDR} $u32_d"
++
++ ### Uncomment the following if you want to see parsed rules
++ #echo "$rule: $u32_s $u32_d"
++
++ ### Attach u32 filter to the appropriate class
++ tc filter add dev $DEVICE parent 1:0 protocol ipv6 \
++ prio $PRIO_RULEIPv6 u32 $u32_s $u32_d classid 1:$CLASS
++ done ### ruleipv6
++
+ [ "$1" = "compile" ] && echo
+ done ### classfile
+ ;;
diff --git a/net-misc/htbinit/files/htbinit.rc b/net-misc/htbinit/files/htbinit.rc
new file mode 100644
index 00000000000..7a27d58dd58
--- /dev/null
+++ b/net-misc/htbinit/files/htbinit.rc
@@ -0,0 +1,47 @@
+#!/sbin/runscript
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+extra_commands="stats list timecheck"
+extra_started_commands="reload"
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting htbinit"
+ /usr/sbin/htb.init start
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping htbinit"
+ /usr/sbin/htb.init stop
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading htbinit"
+ /usr/sbin/htb.init start invalidate
+ eend $?
+}
+
+stats() {
+ ebegin "Showing htbinit stats"
+ /usr/sbin/htb.init stats
+ eend $?
+}
+
+list() {
+ ebegin "Showing htbinit list"
+ /usr/sbin/htb.init list
+ eend $?
+}
+
+timecheck() {
+ ebegin "Showing htbinit timecheck"
+ /usr/sbin/htb.init timecheck
+ eend $?
+}
diff --git a/net-misc/htbinit/files/prio_rule.patch b/net-misc/htbinit/files/prio_rule.patch
new file mode 100644
index 00000000000..28471aabb84
--- /dev/null
+++ b/net-misc/htbinit/files/prio_rule.patch
@@ -0,0 +1,20 @@
+--- htb.init.old 2004-01-29 22:41:23.000000000 +0100
++++ htb.init 2006-09-08 00:03:32.000000000 +0200
+@@ -453,7 +457,7 @@
+ ### Load & filter file $HTB_PATH/$1
+ htb_filter_file () {
+ sed -n "s/#.*//; s/[^a-zA-Z0-9.,;:=/*-_]\+//g; \
+- /^[a-zA-Z0-9]\+=[a-zA-Z0-9.,:;/*-_]\+$/ p" $HTB_PATH/$1
++ /^[a-zA-Z0-9_]\+=[a-zA-Z0-9.,:;/*-_]\+$/ p" $HTB_PATH/$1
+ } # htb_filter_file
+
+
+@@ -517,7 +521,7 @@
+
+ htb_filter_file () {
+ sed 's/#.*//; s/[^a-zA-Z0-9.,;:=/*-_]\+//g' $HTB_PATH/$1 \
+- | grep '^[a-zA-Z0-9]\+=[a-zA-Z0-9.,;:/*-_]\+$'
++ | grep '^[a-zA-Z0-9_]\+=[a-zA-Z0-9.,;:/*-_]\+$'
+ } # htb_filter_file
+
+ htb_clsid_chain () {
diff --git a/net-misc/htbinit/files/timecheck_fix.patch b/net-misc/htbinit/files/timecheck_fix.patch
new file mode 100644
index 00000000000..de3791af997
--- /dev/null
+++ b/net-misc/htbinit/files/timecheck_fix.patch
@@ -0,0 +1,42 @@
+--- htb.init.old 2004-01-29 22:41:23.000000000 +0100
++++ htb.init 2006-09-08 00:11:36.000000000 +0200
+@@ -891,7 +895,6 @@
+ TIME_TMP=`date +%w/%k:%M`
+ TIME_DOW=${TIME_TMP%%/*}
+ TIME_NOW=${TIME_TMP##*/}
+-TIME_ABS=`htb_time2abs $TIME_NOW`
+
+ ### Check all classes (if configured)
+ for classfile in `htb_class_list`; do
+@@ -914,6 +917,7 @@
+ ### Compute interval boundaries
+ BEG_ABS=`htb_time2abs $BEG_TIME`
+ END_ABS=`htb_time2abs $END_TIME`
++ TIME_ABS=`htb_time2abs $TIME_NOW`
+
+ ### Midnight wrap fixup
+ if [ $BEG_ABS -gt $END_ABS ]; then
+@@ -926,6 +930,23 @@
+ ### If time period matches, remember params and set MATCH flag
+ if [ $TIME_ABS -ge $BEG_ABS -a $TIME_ABS -lt $END_ABS ]; then
+ RATESPEC=${PARAMS%%,*}; CEILSPEC=${PARAMS##*,}
++
++ RNAME=""; CNAME=""
++
++ [ "$RATESPEC" = "prate" ] && RNAME=RATE_$PARENT
++ [ "$RATESPEC" = "pceil" ] && RNAME=CEIL_$PARENT
++
++ if [ -n "$RNAME" ]; then
++ RATESPEC=${!RNAME}
++ fi
++
++ [ "$CEILSPEC" = "prate" ] && CNAME=RATE_$PARENT
++ [ "$CEILSPEC" = "pceil" ] && CNAME=CEIL_$PARENT
++
++ if [ -n "$CNAME" ]; then
++ CEILSPEC=${!CNAME}
++ fi
++
+ [ "$RATESPEC" = "$CEILSPEC" ] && CEILSPEC=""
+
+ NEW_RATE=${RATESPEC%%/*}; NEW_BURST=${RATESPEC##*/}
diff --git a/net-misc/htbinit/htbinit-0.8.5-r6.ebuild b/net-misc/htbinit/htbinit-0.8.5-r6.ebuild
new file mode 100644
index 00000000000..134522da5ed
--- /dev/null
+++ b/net-misc/htbinit/htbinit-0.8.5-r6.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit eutils linux-info
+
+DESCRIPTION="Sets up Hierachical Token Bucket based traffic control (QoS) with iproute2"
+HOMEPAGE="http://www.sourceforge.net/projects/htbinit"
+SRC_URI="mirror://sourceforge/htbinit/htb.init-v${PV}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~ppc x86"
+IUSE="ipv6 esfq"
+
+DEPEND="sys-apps/iproute2"
+RDEPEND="${DEPEND}"
+
+S=${WORKDIR}
+
+pkg_setup() {
+ for i in NET_SCH_HTB NET_SCH_SFQ NET_CLS_FW NET_CLS_U32 NET_CLS_ROUTE4 ; do
+ CONFIG_CHECK="${CONFIG_CHECK} ~${i}"
+ done
+ use esfq && CONFIG_CHECK="${CONFIG_CHECK} ~NET_SCH_ESFQ"
+ linux-info_pkg_setup
+}
+
+src_unpack() {
+ cp "${DISTDIR}"/htb.init-v${PV} "${S}"/htb.init || die
+}
+
+src_prepare() {
+ sed -i 's|/etc/sysconfig/htb|/etc/htb|g' "${S}"/htb.init
+ epatch "${FILESDIR}"/htb.init-v0.8.5_tos.patch
+ use ipv6 && epatch "${FILESDIR}"/htb_0.8.5_ipv6.diff
+ use esfq && epatch "${FILESDIR}"/htb_0.8.5_esfq.diff
+ epatch "${FILESDIR}"/prio_rule.patch
+ epatch "${FILESDIR}"/timecheck_fix.patch
+ epatch "${FILESDIR}"/htb.init_find_fix.patch
+ sed -i -e 's:/sbin/ip:/bin/ip:g' "${S}"/htb.init # bug #474700
+}
+
+src_compile() {
+ :
+}
+
+src_install() {
+ dosbin htb.init
+ newinitd "${FILESDIR}"/htbinit.rc htbinit
+ keepdir /etc/htb
+}
+
+pkg_postinst() {
+ if [[ -z ${REPLACING_VERSIONS} ]] ; then
+ elog 'Run "rc-update add htbinit default" to run htb.init at startup.'
+ elog 'Please, read carefully the htb.init documentation.'
+ elog 'New directory to store configuration is /etc/htb.'
+ fi
+}
diff --git a/net-misc/htbinit/metadata.xml b/net-misc/htbinit/metadata.xml
new file mode 100644
index 00000000000..dda213eb495
--- /dev/null
+++ b/net-misc/htbinit/metadata.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>maintainer-needed@gentoo.org</email>
+ </maintainer>
+ <longdescription>
+HTB.init is a shell script derived from CBQ.init that allows for easy setup of HTB-based traffic control on Linux. HTB (Hierachical Token Bucket) is a new queueing discipline which attempts to address the weaknesses of current CBQ implementation.
+</longdescription>
+ <longdescription lang="ja">
+HTB.init は、Linux 上で HTB を基盤にしたトラフィック・コントロールのセットアップを簡単にする
+CBQ.init に由来したシェル・スクリプトです。HTB (Hierachical Token Bucket) は現在の CBQ の実装の弱点に処置を講じる
+キューの新しい規律です。
+</longdescription>
+ <use>
+ <flag name="esfq">Add support for Enhanced Stochastic Fairness queueing discipline.</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">htbinit</remote-id>
+ </upstream>
+</pkgmetadata>