-+iproute (980630-1) unstable; urgency=low
-+
-+ * New upstream version.
-+ * Build with 2.1.112 kernel headers.
-+ * Rewrote the rules file.
-+
-+ -- Roberto Lumbreras <rover@debian.org> Wed, 29 Jul 1998 23:37:52 +0200
-+
-+iproute (980119-1) unstable; urgency=low
-+
-+ * Outdated documentation. Upstream docs are scarce.
-+ * Non-Maintainer release
-+ * This package has no correct copyright file!
-+ * Include all the README.* docs from the upstream site.
-+ * Modified to build under glibc
-+ * Build with 2.1.85 kernel headers.
-+ * produce a correct diff.
-+ * Reworked the rules file to utilize debmake fully
-+ * Newest upstream release
-+ * glibc compilation
-+
-+ -- Christoph Lameter <christoph@lameter.com> Wed, 4 Feb 1998 13:37:28 -0800
-+
-+iproute (961225-2) unstable frozen; urgency=low
-+
-+ * Added a man page for iproute. (Fixes #8080).
-+ * Removed out-of-date patches.
-+ * Added routing.txt from /usr/src/linux/Documentation/networking/routing.txt
-+ * Newer version of debmake.
-+
-+ -- Tom Lees <tom@lpsg.demon.co.uk> Mon, 17 Apr 1997 17:00:36 +0100
-+
-+iproute (961225-1) unstable; urgency=low
-+
-+ * Initial Release.
-+
-+ -- Tom Lees <tom@lpsg.demon.co.uk> Mon, 30 Dec 1996 11:12:23 +0000
-+
-+Local variables:
-+mode: debian-changelog
-+End:
---- iproute-20071016.orig/debian/iproute.install
-+++ iproute-20071016/debian/iproute.install
-@@ -0,0 +1,8 @@
-+ip/ip /bin
-+ip/rtmon tc/tc misc/rtacct misc/ss /sbin
-+misc/lnstat misc/nstat /usr/bin/
-+ip/routef ip/routel /usr/bin
-+etc/* /etc
-+tc/*.so /usr/lib/tc
-+misc/arpd /usr/sbin
-+netem/*.dist /usr/lib/tc
---- iproute-20071016.orig/debian/patches/fix_ss_typo.dpatch
-+++ iproute-20071016/debian/patches/fix_ss_typo.dpatch
-@@ -0,0 +1,19 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## fix_ss_typo.dpatch by <formorer@lisa.springfield.lan>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad iproute-20070313~/man/man8/ss.8 iproute-20070313/man/man8/ss.8
-+--- iproute-20070313~/man/man8/ss.8 2007-03-13 22:50:56.000000000 +0100
-++++ iproute-20070313/man/man8/ss.8 2007-06-10 19:36:04.000000000 +0200
-+@@ -9,7 +9,7 @@
-+ is used to dump socket statistics. It allows showing information similar
-+ to
-+ .IR netstat .
-+-It can display more TCP information than state than other tools.
-++It can display more TCP and state informations than other tools.
-+
-+ .SH OPTIONS
-+ These programs follow the usual GNU command line syntax, with long
---- iproute-20071016.orig/debian/patches/00list
-+++ iproute-20071016/debian/patches/00list
-@@ -0,0 +1,12 @@
-+ip.8-typo
-+wrr-qdisc.dpatch
-+manpages-typo.dpatch
-+ip_address
-+tc_modules.dpatch
-+moo.dpatch
-+ip_route_usage.dpatch
-+tc_cbq_details_typo.dpatch
-+libnetlink_typo.dpatch
-+tcb_htb_typo.dpatch
-+fix_ss_typo.dpatch
-+remove_tc_filters_reference.dpatch
---- iproute-20071016.orig/debian/patches/libnetlink_typo.dpatch
-+++ iproute-20071016/debian/patches/libnetlink_typo.dpatch
-@@ -0,0 +1,19 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## libnetlink_typo.dpatch by <formorer@lisa.springfield.lan>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad iproute-20070313~/man/man3/libnetlink.3 iproute-20070313/man/man3/libnetlink.3
-+--- iproute-20070313~/man/man3/libnetlink.3 2007-03-13 22:50:56.000000000 +0100
-++++ iproute-20070313/man/man3/libnetlink.3 2007-06-10 19:28:30.000000000 +0200
-+@@ -187,7 +187,7 @@
-+ This library should be named librtnetlink.
-+
-+ .SH AUTHORS
-+-netlink/rtnetlink was designed and writen by Alexey Kuznetsov.
-++netlink/rtnetlink was designed and written by Alexey Kuznetsov.
-+ Andi Kleen wrote the man page.
-+
-+ .SH SEE ALSO
---- iproute-20071016.orig/debian/patches/add-metrics.diff
-+++ iproute-20071016/debian/patches/add-metrics.diff
-@@ -0,0 +1,97 @@
-+#! /bin/sh -e
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: show the \ really, see #285507
-+
-+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-+
-+if [ $# -ne 1 ]; then
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1
-+fi
-+case "$1" in
-+ -patch) patch $patch_opts -p1 < $0;;
-+ -unpatch) patch $patch_opts -p1 -R < $0;;
-+ *)
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1;;
-+esac
-+
-+exit 0
-+@DPATCH@
-+--- iproute-20010824/ip/iproute.c
-++++ iproute-20010824/ip/iproute.c
-+@@ -57,7 +57,7 @@
-+ fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n");
-+ fprintf(stderr, " [ rtt NUMBER ] [ rttvar NUMBER ]\n");
-+ fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ ssthresh REALM ]\n");
-+- fprintf(stderr, " [ realms REALM ]\n");
-++ fprintf(stderr, " [ realms REALM ] [ hoplimit NUMBER ] [ initcwnd NUMBER ]\n");
-+ fprintf(stderr, "TYPE := [ unicast | local | broadcast | multicast | throw |\n");
-+ fprintf(stderr, " unreachable | prohibit | blackhole | nat ]\n");
-+ fprintf(stderr, "TABLE_ID := [ local | main | default | all | NUMBER ]\n");
-+@@ -481,6 +481,8 @@
-+ "cwnd",
-+ "advmss",
-+ "reordering",
-++ "hoplimit",
-++ "initcwnd",
-+ };
-+ static int hz;
-+ if (mxrta[i] == NULL)
-+@@ -750,6 +752,30 @@
-+ invarg("\"reordering\" value is invalid\n", *argv);
-+ rta_addattr32(mxrta, sizeof(mxbuf), RTAX_REORDERING, reord);
-+ #endif
-++#ifdef RTAX_HOPLIMIT
-++ } else if (strcmp(*argv, "hoplimit") == 0) {
-++ unsigned hoplim;
-++ NEXT_ARG();
-++ if (strcmp(*argv, "lock") == 0) {
-++ mxlock |= (1<<RTAX_HOPLIMIT);
-++ NEXT_ARG();
-++ }
-++ if (get_unsigned(&hoplim, *argv, 0))
-++ invarg("\"hoplimit\" value is invalid\n", *argv);
-++ rta_addattr32(mxrta, sizeof(mxbuf), RTAX_HOPLIMIT, hoplim);
-++#endif
-++#ifdef RTAX_INITCWND
-++ } else if (strcmp(*argv, "initcwnd") == 0) {
-++ unsigned initcwnd;
-++ NEXT_ARG();
-++ if (strcmp(*argv, "lock") == 0) {
-++ mxlock |= (1<<RTAX_HOPLIMIT);
-++ NEXT_ARG();
-++ }
-++ if (get_unsigned(&initcwnd, *argv, 0))
-++ invarg("\"initcwnd\" value is invalid\n", *argv);
-++ rta_addattr32(mxrta, sizeof(mxbuf), RTAX_INITCWND, initcwnd);
-++#endif
-+ } else if (strcmp(*argv, "rtt") == 0) {
-+ unsigned rtt;
-+ NEXT_ARG();
-+--- iproute-20010824.orig/doc/ip-cref.tex
-++++ iproute-20010824/doc/ip-cref.tex
-+@@ -1324,2 +1324,15 @@
-+
-++\item \verb|hoplimit NUMBER|
-++
-++--- [2.5.74+ only] Hop limit on the path to this destination. If it is not
-++ given, Linux uses the value selected with \verb|sysctl| variable
-++ \verb|net/ipv4/ip_default_ttl|.
-++
-++\item \verb|initcwnd NUMBER|
-++
-++--- [2.5.70+ only] Initial congestion window size when establishing
-++ connections to this destination. This value is multiplied with the
-++ MSS (``Maximal Segment Size'') for the connection to get the actual
-++ window size. If it is not given (or set to zero), Linux uses the
-++ values specified in~\cite{RFC2414}.
-+
-+@@ -2653,2 +2666,5 @@
-+
-++\bibitem{RFC2414} M.~Allman, S.~Floyd, C.~Partridge.
-++``Increasing TCP's Initial Window'', RFC-2414.
-++
-+ \end{thebibliography}
---- iproute-20071016.orig/debian/patches/esfq-support.dpatch
-+++ iproute-20071016/debian/patches/esfq-support.dpatch
-@@ -0,0 +1,284 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## esfq-support.dpatch by Alexander Wirt <formorer@debian.org>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad iproute-20060323~/tc/Makefile iproute-20060323/tc/Makefile
-+--- iproute-20060323~/tc/Makefile 2006-09-08 18:57:26.000000000 +0200
-++++ iproute-20060323/tc/Makefile 2006-09-08 18:57:54.000000000 +0200
-+@@ -7,6 +7,7 @@
-+ TCMODULES :=
-+ TCMODULES += q_fifo.o
-+ TCMODULES += q_sfq.o
-++TCMODULES += q_esfq.o
-+ TCMODULES += q_red.o
-+ TCMODULES += q_prio.o
-+ TCMODULES += q_tbf.o
-+diff -urNad iproute-20060323~/tc/Makefile.orig iproute-20060323/tc/Makefile.orig
-+--- iproute-20060323~/tc/Makefile.orig 1970-01-01 01:00:00.000000000 +0100
-++++ iproute-20060323/tc/Makefile.orig 2006-09-08 18:57:26.000000000 +0200
-+@@ -0,0 +1,89 @@
-++TCOBJ= tc.o tc_qdisc.o tc_class.o tc_filter.o tc_util.o \
-++ m_police.o m_estimator.o m_action.o m_ematch.o \
-++ emp_ematch.yacc.o emp_ematch.lex.o
-++
-++include ../Config
-++
-++TCMODULES :=
-++TCMODULES += q_fifo.o
-++TCMODULES += q_sfq.o
-++TCMODULES += q_red.o
-++TCMODULES += q_prio.o
-++TCMODULES += q_tbf.o
-++TCMODULES += q_cbq.o
-++TCMODULES += f_rsvp.o
-++TCMODULES += f_u32.o
-++TCMODULES += f_route.o
-++TCMODULES += f_fw.o
-++TCMODULES += f_basic.o
-++TCMODULES += q_dsmark.o
-++TCMODULES += q_gred.o
-++TCMODULES += f_tcindex.o
-++TCMODULES += q_ingress.o
-++TCMODULES += q_hfsc.o
-++TCMODULES += q_htb.o
-++TCMODULES += m_gact.o
-++TCMODULES += m_mirred.o
-++TCMODULES += m_ipt.o
-++TCMODULES += m_pedit.o
-++TCMODULES += p_ip.o
-++TCMODULES += p_icmp.o
-++TCMODULES += p_tcp.o
-++TCMODULES += p_udp.o
-++TCMODULES += em_nbyte.o
-++TCMODULES += em_cmp.o
-++TCMODULES += em_u32.o
-++TCMODULES += em_meta.o
-++
-++TCOBJ += $(TCMODULES)
-++
-++TCLIB := tc_core.o
-++TCLIB += tc_red.o
-++TCLIB += tc_cbq.o
-++TCLIB += tc_estimator.o
-++
-++CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PROB
-++
-++TCSO :=
-++TCSO += q_netem.so
-++ifeq ($(TC_CONFIG_ATM),y)
-++ TCSO += q_atm.so
-++endif
-++
-++LDLIBS += -L. -ltc -lm -ldl
-++
-++LDFLAGS += -Wl,-export-dynamic
-++
-++YACC := bison
-++LEX := flex
-++
-++%.so: %.c
-++ $(CC) $(CFLAGS) -shared -fpic $< -o $@
-++
-++
-++all: libtc.a tc $(TCSO)
-++
-++tc: $(TCOBJ) $(LIBNETLINK) $(LIBUTIL) $(TCLIB)
-++
-++libtc.a: $(TCLIB)
-++ $(AR) rcs $@ $(TCLIB)
-++
-++install: all
-++ mkdir -p $(DESTDIR)/usr/lib/tc
-++ install -m 0755 -s tc $(DESTDIR)$(SBINDIR)
-++ for i in $(TCSO); \
-++ do install -m 755 -s $$i $(DESTDIR)/usr/lib/tc; \
-++ done
-++
-++clean:
-++ rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.yacc.h; \
-++ rm -f emp_ematch.yacc.output
-++
-++q_atm.so: q_atm.c
-++ $(CC) $(CFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm
-++
-++%.yacc.c: %.y
-++ $(YACC) $(YACCFLAGS) -o $@ $<
-++
-++%.lex.c: %.l
-++ $(LEX) $(LEXFLAGS) -o$@ $<
-+diff -urNad iproute-20060323~/tc/q_esfq.c iproute-20060323/tc/q_esfq.c
-+--- iproute-20060323~/tc/q_esfq.c 1970-01-01 01:00:00.000000000 +0100
-++++ iproute-20060323/tc/q_esfq.c 2006-09-08 18:57:54.000000000 +0200
-+@@ -0,0 +1,169 @@
-++/*
-++ * q_esfq.c ESFQ.
-++ *
-++ * This program 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.
-++ *
-++ * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
-++ *
-++ * Changes: Alexander Atanasov, <alex@ssi.bg>
-++ * Added depth,limit,divisor,hash_kind options.
-++ */
-++
-++#include <stdio.h>
-++#include <stdlib.h>
-++#include <unistd.h>
-++#include <syslog.h>
-++#include <fcntl.h>
-++#include <math.h>
-++#include <sys/socket.h>
-++#include <netinet/in.h>
-++#include <arpa/inet.h>
-++#include <string.h>
-++
-++#include "utils.h"
-++#include "tc_util.h"
-++
-++static void explain(void)
-++{
-++ fprintf(stderr, "Usage: ... esfq [ perturb SECS ] [ quantum BYTES ] [ depth FLOWS ]\n\t[ divisor HASHBITS ] [ limit PKTS ] [ hash HASHTYPE]\n");
-++ fprintf(stderr,"Where: \n");
-++ fprintf(stderr,"HASHTYPE := { classic | src | dst }\n");
-++}
-++
-++#define usage() return(-1)
-++
-++static int esfq_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n)
-++{
-++ int ok=0;
-++ struct tc_sfq_qopt opt;
-++
-++ memset(&opt, 0, sizeof(opt));
-++
-++ opt.hash_kind= TCA_SFQ_HASH_CLASSIC;
-++
-++ while (argc > 0) {
-++ if (strcmp(*argv, "quantum") == 0) {
-++ NEXT_ARG();
-++ if (get_size(&opt.quantum, *argv)) {
-++ fprintf(stderr, "Illegal \"quantum\"\n");
-++ return -1;
-++ }
-++ ok++;
-++ } else if (strcmp(*argv, "perturb") == 0) {
-++ NEXT_ARG();
-++ if (get_integer(&opt.perturb_period, *argv, 0)) {
-++ fprintf(stderr, "Illegal \"perturb\"\n");
-++ return -1;
-++ }
-++ ok++;
-++ } else if (strcmp(*argv, "depth") == 0) {
-++ NEXT_ARG();
-++ if (get_integer(&opt.flows, *argv, 0)) {
-++ fprintf(stderr, "Illegal \"depth\"\n");
-++ return -1;
-++ }
-++ ok++;
-++ } else if (strcmp(*argv, "divisor") == 0) {
-++ NEXT_ARG();
-++ if (get_integer(&opt.divisor, *argv, 0)) {
-++ fprintf(stderr, "Illegal \"divisor\"\n");
-++ return -1;
-++ }
-++ if(opt.divisor >= 15) {
-++ fprintf(stderr, "Illegal \"divisor\" must be < 15\n");
-++ return -1;
-++ }
-++ opt.divisor=pow(2,opt.divisor);
-++ ok++;
-++ } else if (strcmp(*argv, "limit") == 0) {
-++ NEXT_ARG();
-++ if (get_integer(&opt.limit, *argv, 0)) {
-++ fprintf(stderr, "Illegal \"limit\"\n");
-++ return -1;
-++ }
-++ ok++;
-++ } else if (strcmp(*argv, "hash") == 0) {
-++ NEXT_ARG();
-++ if(strcmp(*argv,"classic") == 0) {
-++ opt.hash_kind= TCA_SFQ_HASH_CLASSIC;
-++ } else
-++ if(strcmp(*argv,"dst") == 0) {
-++ opt.hash_kind= TCA_SFQ_HASH_DST;
-++ } else
-++ if(strcmp(*argv,"src") == 0) {
-++ opt.hash_kind= TCA_SFQ_HASH_SRC;
-++ } else {
-++ fprintf(stderr, "Illegal \"hash\"\n");
-++ explain();
-++ return -1;
-++ }
-++ ok++;
-++ } else if (strcmp(*argv, "help") == 0) {
-++ explain();
-++ return -1;
-++ } else {
-++ fprintf(stderr, "What is \"%s\"?\n", *argv);
-++ explain();
-++ return -1;
-++ }
-++ argc--; argv++;
-++ }
-++
-++ if (ok)
-++ addattr_l(n, 1024, TCA_OPTIONS, &opt, sizeof(opt));
-++ return 0;
-++}
-++
-++static int esfq_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
-++{
-++ struct tc_sfq_qopt *qopt;
-++ SPRINT_BUF(b1);
-++
-++ if (opt == NULL)
-++ return 0;
-++
-++ if (RTA_PAYLOAD(opt) < sizeof(*qopt))
-++ return -1;
-++ qopt = RTA_DATA(opt);
-++ fprintf(f, "quantum %s ", sprint_size(qopt->quantum, b1));
-++ if (show_details) {
-++ fprintf(f, "limit %up flows %u/%u ",
-++ qopt->limit, qopt->flows, qopt->divisor);
-++ }
-++ if (qopt->perturb_period)
-++ fprintf(f, "perturb %dsec ", qopt->perturb_period);
-++
-++ fprintf(f,"hash: ");
-++ switch(qopt->hash_kind)
-++ {
-++ case TCA_SFQ_HASH_CLASSIC:
-++ fprintf(f,"classic");
-++ break;
-++ case TCA_SFQ_HASH_DST:
-++ fprintf(f,"dst");
-++ break;
-++ case TCA_SFQ_HASH_SRC:
-++ fprintf(f,"src");
-++ break;
-++ default:
-++ fprintf(f,"Unknown");
-++ }
-++ return 0;
-++}
-++
-++static int esfq_print_xstats(struct qdisc_util *qu, FILE *f, struct rtattr *xstats)
-++{
-++ return 0;
-++}
-++
-++
-++struct qdisc_util esfq_util = {
-++ NULL,
-++ "esfq",
-++ esfq_parse_opt,
-++ esfq_print_opt,
-++ esfq_print_xstats,
-++};
---- iproute-20071016.orig/debian/patches/wrr-qdisc.dpatch
-+++ iproute-20071016/debian/patches/wrr-qdisc.dpatch
-@@ -0,0 +1,479 @@
-+#! /bin/sh -e
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: add the wrr qdisc scheduler, see #198414
-+
-+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-+
-+if [ $# -ne 1 ]; then
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1
-+fi
-+case "$1" in
-+ -patch) patch $patch_opts -p1 < $0;;
-+ -unpatch) patch $patch_opts -p1 -R < $0;;
-+ *)
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1;;
-+esac
-+
-+exit 0
-+@DPATCH@
-+diff -urNad pkg-iproute~/include/linux/pkt_sched.h pkg-iproute/include/linux/pkt_sched.h
-+--- pkg-iproute~/include/linux/pkt_sched.h 2007-10-24 16:36:41.000000000 +0200
-++++ pkg-iproute/include/linux/pkt_sched.h 2007-10-24 16:36:56.000000000 +0200
-+@@ -475,4 +475,116 @@
-+
-+ #define NETEM_DIST_SCALE 8192
-+
-++/* WRR section */
-++
-++/* Other includes */
-++#include <linux/if_ether.h>
-++
-++// A sub weight and of a class
-++// All numbers are represented as parts of (2^64-1).
-++struct tc_wrr_class_weight {
-++ __u64 val; // Current value (0 is not valid)
-++ __u64 decr; // Value pr bytes (2^64-1 is not valid)
-++ __u64 incr; // Value pr seconds (2^64-1 is not valid)
-++ __u64 min; // Minimal value (0 is not valid)
-++ __u64 max; // Minimal value (0 is not valid)
-++
-++// The time where the above information was correct:
-++ time_t tim;
-++};
-++
-++// Packet send when modifying a class:
-++struct tc_wrr_class_modf {
-++ // Not-valid values are ignored.
-++ struct tc_wrr_class_weight weight1;
-++ struct tc_wrr_class_weight weight2;
-++};
-++
-++// Packet returned when quering a class:
-++struct tc_wrr_class_stats {
-++ char used; // If this is false the information below is invalid
-++
-++ struct tc_wrr_class_modf class_modf;
-++
-++ unsigned char addr[ETH_ALEN];
-++ char usemac; // True if addr is a MAC address, else it is an IP address
-++ // (this value is only for convience, it is always the same
-++ // value as in the qdisc)
-++ int heappos; // Current heap position or 0 if not in heap
-++ __u64 penal_ls; // Penalty value in heap (ls)
-++ __u64 penal_ms; // Penalty value in heap (ms)
-++};
-++
-++// Qdisc-wide penalty information (boolean values - 2 not valid)
-++struct tc_wrr_qdisc_weight {
-++ char weight_mode; // 0=No automatic change to weight
-++ // 1=Decrease normally
-++ // 2=Also multiply with number of machines
-++ // 3=Instead multiply with priority divided
-++ // with priority of the other.
-++ // -1=no change
-++};
-++
-++// Packet send when modifing a qdisc:
-++struct tc_wrr_qdisc_modf {
-++ // Not-valid values are ignored:
-++ struct tc_wrr_qdisc_weight weight1;
-++ struct tc_wrr_qdisc_weight weight2;
-++};
-++
-++// Packet send when creating a qdisc:
-++struct tc_wrr_qdisc_crt {
-++ struct tc_wrr_qdisc_modf qdisc_modf;
-++
-++ char srcaddr; // 1=lookup source, 0=lookup destination
-++ char usemac; // 1=Classify on MAC addresses, 0=classify on IP
-++ char usemasq; // 1=Classify based on masqgrading - only valid
-++ // if usemac is zero
-++ int bands_max; // Maximal number of bands (i.e.: classes)
-++ int proxy_maxconn;// If differnt from 0 then we support proxy remapping
-++ // of packets. And this is the number of maximal
-++ // concurrent proxy connections.
-++};
-++
-++// Packet returned when quering a qdisc:
-++struct tc_wrr_qdisc_stats {
-++ struct tc_wrr_qdisc_crt qdisc_crt;
-++ int proxy_curconn;
-++ int nodes_in_heap; // Current number of bands wanting to send something
-++ int bands_cur; // Current number of bands used (i.e.: MAC/IP addresses seen)
-++ int bands_reused; // Number of times this band has been reused.
-++ int packets_requed; // Number of times packets have been requeued.
-++ __u64 priosum; // Sum of priorities in heap where 1 is 2^32
-++};
-++
-++struct tc_wrr_qdisc_modf_std {
-++ // This indicates which of the tc_wrr_qdisc_modf structers this is:
-++ char proxy; // 0=This struct
-++
-++ // Should we also change a class?
-++ char change_class;
-++
-++ // Only valid if change_class is false
-++ struct tc_wrr_qdisc_modf qdisc_modf;
-++
-++ // Only valid if change_class is true:
-++ unsigned char addr[ETH_ALEN]; // Class to change (non-used bytes should be 0)
-++ struct tc_wrr_class_modf class_modf; // The change
-++};
-++
-++// Used for proxyrempping:
-++struct tc_wrr_qdisc_modf_proxy {
-++ // This indicates which of the tc_wrr_qdisc_modf structers this is:
-++ char proxy; // 1=This struct
-++
-++ // This is 1 if the proxyremap information should be reset
-++ char reset;
-++
-++ // changec is the number of elements in changes.
-++ int changec;
-++
-++ // This is an array of type ProxyRemapBlock:
-++ long changes[0];
-++};
-++
-+ #endif
-+diff -urNad pkg-iproute~/tc/Makefile pkg-iproute/tc/Makefile
-+--- pkg-iproute~/tc/Makefile 2007-10-24 16:36:12.000000000 +0200
-++++ pkg-iproute/tc/Makefile 2007-10-24 16:37:24.000000000 +0200
-+@@ -11,6 +11,7 @@
-+ TCMODULES += q_prio.o
-+ TCMODULES += q_tbf.o
-+ TCMODULES += q_cbq.o
-++TCMODULES += q_wrr.o
-+ TCMODULES += q_rr.o
-+ TCMODULES += q_netem.o
-+ TCMODULES += f_rsvp.o
-+diff -urNad pkg-iproute~/tc/q_wrr.c pkg-iproute/tc/q_wrr.c
-+--- pkg-iproute~/tc/q_wrr.c 1970-01-01 01:00:00.000000000 +0100
-++++ pkg-iproute/tc/q_wrr.c 2007-10-24 16:36:56.000000000 +0200
-+@@ -0,0 +1,322 @@
-++#include <stdio.h>
-++#include <stdlib.h>
-++#include <unistd.h>
-++#include <syslog.h>
-++#include <fcntl.h>
-++#include <sys/socket.h>
-++#include <netinet/in.h>
-++#include <arpa/inet.h>
-++#include <string.h>
-++#include <math.h>
-++
-++#include "utils.h"
-++#include "tc_util.h"
-++
-++#define usage() return(-1)
-++
-++// Returns -1 on error
-++static int wrr_parse_qdisc_weight(int argc, char** argv,
-++ struct tc_wrr_qdisc_modf* opt) {
-++ int i;
-++
-++ opt->weight1.weight_mode=-1;
-++ opt->weight2.weight_mode=-1;
-++
-++ for(i=0; i<argc; i++) {
-++ if(!memcmp(argv[i],"wmode1=",7)) {
-++ opt->weight1.weight_mode=atoi(argv[i]+7);
-++ } else if(!memcmp(argv[i],"wmode2=",7)) {
-++ opt->weight2.weight_mode=atoi(argv[i]+7);
-++ } else {
-++ printf("Usage: ... [wmode1=0|1|2|3] [wmode2=0|1|2|3]\n");
-++ return -1;
-++ }
-++ }
-++ return 0;
-++}
-++
-++static int wrr_parse_class_modf(int argc, char** argv,
-++ struct tc_wrr_class_modf* modf) {
-++ int i;
-++
-++ if(argc<1) {
-++ fprintf(stderr, "Usage: ... [weight1=val] [decr1=val] [incr1=val] [min1=val] [max1=val] [val2=val] ...\n");
-++ fprintf(stderr, " The values can be floating point like 0.42 or divisions like 42/100\n");
-++ return -1;
-++ }
-++
-++ // Set meaningless values:
-++ modf->weight1.val=0;
-++ modf->weight1.decr=(__u64)-1;
-++ modf->weight1.incr=(__u64)-1;
-++ modf->weight1.min=0;
-++ modf->weight1.max=0;
-++ modf->weight2.val=0;
-++ modf->weight2.decr=(__u64)-1;
-++ modf->weight2.incr=(__u64)-1;
-++ modf->weight2.min=0;
-++ modf->weight2.max=0;
-++
-++ // And read values:
-++ for(i=0; i<argc; i++) {
-++ char arg[80];
-++ char* name,*value1=0,*value2=0;
-++ long double f_val1,f_val2=1,value;
-++ if(strlen(argv[i])>=sizeof(arg)) {
-++ fprintf(stderr,"Argument too long: %s\n",argv[i]);
-++ return -1;
-++ }
-++ strcpy(arg,argv[i]);
-++
-++ name=strtok(arg,"=");
-++ if(name) value1=strtok(0,"/");
-++ if(value1) value2=strtok(0,"");
-++
-++ if(!value1) {
-++ fprintf(stderr,"No = found in argument: %s\n",argv[i]);
-++ return -1;
-++ }
-++
-++ f_val1=atof(value1);
-++ if(value2) f_val2=atof(value2);
-++
-++ if(f_val2==0) {
-++ fprintf(stderr,"Division by 0\n");
-++ return -1;
-++ }
-++
-++ value=f_val1/f_val2;
-++ if(value>1) value=1;
-++ if(value<0) value=0;
-++ value*=((__u64)-1);
-++
-++ // And find the value set
-++ if(!strcmp(name,"weight1")) modf->weight1.val=value;
-++ else if(!strcmp(name,"decr1")) modf->weight1.decr=value;
-++ else if(!strcmp(name,"incr1")) modf->weight1.incr=value;
-++ else if(!strcmp(name,"min1")) modf->weight1.min=value;
-++ else if(!strcmp(name,"max1")) modf->weight1.max=value;
-++ else if(!strcmp(name,"weight2")) modf->weight2.val=value;
-++ else if(!strcmp(name,"decr2")) modf->weight2.decr=value;
-++ else if(!strcmp(name,"incr2")) modf->weight2.incr=value;
-++ else if(!strcmp(name,"min2")) modf->weight2.min=value;
-++ else if(!strcmp(name,"max2")) modf->weight2.max=value;
-++ else {
-++ fprintf(stderr,"illegal value: %s\n",name);
-++ return -1;
-++ }
-++ }
-++
-++ return 0;
-++}
-++
-++static int wrr_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n)
-++{
-++ if(n->nlmsg_flags & NLM_F_CREATE) {
-++ // This is a create request:
-++ struct tc_wrr_qdisc_crt opt;
-++
-++ int sour,dest,ip,mac,masq;
-++
-++ if(argc<4) {
-++ fprintf(stderr, "Usage: ... wrr sour|dest ip|masq|mac maxclasses proxymaxcon [penalty-setup]\n");
-++ return -1;
-++ }
-++
-++ // Read sour/dest:
-++ memset(&opt,0,sizeof(opt));
-++ sour=!strcmp(argv[0],"sour");
-++ dest=!strcmp(argv[0],"dest");
-++
-++ if(!sour && !dest) {
-++ fprintf(stderr,"sour or dest must be specified\n");
-++ return -1;
-++ }
-++
-++ // Read ip/mac
-++ ip=!strcmp(argv[1],"ip");
-++ mac=!strcmp(argv[1],"mac");
-++ masq=!strcmp(argv[1],"masq");
-++
-++ if(!ip && !mac && !masq) {
-++ fprintf(stderr,"ip, masq or mac must be specified\n");
-++ return -1;
-++ }
-++
-++ opt.srcaddr=sour;
-++ opt.usemac=mac;
-++ opt.usemasq=masq;
-++ opt.bands_max=atoi(argv[2]);
-++
-++ opt.proxy_maxconn=atoi(argv[3]);
-++
-++ // Read weights:
-++ if(wrr_parse_qdisc_weight(argc-4,argv+4,&opt.qdisc_modf)<0) return -1;
-++ if(opt.qdisc_modf.weight1.weight_mode==-1) opt.qdisc_modf.weight1.weight_mode=0;
-++ if(opt.qdisc_modf.weight2.weight_mode==-1) opt.qdisc_modf.weight2.weight_mode=0;
-++
-++ addattr_l(n, 1024, TCA_OPTIONS, &opt, sizeof(opt));
-++ } else {
-++ struct tc_wrr_qdisc_modf_std opt;
-++ char qdisc,class;
-++
-++ // This is a modify request:
-++ if(argc<1) {
-++ fprintf(stderr,"... qdisc ... or ... class ...\n");
-++ return -1;
-++ }
-++
-++ qdisc=!strcmp(argv[0],"qdisc");
-++ class=!strcmp(argv[0],"class");
-++
-++ if(!qdisc && !class) {
-++ fprintf(stderr,"qdisc or class must be specified\n");
-++ return -1;
-++ }
-++
-++ argc--;
-++ argv++;
-++
-++ opt.proxy=0;
-++
-++ if(qdisc) {
-++ opt.change_class=0;
-++ if(wrr_parse_qdisc_weight(argc, argv, &opt.qdisc_modf)<0) return -1;
-++ } else {
-++ int a0,a1,a2,a3,a4=0,a5=0;
-++
-++ opt.change_class=1;
-++
-++ if(argc<1) {
-++ fprintf(stderr,"... <mac>|<ip>|<masq> ...\n");
-++ return -1;
-++ }
-++ memset(opt.addr,0,sizeof(opt.addr));
-++
-++ if((sscanf(argv[0],"%i.%i.%i.%i",&a0,&a1,&a2,&a3)!=4) &&
-++ (sscanf(argv[0],"%x:%x:%x:%x:%x:%x",&a0,&a1,&a2,&a3,&a4,&a5)!=6)) {
-++ fprintf(stderr,"Wrong format of mac or ip address\n");
-++ return -1;
-++ }
-++
-++ opt.addr[0]=a0; opt.addr[1]=a1; opt.addr[2]=a2;
-++ opt.addr[3]=a3; opt.addr[4]=a4; opt.addr[5]=a5;
-++
-++ if(wrr_parse_class_modf(argc-1, argv+1, &opt.class_modf)<0) return -1;
-++ }
-++
-++ addattr_l(n, 1024, TCA_OPTIONS, &opt, sizeof(opt));
-++ }
-++ return 0;
-++}
-++
-++static int wrr_parse_copt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n) {
-++ struct tc_wrr_class_modf opt;
-++
-++ memset(&opt,0,sizeof(opt));
-++ if(wrr_parse_class_modf(argc,argv,&opt)<0) return -1;
-++
-++ addattr_l(n, 1024, TCA_OPTIONS, &opt, sizeof(opt));
-++ return 0;
-++}
-++
-++static int wrr_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
-++{
-++ struct tc_wrr_qdisc_stats *qopt;
-++
-++ if (opt == NULL)
-++ return 0;
-++
-++ if (RTA_PAYLOAD(opt) < sizeof(*qopt))
-++ return -1;
-++ qopt = RTA_DATA(opt);
-++
-++ fprintf(f,"\n (%s/%s) (maxclasses %i) (usedclasses %i) (reused classes %i)\n",
-++ qopt->qdisc_crt.srcaddr ? "sour" : "dest",
-++ qopt->qdisc_crt.usemac ? "mac" : (qopt->qdisc_crt.usemasq ? "masq" : "ip"),
-++ qopt->qdisc_crt.bands_max,
-++ qopt->bands_cur,
-++ qopt->bands_reused
-++ );
-++
-++ if(qopt->qdisc_crt.proxy_maxconn) {
-++ fprintf(f," (proxy maxcon %i) (proxy curcon %i)\n",
-++ qopt->qdisc_crt.proxy_maxconn,qopt->proxy_curconn);
-++ }
-++
-++ fprintf(f," (waiting classes %i) (packets requeued %i) (priosum: %Lg)\n",
-++ qopt->nodes_in_heap,
-++ qopt->packets_requed,
-++ qopt->priosum/((long double)((__u32)-1))
-++ );
-++
-++ fprintf(f," (wmode1 %i) (wmode2 %i) \n",
-++ qopt->qdisc_crt.qdisc_modf.weight1.weight_mode,
-++ qopt->qdisc_crt.qdisc_modf.weight2.weight_mode);
-++
-++ return 0;
-++}
-++
-++static int wrr_print_copt(struct qdisc_util *qu, FILE *f, struct rtattr *opt) {
-++ struct tc_wrr_class_stats *copt;
-++ long double d=(__u64)-1;
-++
-++ if (opt == NULL) return 0;
-++
-++ if (RTA_PAYLOAD(opt) < sizeof(*copt))
-++ return -1;
-++ copt = RTA_DATA(opt);
-++
-++ if(!copt->used) {
-++ fprintf(f,"(unused)");
-++ return 0;
-++ }
-++
-++ if(copt->usemac) {
-++ fprintf(f,"\n (address: %.2X:%.2X:%.2X:%.2X:%.2X:%.2X)\n",
-++ copt->addr[0],copt->addr[1],copt->addr[2],
-++ copt->addr[3],copt->addr[4],copt->addr[5]);
-++ } else {
-++ fprintf(f,"\n (address: %i.%i.%i.%i)\n",copt->addr[0],copt->addr[1],copt->addr[2],copt->addr[3]);
-++ }
-++
-++ fprintf(f," (total weight: %Lg) (current position: %i) (counters: %u %u : %u %u)\n",
-++ (copt->class_modf.weight1.val/d)*(copt->class_modf.weight2.val/d),
-++ copt->heappos,
-++ (unsigned)(copt->penal_ms>>32),
-++ (unsigned)(copt->penal_ms & 0xffffffffU),
-++ (unsigned)(copt->penal_ls>>32),
-++ (unsigned)(copt->penal_ls & 0xffffffffU)
-++ );
-++
-++ fprintf(f," Pars 1: (weight %Lg) (decr: %Lg) (incr: %Lg) (min: %Lg) (max: %Lg)\n",
-++ copt->class_modf.weight1.val/d,
-++ copt->class_modf.weight1.decr/d,
-++ copt->class_modf.weight1.incr/d,
-++ copt->class_modf.weight1.min/d,
-++ copt->class_modf.weight1.max/d);
-++
-++ fprintf(f," Pars 2: (weight %Lg) (decr: %Lg) (incr: %Lg) (min: %Lg) (max: %Lg)",
-++ copt->class_modf.weight2.val/d,
-++ copt->class_modf.weight2.decr/d,
-++ copt->class_modf.weight2.incr/d,
-++ copt->class_modf.weight2.min/d,
-++ copt->class_modf.weight2.max/d);
-++
-++ return 0;
-++}
-++
-++static int wrr_print_xstats(struct qdisc_util *qu, FILE *f, struct rtattr *xstats)
-++{
-++ return 0;
-++}
-++
-++
-++struct qdisc_util wrr_qdisc_util = {
-++ .id = "wrr",
-++ .parse_qopt = wrr_parse_opt,
-++ .print_qopt = wrr_print_opt,
-++ .print_xstats = wrr_print_xstats,
-++ .parse_copt = wrr_parse_copt,
-++ .print_copt = wrr_print_copt
-++};
---- iproute-20071016.orig/debian/patches/remove_tc_filters_reference.dpatch
-+++ iproute-20071016/debian/patches/remove_tc_filters_reference.dpatch
-@@ -0,0 +1,30 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## remove_tc_filters_reference.dpatch by <formorer@lisa.springfield.lan>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad iproute-20070313~/man/man8/tc.8 iproute-20070313/man/man8/tc.8
-+--- iproute-20070313~/man/man8/tc.8 2007-06-10 20:22:40.000000000 +0200
-++++ iproute-20070313/man/man8/tc.8 2007-06-10 20:23:16.000000000 +0200
-+@@ -202,8 +202,7 @@
-+ tc filters
-+ If tc filters are attached to a class, they are consulted first
-+ for relevant instructions. Filters can match on all fields of a packet header,
-+-as well as on the firewall mark applied by ipchains or iptables. See
-+-.BR tc-filters (8).
-++as well as on the firewall mark applied by ipchains or iptables.
-+ .TP
-+ Type of Service
-+ Some qdiscs have built in rules for classifying packets based on the TOS field.
-+@@ -242,8 +241,7 @@
-+ .TP
-+ FILTERS
-+ Filters have a three part ID, which is only needed when using a hashed
-+-filter hierarchy, for which see
-+-.BR tc-filters (8).
-++filter hierarchy.
-+ .SH UNITS
-+ All parameters accept a floating point number, possibly followed by a unit.
-+ .P
---- iproute-20071016.orig/debian/patches/tc_sample_fix
-+++ iproute-20071016/debian/patches/tc_sample_fix
-@@ -0,0 +1,33 @@
-+#! /bin/sh -e
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: Fixes #347699
-+
-+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-+
-+if [ $# -ne 1 ]; then
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1
-+fi
-+case "$1" in
-+ -patch) patch $patch_opts -p1 < $0;;
-+ -unpatch) patch $patch_opts -p1 -R < $0;;
-+ *)
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1;;
-+esac
-+
-+exit 0
-+@DPATCH@
-+diff -Nur iproute-20051007.keep/tc/f_u32.c iproute-20051007/tc/f_u32.c
-+--- iproute-20051007.keep/tc/f_u32.c 2005-01-19 08:11:58.000000000 +1000
-++++ iproute-20051007/tc/f_u32.c 2006-01-12 17:12:43.000000000 +1000
-+@@ -878,6 +878,7 @@
-+ struct tc_u32_sel sel;
-+ struct tc_u32_key keys[4];
-+ } sel2;
-++ memset(&sel2, 0, sizeof(sel2));
-+ NEXT_ARG();
-+ if (parse_selector(&argc, &argv, &sel2.sel, n)) {
-+ fprintf(stderr, "Illegal \"sample\"\n");
---- iproute-20071016.orig/debian/patches/tcb_htb_typo.dpatch
-+++ iproute-20071016/debian/patches/tcb_htb_typo.dpatch
-@@ -0,0 +1,19 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## tcb_htb_typo.dpatch by <formorer@lisa.springfield.lan>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad iproute-20070313~/man/man8/tc-htb.8 iproute-20070313/man/man8/tc-htb.8
-+--- iproute-20070313~/man/man8/tc-htb.8 2007-03-13 22:50:56.000000000 +0100
-++++ iproute-20070313/man/man8/tc-htb.8 2007-06-10 19:30:08.000000000 +0200
-+@@ -137,7 +137,7 @@
-+ .SH NOTES
-+ Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low. On Intel,
-+ there are 100 timer events per second, the maximum rate is that rate at which 'burst' bytes are sent each timer tick.
-+-From this, the mininum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte
-++From this, the minimum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte
-+ burst as 100*12kb*8 equals 10mbit.
-+
-+ .SH SEE ALSO
---- iproute-20071016.orig/debian/patches/ip_route_usage.dpatch
-+++ iproute-20071016/debian/patches/ip_route_usage.dpatch
-@@ -0,0 +1,19 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## ip_route_usage.dpatch by Alexander Wirt <formorer@debian.org>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad pkg-iproute~/ip/iproute.c pkg-iproute/ip/iproute.c
-+--- pkg-iproute~/ip/iproute.c 2007-10-18 14:04:18.000000000 +0200
-++++ pkg-iproute/ip/iproute.c 2007-10-18 14:23:11.000000000 +0200
-+@@ -72,7 +72,7 @@
-+ fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n");
-+ fprintf(stderr, " [ rtt TIME ] [ rttvar TIME ]\n");
-+ fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n");
-+- fprintf(stderr, " [ ssthresh NUMBER ] [ realms REALM ]\n");
-++ fprintf(stderr, " [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]\n");
-+ fprintf(stderr, " [ rto_min TIME ]\n");
-+ fprintf(stderr, "TYPE := [ unicast | local | broadcast | multicast | throw |\n");
-+ fprintf(stderr, " unreachable | prohibit | blackhole | nat ]\n");
---- iproute-20071016.orig/debian/patches/manpages-typo.dpatch
-+++ iproute-20071016/debian/patches/manpages-typo.dpatch
-@@ -0,0 +1,44 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## manpages-typo.dpatch by Alexander Wirt <formorer@debian.org>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad iproute-20061002~/man/man8/tc-prio.8 iproute-20061002/man/man8/tc-prio.8
-+--- iproute-20061002~/man/man8/tc-prio.8 2006-10-15 17:06:41.000000000 +0200
-++++ iproute-20061002/man/man8/tc-prio.8 2006-10-15 17:10:52.000000000 +0200
-+@@ -30,7 +30,7 @@
-+ On creation with 'tc qdisc add', a fixed number of bands is created. Each
-+ band is a class, although is not possible to add classes with 'tc qdisc
-+ add', the number of bands to be created must instead be specified on the
-+-commandline attaching PRIO to its root.
-++command line attaching PRIO to its root.
-+
-+ When dequeueing, band 0 is tried first and only if it did not deliver a
-+ packet does PRIO try band 1, and so onwards. Maximum reliability packets
-+@@ -88,7 +88,7 @@
-+ The four TOS bits (the 'TOS field') are defined as:
-+
-+ .nf
-+-Binary Decimcal Meaning
-++Binary Decimal Meaning
-+ -----------------------------------------
-+ 1000 8 Minimize delay (md)
-+ 0100 4 Maximize throughput (mt)
-+@@ -125,13 +125,13 @@
-+
-+ The second column contains the value of the relevant
-+ four TOS bits, followed by their translated meaning. For example, 15 stands
-+-for a packet wanting Minimal Montetary Cost, Maximum Reliability, Maximum
-++for a packet wanting Minimal Monetary Cost, Maximum Reliability, Maximum
-+ Throughput AND Minimum Delay.
-+
-+ The fourth column lists the way the Linux kernel interprets the TOS bits, by
-+ showing to which Priority they are mapped.
-+
-+-The last column shows the result of the default priomap. On the commandline,
-++The last column shows the result of the default priomap. On the command line,
-+ the default priomap looks like this:
-+
-+ 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1
---- iproute-20071016.orig/debian/patches/tc_modules.dpatch
-+++ iproute-20071016/debian/patches/tc_modules.dpatch
-@@ -0,0 +1,19 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## tc_modules.dpatch by <formorer@lisa.springfield.lan>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad iproute-20070313~/include/iptables.h iproute-20070313/include/iptables.h
-+--- iproute-20070313~/include/iptables.h 2007-03-13 22:50:56.000000000 +0100
-++++ iproute-20070313/include/iptables.h 2007-06-10 17:56:38.000000000 +0200
-+@@ -5,7 +5,7 @@
-+ #include "libiptc/libiptc.h"
-+
-+ #ifndef IPT_LIB_DIR
-+-#define IPT_LIB_DIR "/usr/local/lib/iptables"
-++#define IPT_LIB_DIR "/lib/iptables"
-+ #endif
-+
-+ #ifndef IPPROTO_SCTP
---- iproute-20071016.orig/debian/patches/ip_address
-+++ iproute-20071016/debian/patches/ip_address
-@@ -0,0 +1,34 @@
-+#! /bin/sh -e
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: Removed mentioning of "ip address" in the ip output
-+
-+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-+
-+if [ $# -ne 1 ]; then
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1
-+fi
-+case "$1" in
-+ -patch) patch $patch_opts -p1 < $0;;
-+ -unpatch) patch $patch_opts -p1 -R < $0;;
-+ *)
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1;;
-+esac
-+
-+exit 0
-+@DPATCH@
-+diff -ruN iproute-20051007.orig/ip/ipaddress.c iproute-20051007/ip/ipaddress.c
-+--- iproute-20051007.orig/ip/ipaddress.c 2005-09-21 21:33:18.000000000 +0200
-++++ iproute-20051007/ip/ipaddress.c 2006-03-14 07:26:26.830934712 +0100
-+@@ -901,7 +901,7 @@
-+ return ipaddr_list_or_flush(argc-1, argv+1, 1);
-+ if (matches(*argv, "help") == 0)
-+ usage();
-+- fprintf(stderr, "Command \"%s\" is unknown, try \"ip address help\".\n", *argv);
-++ fprintf(stderr, "Command \"%s\" is unknown, try \"ip addr help\".\n", *argv);
-+ exit(-1);
-+ }
-+
---- iproute-20071016.orig/debian/patches/ip.8-typo
-+++ iproute-20071016/debian/patches/ip.8-typo
-@@ -0,0 +1,33 @@
-+#! /bin/sh -e
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: show the \ really, see #285507
-+
-+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-+
-+if [ $# -ne 1 ]; then
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1
-+fi
-+case "$1" in
-+ -patch) patch $patch_opts -p1 < $0;;
-+ -unpatch) patch $patch_opts -p1 -R < $0;;
-+ *)
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1;;
-+esac
-+
-+exit 0
-+@DPATCH@
-+--- orig/man/man8/ip.8 2004-10-19 20:49:02.000000000 +0000
-++++ new/man/man8/ip.8 2005-01-05 22:04:12.000000000 +0000
-+@@ -374,7 +374,7 @@
-+ .BR "\-o" , " \-oneline"
-+ output each record on a single line, replacing line feeds
-+ with the
-+-.B '\'
-++.B '\e\'
-+ character. This is convenient when you want to count records
-+ with
-+ .BR wc (1)
---- iproute-20071016.orig/debian/patches/f_u32
-+++ iproute-20071016/debian/patches/f_u32
-@@ -0,0 +1,63 @@
-+#! /bin/sh -e
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: Fixes the u32 calculation for 2.6 kernel - by Russell Stuart <russell-debian@stuart.id.au>
-+
-+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-+
-+if [ $# -ne 1 ]; then
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1
-+fi
-+case "$1" in
-+ -patch) patch $patch_opts -p1 < $0;;
-+ -unpatch) patch $patch_opts -p1 -R < $0;;
-+ *)
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1;;
-+esac
-+
-+exit 0
-+@DPATCH@
-+diff -Nur iproute-20051007.keep/tc/f_u32.c iproute-20051007/tc/f_u32.c
-+--- iproute-20051007.keep/tc/f_u32.c 2006-01-12 17:34:37.000000000 +1000
-++++ iproute-20051007/tc/f_u32.c 2006-02-07 17:10:29.000000000 +1000
-+@@ -17,6 +17,7 @@
-+ #include <syslog.h>
-+ #include <fcntl.h>
-+ #include <sys/socket.h>
-++#include <sys/utsname.h>
-+ #include <netinet/in.h>
-+ #include <arpa/inet.h>
-+ #include <string.h>
-+@@ -874,6 +875,7 @@
-+ htid = (handle&0xFFFFF000);
-+ } else if (strcmp(*argv, "sample") == 0) {
-+ __u32 hash;
-++ struct utsname utsname;
-+ struct {
-+ struct tc_u32_sel sel;
-+ struct tc_u32_key keys[4];
-+@@ -889,8 +891,19 @@
-+ return -1;
-+ }
-+ hash = sel2.sel.keys[0].val&sel2.sel.keys[0].mask;
-+- hash ^= hash>>16;
-+- hash ^= hash>>8;
-++ uname(&utsname);
-++ if (strncmp(utsname.release, "2.4.", 4) == 0) {
-++ hash ^= hash>>16;
-++ hash ^= hash>>8;
-++ }
-++ else {
-++ __u32 mask = sel2.sel.keys[0].mask;
-++ while (mask && !(mask & 1)) {
-++ mask >>= 1;
-++ hash >>= 1;
-++ }
-++ hash &= 0xFF;
-++ }
-+ htid = ((hash<<12)&0xFF000)|(htid&0xFFF00000);
-+ sample_ok = 1;
-+ continue;
---- iproute-20071016.orig/debian/patches/moo.dpatch
-+++ iproute-20071016/debian/patches/moo.dpatch
-@@ -0,0 +1,39 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## moo.dpatch by Alexander Wirt <formorer@debian.org>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: Add moo feature
-+
-+@DPATCH@
-+diff -urNad pkg-iproute~/ip/ip.c pkg-iproute/ip/ip.c
-+--- pkg-iproute~/ip/ip.c 2007-10-18 11:48:11.000000000 +0200
-++++ pkg-iproute/ip/ip.c 2007-10-18 14:14:20.000000000 +0200
-+@@ -59,6 +59,20 @@
-+ usage();
-+ }
-+
-++static int do_moo(int argc, char **argv)
-++{
-++
-++fprintf(stderr,
-++"\n"
-++" _ __ ___ ___ ___\n"
-++"| '_ ` _ \\ / _ \\ / _ \\\n"
-++"| | | | | | (_) | (_) |\n"
-++"|_| |_| |_|\\___/ \\___/\n"
-++"\n\n"
-++"P.S. no real cows were harmed for this moo\n");
-++ exit(1);
-++}
-++
-+ static const struct cmd {
-+ const char *cmd;
-+ int (*func)(int argc, char **argv);
-+@@ -78,6 +92,7 @@
-+ { "xfrm", do_xfrm },
-+ { "mroute", do_multiroute },
-+ { "help", do_help },
-++ { "moo", do_moo },
-+ { 0 }
-+ };
-+
---- iproute-20071016.orig/debian/patches/heap_corruptionfix
-+++ iproute-20071016/debian/patches/heap_corruptionfix
-@@ -0,0 +1,47 @@
-+#! /bin/sh -e
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: add references to lartc
-+## DP: also drop bogus reference to tc-filters
-+
-+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-+patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-+
-+if [ $# -ne 1 ]; then
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1
-+fi
-+case "$1" in
-+ -patch) patch $patch_opts -p1 < $0;;
-+ -unpatch) patch $patch_opts -p1 -R < $0;;
-+ *)
-+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-+ exit 1;;
-+esac
-+
-+exit 0
-+@DPATCH@
-+diff -urNad iproute-20041019/tc/normal.c /tmp/dpep.9YHbob/iproute-20041019/tc/normal.c
-+--- iproute-20041019/tc/normal.c 2004-10-19 14:49:02.000000000 -0600
-++++ /tmp/dpep.9YHbob/iproute-20041019/tc/normal.c 2005-09-06 15:48:45.000000000 -0600
-+@@ -26,7 +26,7 @@
-+ double x, *table;
-+ int i, n;
-+
-+- table = calloc(sizeof(double), TABLESIZE);
-++ table = calloc(TABLESIZE+1, sizeof(double));
-+ if (!table) {
-+ fprintf(stderr, "Not enough memory\n");
-+ return 1;
-+diff -urNad iproute-20041019/tc/paretonormal.c /tmp/dpep.9YHbob/iproute-20041019/tc/paretonormal.c
-+--- iproute-20041019/tc/paretonormal.c 2004-10-19 14:49:02.000000000 -0600
-++++ /tmp/dpep.9YHbob/iproute-20041019/tc/paretonormal.c 2005-09-06 15:49:01.000000000 -0600
-+@@ -54,7 +54,7 @@
-+ double *table;
-+ int i,n;
-+
-+- table = calloc(TABLESIZE, sizeof(double));
-++ table = calloc(TABLESIZE+1, sizeof(double));
-+ if (!table) {
-+ fprintf(stderr, "Out of memory!\n");
-+ exit(1);
---- iproute-20071016.orig/debian/patches/tc_cbq_details_typo.dpatch
-+++ iproute-20071016/debian/patches/tc_cbq_details_typo.dpatch
-@@ -0,0 +1,19 @@
-+#! /bin/sh /usr/share/dpatch/dpatch-run
-+## tc_cbq_details_typo.dpatch by <formorer@lisa.springfield.lan>
-+##
-+## All lines beginning with `## DP:' are a description of the patch.
-+## DP: No description.
-+
-+@DPATCH@
-+diff -urNad iproute-20070313~/man/man8/tc-cbq-details.8 iproute-20070313/man/man8/tc-cbq-details.8
-+--- iproute-20070313~/man/man8/tc-cbq-details.8 2007-06-10 19:25:18.000000000 +0200
-++++ iproute-20070313/man/man8/tc-cbq-details.8 2007-06-10 19:25:58.000000000 +0200
-+@@ -210,7 +210,7 @@
-+ priority. If found, choose it, and terminate.
-+ .TP
-+ (iii)
-+-Choose the class at which break out to the fallback algorithm occured. Terminate.
-++Choose the class at which break out to the fallback algorithm occurred. Terminate.
-+ .P
-+ The packet is enqueued to the class which was chosen when either algorithm
-+ terminated. It is therefore possible for a packet to be enqueued *not* at a
---- iproute-20071016.orig/debian/iproute.manpages
-+++ iproute-20071016/debian/iproute.manpages
-@@ -0,0 +1,2 @@
-+man/*/*
-+debian/man/*
---- iproute-20071016.orig/debian/iproute-doc.install
-+++ iproute-20071016/debian/iproute-doc.install
-@@ -0,0 +1 @@
-+debian/doc/htb/* /usr/share/doc/iproute-doc/htb
---- iproute-20071016.orig/debian/compat
-+++ iproute-20071016/debian/compat
-@@ -0,0 +1 @@
-+5
---- iproute-20071016.orig/debian/iproute-dev.install
-+++ iproute-20071016/debian/iproute-dev.install
-@@ -0,0 +1,2 @@
-+*/*.h /usr/include/iproute/
-+lib/libnetlink.a /usr/lib
---- iproute-20071016.orig/debian/man/rtmon.8
-+++ iproute-20071016/debian/man/rtmon.8
-@@ -0,0 +1,58 @@
-+.TH RTMON 8
-+.SH NAME
-+rtmon \- listens to and monitors RTnetlink
-+.SH SYNOPSIS
-+.B rtmon
-+.RI "[ options ] file FILE [ all | LISTofOBJECTS ]"
-+.SH DESCRIPTION
-+This manual page documents briefly the
-+.B rtmon
-+command.
-+.PP
-+\fBrtmon\fP is a RTnetlink listener. RTnetlink allows the kernel's routing tables to be read and altered.
-+
-+rtmon should be started before the first network configuration command is issued. For example if you insert:
-+
-+ rtmon file /var/log/rtmon.log
-+
-+in a startup script, you will be able to view the full history later.
-+Certainly, it is possible to start rtmon at any time. It prepends the history with the state snapshot dumped at the moment of starting.
-+.SH OPTIONS
-+rtmon supports the following options:
-+.TP
-+.B \-Version
-+Print version and exit.
-+.TP
-+.B help
-+Show summary of options.
-+.TP
-+.B file FILE [ all | LISTofOBJECTS ]
-+Log output to FILE. LISTofOBJECTS is the list of object types that we want to monitor.
-+It may contain 'link', 'address', 'route' and 'all'. 'link' specifies the network device, 'address'
-+the protocol (IP or IPv6) address on a device, 'route' the routing table entry and 'all' does what the name says.
-+.TP
-+.B \-family [ inet | inet6 | link | help ]
-+Specify protocol family. 'inet' is IPv4, 'inet6' is IPv6, 'link' means that no networking protocol is involved and 'help' prints usage information.
-+.TP
-+.B \-4
-+Use IPv4. Shortcut for -family inet.
-+.TP
-+.B \-6
-+Use IPv6. Shortcut for -family inet6.
-+.TP
-+.B \-0
-+Use a special family identifier meaning that no networking protocol is involved. Shortcut for -family link.
-+.SH USAGE EXAMPLES
-+.TP
-+.B # rtmon file /var/log/rtmon.log
-+Log to file /var/log/rtmon.log, then run:
-+.TP
-+.B # ip monitor file /var/log/rtmon.log
-+to display logged output from file.
-+.SH SEE ALSO
-+.BR ip (8)
-+.SH AUTHOR
-+rtmon was written by Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>.
-+.PP
-+This manual page was written by Michael Prokop <mika@grml.org>,
-+for the Debian project (but may be used by others).
---- iproute-20071016.orig/debian/rules
-+++ iproute-20071016/debian/rules
-@@ -0,0 +1,45 @@
-+#!/usr/bin/make -f
-+
-+# created by Andreas Barth <aba@not.so.argh.org> 2004
-+
-+build: build-arch
-+
-+include /usr/share/dpatch/dpatch.make
-+
-+clean: clean-patched unpatch
-+clean-patched:
-+ -rm stamp-build
-+ dh_testdir
-+ dh_testroot
-+ dh_clean
-+ make clean
-+
-+binary: binary-indep binary-arch
-+
-+binary-indep build-indep:
-+
-+binary-arch: build-arch
-+ dh_testdir
-+ dh_testroot
-+ dh_install --fail-missing
-+ dh_link
-+ dh_installexamples -p iproute-doc examples/*
-+ dh_installman
-+ dh_installdocs
-+ dh_installchangelogs
-+ dh_compress
-+ dh_strip
-+ dh_fixperms
-+ dh_installdeb
-+ dh_shlibdeps -Xq_atm.so
-+ dh_gencontrol
-+ dh_md5sums
-+ dh_builddeb
-+
-+build-arch: stamp-build
-+stamp-build: patch
-+ $(MAKE) KERNEL_INCLUDE=./include
-+ $(MAKE) -C doc all txt
-+ touch stamp-build
-+
-+.PHONY: build binary binary-arch binary-indep clean
---- iproute-20071016.orig/debian/control
-+++ iproute-20071016/debian/control
-@@ -0,0 +1,46 @@
-+Source: iproute
-+Section: net
-+Priority: optional
-+Maintainer: Alexander Wirt <formorer@debian.org>
-+Uploaders: Andreas Barth <aba@not.so.argh.org>, Andreas Henriksson <andreas@fatal.se>
-+Homepage: http://www.linux-foundation.org/en/Net:Iproute2
-+Vcs-Browser: http://git.debian.org/?p=collab-maint/pkg-iproute.git
-+Vcs-Git: git://git.debian.org/git/collab-maint/pkg-iproute.git
-+Standards-Version: 3.7.3
-+Build-Depends: texlive-latex-base, texlive-latex-recommended, libatm1-dev, bison, libdb-dev, linuxdoc-tools, linux-libc-dev, debhelper (>= 5), lynx, dpatch, flex
-+
-+Package: iproute
-+Architecture: any
-+Provides: arpd
-+Conflicts: arpd
-+Depends: ${shlibs:Depends}
-+Recommends: libatm1
-+Suggests: iproute-doc
-+Description: Professional tools to control the networking in Linux kernels
-+ This is `iproute', the professional set of tools to control the
-+ networking behavior in kernels 2.2.x and later.
-+ .
-+ At least, the options CONFIG_NETLINK and CONFIG_NETLINK_DEV (or
-+ CONFIG_RTNETLINK) must be compiled into the running kernel.
-+ .
-+ This package is also known as iproute2 upstream and in some
-+ documentation.
-+
-+Package: iproute-doc
-+Section: doc
-+Architecture: all
-+Description: Professional tools to control the networking in Linux kernels
-+ This package contains the documentation for the iproute package.
-+ .
-+ iproute is the professional set of tools to control the
-+ networking behavior in kernels 2.2.x and late
-+
-+Package: iproute-dev
-+Section: libdevel
-+Architecture: any
-+Description: Development package for iproute
-+ This package contains the header files and static libs for developing
-+ iproute additions. iproute is the professional set of tools to control the
-+ networking behavior in kernels 2.2.x and later.
-+ .
-+ You don't need this package unless doing development.
---- iproute-20071016.orig/debian/iproute-doc.docs
-+++ iproute-20071016/debian/iproute-doc.docs
-@@ -0,0 +1,4 @@
-+README* doc/Plan RELNOTES
-+doc/*.tex doc/*.dvi doc/*.ps doc/*.sty
-+doc/*.txt doc/*.html
-+debian/htb/*
---- iproute-20071016.orig/ip/iptunnel.c
-+++ iproute-20071016/ip/iptunnel.c
-@@ -113,7 +113,7 @@
- NEXT_ARG();
- p->i_flags |= GRE_KEY;
- if (strchr(*argv, '.'))
-- p->o_key = get_addr32(*argv);
-+ p->i_key = get_addr32(*argv);
- else {
- if (get_unsigned(&uval, *argv, 0)<0) {
- fprintf(stderr, "invalid value of \"ikey\"\n");
---- iproute-20071016.orig/ip/iproute.c
-+++ iproute-20071016/ip/iproute.c
-@@ -780,6 +780,18 @@
- invarg("\"reordering\" value is invalid\n", *argv);
- rta_addattr32(mxrta, sizeof(mxbuf), RTAX_REORDERING, reord);
- #endif
-+#ifdef RTAX_HOPLIMIT
-+ } else if (strcmp(*argv, "hoplimit") == 0) {
-+ unsigned hoplim;
-+ NEXT_ARG();
-+ if (strcmp(*argv, "lock") == 0) {
-+ mxlock |= (1<<RTAX_HOPLIMIT);
-+ NEXT_ARG();
-+ }
-+ if (get_unsigned(&hoplim, *argv, 0))
-+ invarg("\"hoplimit\" value is invalid\n", *argv);
-+ rta_addattr32(mxrta, sizeof(mxbuf), RTAX_HOPLIMIT, hoplim);
-+#endif
- } else if (strcmp(*argv, "rtt") == 0) {
- unsigned rtt;
- NEXT_ARG();
---- iproute-20071016.orig/ip/ipaddress.c
-+++ iproute-20071016/ip/ipaddress.c
-@@ -34,6 +34,8 @@
- #include "ll_map.h"
- #include "ip_common.h"
-
-+#define MAX_ROUNDS 10
-+
- static struct
- {
- int ifindex;
-@@ -667,7 +669,7 @@
- filter.flushp = 0;
- filter.flushe = sizeof(flushb);
-
-- for (;;) {
-+ while (round < MAX_ROUNDS) {
- if (rtnl_wilddump_request(&rth, filter.family, RTM_GETADDR) < 0) {
- perror("Cannot send dump request");
- exit(1);
-@@ -694,6 +696,8 @@
- fflush(stdout);
- }
- }
-+ fprintf(stderr, "*** Flush remains incomplete after %d rounds. ***\n", MAX_ROUNDS); fflush(stderr);
-+ return 1;
- }
-
- if (filter.family != AF_PACKET) {
---- iproute-20071016.orig/ip/iplink.c
-+++ iproute-20071016/ip/iplink.c
-@@ -107,7 +107,8 @@
- {
- struct nlmsgerr *err = (struct nlmsgerr *)NLMSG_DATA(n);
-
-- if (n->nlmsg_type == NLMSG_ERROR && err->error == -EOPNOTSUPP)
-+ if (n->nlmsg_type == NLMSG_ERROR &&
-+ (err->error == -EOPNOTSUPP || err->error == -EINVAL))
- have_rtnl_newlink = 0;
- else
- have_rtnl_newlink = 1;
---- iproute-20071016.orig/Makefile
-+++ iproute-20071016/Makefile
-@@ -56,6 +56,7 @@
- ln -sf lnstat.8 $(DESTDIR)$(MANDIR)/man8/rtstat.8
- ln -sf lnstat.8 $(DESTDIR)$(MANDIR)/man8/ctstat.8
- ln -sf rtacct.8 $(DESTDIR)$(MANDIR)/man8/nstat.8
-+ ln -sf routel.8 $(DESTDIR)$(MANDIR)/man8/routef.8
- install -m 0755 -d $(DESTDIR)$(MANDIR)/man3
- install -m 0644 $(shell find man/man3 -maxdepth 1 -type f) $(DESTDIR)$(MANDIR)/man3
-
---- iproute-20071016.orig/man/man8/ip.8
-+++ iproute-20071016/man/man8/ip.8
-@@ -32,7 +32,7 @@
- .br
- .BR promisc " { " on " | " off " } |"
- .br
--.BR allmulti " { " on " | " off " } |"
-+.BR allmulticast " { " on " | " off " } |"
- .br
- .BR dynamic " { " on " | " off " } |"
- .br
-@@ -1568,10 +1568,12 @@
- set
- .I unique
- priority value.
-+The options preference and order are synonyms with priority.
-
- .TP
- .BI table " TABLEID"
- the routing table identifier to lookup if the rule selector matches.
-+It is also possible to use lookup instead of table.
-
- .TP
- .BI realms " FROM/TO"
-@@ -1589,6 +1591,7 @@
- routes) or a local host address (or even zero).
- In the last case the router does not translate the packets, but
- masquerades them to this address.
-+Using map-to instead of nat means the same thing.
-
- .B Warning:
- Changes to the RPDB made with these commands do not become active
-@@ -1601,6 +1604,7 @@
-
- .SS ip rule show - list rules
- This command has no arguments.
-+The options list or lst are synonyms with show.
-
- .SH ip maddress - multicast addresses management
-
---- iproute-20071016.orig/man/man8/ss.8
-+++ iproute-20071016/man/man8/ss.8
-@@ -107,7 +107,7 @@
- .B ss -o state established '( dport = :ssh or sport = :ssh )'
- Display all established ssh connections.
- .TP
--.B ss -x src \"/tmp/.X11-unix/*\"
-+.B ss -x src /tmp/.X11-unix/*
- Find all local processes connected to X server.
- .TP
- .B ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24
---- iproute-20071016.orig/man/man8/routel.8
-+++ iproute-20071016/man/man8/routel.8
-@@ -0,0 +1,32 @@
-+.TH "ROUTEL" "8" "3 Jan, 2008" "iproute2" "Linux"
-+.SH "NAME"
-+.LP
-+routel \- list routes with pretty output format
-+.br
-+routef \- flush routes
-+.SH "SYNTAX"
-+.LP
-+routel [\fItablenr\fP [\fIraw ip args...\fP]]
-+.br
-+routef
-+.SH "DESCRIPTION"
-+.LP
-+These programs are a set of helper scripts you can use instead of raw iproute2 commands.
-+.br
-+The routel script will list routes in a format that some might consider easier to interpret then the ip route list equivalent.
-+.br
-+The routef script does not take any arguments and will simply flush the routing table down the drain. Beware! This means deleting all routes which will make your network unusable!
-+
-+.SH "FILES"
-+.LP
-+\fI/usr/bin/routef\fP
-+.br
-+\fI/usr/bin/routel\fP
-+.SH "AUTHORS"
-+.LP
-+The routel script was written by Stephen R. van den Berg <srb@cuci.nl>, 1999/04/18 and donated to the public domain.
-+.br
-+This manual page was written by Andreas Henriksson <andreas@fatal.se>, for the Debian GNU/Linux system.
-+.SH "SEE ALSO"
-+.LP
-+ip(8)