Received: with ECARTIS (v1.0.0; list netdev); Thu, 03 Mar 2005 18:35:10 -0800 (PST) Received: from b.mx.projectdream.org (eth0-0.arisu.projectdream.org [194.158.4.191]) by oss.sgi.com (8.13.0/8.13.0) with ESMTP id j242Z4im017211 for ; Thu, 3 Mar 2005 18:35:04 -0800 Received: from postel.suug.ch (postel.suug.ch [195.134.158.23]) (using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits)) (No client certificate requested) by b.mx.projectdream.org (Postfix) with ESMTP id 0A40686; Fri, 4 Mar 2005 03:34:38 +0100 (CET) Received: by postel.suug.ch (Postfix, from userid 10001) id 6C16D1C0EA; Fri, 4 Mar 2005 03:35:20 +0100 (CET) Date: Fri, 4 Mar 2005 03:35:20 +0100 From: Thomas Graf To: Stephen Hemminger Cc: netdev@oss.sgi.com Subject: [PATCH] iproute2 updates Message-ID: <20050304023520.GD31837@postel.suug.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Virus-Scanned: ClamAV 0.83/743/Wed Mar 2 16:02:05 2005 on oss.sgi.com X-Virus-Status: Clean X-archive-position: 2365 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: tgraf@suug.ch Precedence: bulk X-list: netdev Content-Length: 7471 Lines: 319 Stephen, You may pull the following changes from bk://tgr.bkbits.net/iproute2-tgr-fix o [NETEM] Fix off by one o update local header file copies o [NEIGH] print number of probes done so far (statistics mode only) # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/04 02:41:20+01:00 tgraf@suug.ch # [NETEM] Fix off by one # # tc/q_netem.c # 2005/03/04 02:41:20+01:00 tgraf@suug.ch +1 -1 # [NETEM] Fix off by one # diff -Nru a/tc/q_netem.c b/tc/q_netem.c --- a/tc/q_netem.c 2005-03-04 03:21:01 +01:00 +++ b/tc/q_netem.c 2005-03-04 03:21:01 +01:00 @@ -243,7 +243,7 @@ memcpy(&qopt, RTA_DATA(opt), sizeof(qopt)); if (len > 0) { - struct rtattr *tb[TCA_NETEM_MAX]; + struct rtattr *tb[TCA_NETEM_MAX+1]; parse_rtattr(tb, TCA_NETEM_MAX, RTA_DATA(opt) + sizeof(qopt), len); # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/04 02:53:35+01:00 tgraf@suug.ch # update local header file copies # # include/linux/tcp.h # 2005/03/04 02:53:35+01:00 tgraf@suug.ch +2 -0 # update local header file copies # # include/linux/pkt_sched.h # 2005/03/04 02:53:35+01:00 tgraf@suug.ch +27 -7 # update local header file copies # # include/linux/pkt_cls.h # 2005/03/04 02:53:35+01:00 tgraf@suug.ch +6 -3 # update local header file copies # # include/linux/netlink.h # 2005/03/04 02:53:35+01:00 tgraf@suug.ch +1 -0 # update local header file copies # # include/linux/gen_stats.h # 2005/03/04 02:53:35+01:00 tgraf@suug.ch +5 -0 # update local header file copies # diff -Nru a/include/linux/gen_stats.h b/include/linux/gen_stats.h --- a/include/linux/gen_stats.h 2005-03-04 03:21:09 +01:00 +++ b/include/linux/gen_stats.h 2005-03-04 03:21:09 +01:00 @@ -14,6 +14,7 @@ #define TCA_STATS_MAX (__TCA_STATS_MAX - 1) /** + * struct gnet_stats_basic - byte/packet throughput statistics * @bytes: number of seen bytes * @packets: number of seen packets */ @@ -24,6 +25,7 @@ }; /** + * struct gnet_stats_rate_est - rate estimator * @bps: current byte rate * @pps: current packet rate */ @@ -34,10 +36,12 @@ }; /** + * struct gnet_stats_queue - queuing statistics * @qlen: queue length * @backlog: backlog size of queue * @drops: number of dropped packets * @requeues: number of requeues + * @overlimits: number of enqueues over the limit */ struct gnet_stats_queue { @@ -49,6 +53,7 @@ }; /** + * struct gnet_estimator - rate estimator configuration * @interval: sampling period * @ewma_log: the log of measurement window weight */ diff -Nru a/include/linux/netlink.h b/include/linux/netlink.h --- a/include/linux/netlink.h 2005-03-04 03:21:09 +01:00 +++ b/include/linux/netlink.h 2005-03-04 03:21:09 +01:00 @@ -16,6 +16,7 @@ #define NETLINK_ROUTE6 11 /* af_inet6 route comm channel */ #define NETLINK_IP6_FW 13 #define NETLINK_DNRTMSG 14 /* DECnet routing messages */ +#define NETLINK_KOBJECT_UEVENT 15 /* Kernel messages to userspace */ #define NETLINK_TAPBASE 16 /* 16 to 31 are ethertap */ #define MAX_LINKS 32 diff -Nru a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h --- a/include/linux/pkt_cls.h 2005-03-04 03:21:09 +01:00 +++ b/include/linux/pkt_cls.h 2005-03-04 03:21:09 +01:00 @@ -136,9 +136,9 @@ struct tcf_t { - __u32 install; - __u32 lastuse; - __u32 expires; + __u64 install; + __u64 lastuse; + __u64 expires; }; struct tc_cnt @@ -253,6 +253,7 @@ TCA_RSVP_SRC, TCA_RSVP_PINFO, TCA_RSVP_POLICE, + TCA_RSVP_ACT, __TCA_RSVP_MAX }; @@ -284,6 +285,7 @@ TCA_ROUTE4_FROM, TCA_ROUTE4_IIF, TCA_ROUTE4_POLICE, + TCA_ROUTE4_ACT, __TCA_ROUTE4_MAX }; @@ -315,6 +317,7 @@ TCA_TCINDEX_FALL_THROUGH, TCA_TCINDEX_CLASSID, TCA_TCINDEX_POLICE, + TCA_TCINDEX_ACT, __TCA_TCINDEX_MAX }; diff -Nru a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h --- a/include/linux/pkt_sched.h 2005-03-04 03:21:09 +01:00 +++ b/include/linux/pkt_sched.h 2005-03-04 03:21:09 +01:00 @@ -117,8 +117,11 @@ TCA_TBF_PARMS, TCA_TBF_RTAB, TCA_TBF_PTAB, + __TCA_TBF_MAX, }; +#define TCA_TBF_MAX (__TCA_TBF_MAX - 1) + /* TEQL section */ @@ -151,8 +154,11 @@ TCA_RED_UNSPEC, TCA_RED_PARMS, TCA_RED_STAB, + __TCA_RED_MAX, }; +#define TCA_RED_MAX (__TCA_RED_MAX - 1) + struct tc_red_qopt { __u32 limit; /* HARD maximal queue length (bytes) */ @@ -183,8 +189,11 @@ TCA_GRED_PARMS, TCA_GRED_STAB, TCA_GRED_DPS, + __TCA_GRED_MAX, }; +#define TCA_GRED_MAX (__TCA_GRED_MAX - 1) + #define TCA_SET_OFF TCA_GRED_PARMS struct tc_gred_qopt { @@ -249,7 +258,11 @@ TCA_HTB_INIT, TCA_HTB_CTAB, TCA_HTB_RTAB, + __TCA_HTB_MAX, }; + +#define TCA_HTB_MAX (__TCA_HTB_MAX - 1) + struct tc_htb_xstats { __u32 lends; @@ -287,9 +300,12 @@ TCA_HFSC_RSC, TCA_HFSC_FSC, TCA_HFSC_USC, - TCA_HFSC_MAX = TCA_HFSC_USC + __TCA_HFSC_MAX, }; +#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1) + + /* CBQ section */ #define TC_CBQ_MAXPRIO 8 @@ -370,9 +386,10 @@ TCA_CBQ_RATE, TCA_CBQ_RTAB, TCA_CBQ_POLICE, + __TCA_CBQ_MAX, }; -#define TCA_CBQ_MAX TCA_CBQ_POLICE +#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1) /* dsmark section */ @@ -382,10 +399,11 @@ TCA_DSMARK_DEFAULT_INDEX, TCA_DSMARK_SET_TC_INDEX, TCA_DSMARK_MASK, - TCA_DSMARK_VALUE + TCA_DSMARK_VALUE, + __TCA_DSMARK_MAX, }; -#define TCA_DSMARK_MAX TCA_DSMARK_VALUE +#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1) /* ATM section */ @@ -396,10 +414,11 @@ TCA_ATM_HDR, /* LL header */ TCA_ATM_EXCESS, /* excess traffic class (0 for CLP) */ TCA_ATM_ADDR, /* PVC address (for output only) */ - TCA_ATM_STATE /* VC state (ATM_VS_*; for output only) */ + TCA_ATM_STATE, /* VC state (ATM_VS_*; for output only) */ + __TCA_ATM_MAX, }; -#define TCA_ATM_MAX TCA_ATM_STATE +#define TCA_ATM_MAX (__TCA_ATM_MAX - 1) /* Network emulator */ @@ -408,9 +427,10 @@ TCA_NETEM_UNSPEC, TCA_NETEM_CORR, TCA_NETEM_DELAY_DIST, + __TCA_NETEM_MAX, }; -#define TCA_NETEM_MAX TCA_NETEM_DELAY_DIST +#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1) struct tc_netem_qopt { diff -Nru a/include/linux/tcp.h b/include/linux/tcp.h --- a/include/linux/tcp.h 2005-03-04 03:21:09 +01:00 +++ b/include/linux/tcp.h 2005-03-04 03:21:09 +01:00 @@ -186,6 +186,8 @@ __u32 tcpi_rcv_rtt; __u32 tcpi_rcv_space; + + __u32 tcpi_total_retrans; }; #endif /* _LINUX_TCP_H */ # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/03/04 03:14:42+01:00 tgraf@suug.ch # [NEIGH] print number of probes done so far (statistics mode only) # # ip/ipneigh.c # 2005/03/04 03:14:42+01:00 tgraf@suug.ch +5 -0 # print number of probes done in statistics mode # # include/linux/rtnetlink.h # 2005/03/04 03:14:42+01:00 tgraf@suug.ch +1 -0 # update local header file copy # diff -Nru a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h --- a/include/linux/rtnetlink.h 2005-03-04 03:21:15 +01:00 +++ b/include/linux/rtnetlink.h 2005-03-04 03:21:15 +01:00 @@ -446,6 +446,7 @@ NDA_DST, NDA_LLADDR, NDA_CACHEINFO, + NDA_PROBES, __NDA_MAX }; diff -Nru a/ip/ipneigh.c b/ip/ipneigh.c --- a/ip/ipneigh.c 2005-03-04 03:21:15 +01:00 +++ b/ip/ipneigh.c 2005-03-04 03:21:15 +01:00 @@ -287,6 +287,11 @@ ci->ndm_confirmed/hz, ci->ndm_updated/hz); } + if (tb[NDA_PROBES] && show_stats) { + __u32 p = *(__u32 *) RTA_DATA(tb[NDA_PROBES]); + fprintf(fp, " probes %u", p); + } + if (r->ndm_state) { int nud = r->ndm_state; fprintf(fp, " ");