Re: [PATCH net v3 2/4] net: add rx_nohandler stat counter

From: Stephen Hemminger
Date: Sun Feb 07 2016 - 14:37:29 EST


On Mon, 1 Feb 2016 18:51:05 -0500
Jarod Wilson <jarod@xxxxxxxxxx> wrote:

> --- a/include/uapi/linux/if_link.h
> +++ b/include/uapi/linux/if_link.h
> @@ -35,6 +35,8 @@ struct rtnl_link_stats {
> /* for cslip etc */
> __u32 rx_compressed;
> __u32 tx_compressed;
> +
> + __u32 rx_nohandler; /* dropped, no handler found */
> };
>
> /* The main device statistics structure */
> @@ -68,6 +70,8 @@ struct rtnl_link_stats64 {
> /* for cslip etc */
> __u64 rx_compressed;
> __u64 tx_compressed;
> +
> + __u64 rx_nohandler; /* dropped, no handler found */
> };

Why was this userspace ABI change allowed?
The stats structure is exposed to user space via netlink
and changing the size of responses will break iproute2 commands.

The code will be expecting one size and the response will vary and
break existing code. Yes, the code should check the size
of the response, but it doesn't and I am sure iproute2 is not
the only code that does this.