From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugene Syromiatnikov Subject: Re: [PATCH net-next v7 28/28] net: WireGuard secure network tunnel Date: Sat, 6 Oct 2018 21:43:48 +0200 Message-ID: <20181006194348.GK32759@asgard.redhat.com> References: <20181006025709.4019-1-Jason@zx2c4.com> <20181006025709.4019-29-Jason@zx2c4.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, davem@davemloft.net, gregkh@linuxfoundation.org To: "Jason A. Donenfeld" Return-path: Content-Disposition: inline In-Reply-To: <20181006025709.4019-29-Jason@zx2c4.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On Sat, Oct 06, 2018 at 04:57:09AM +0200, Jason A. Donenfeld wrote: > +static int get_allowedips(void *ctx, const u8 *ip, u8 cidr, int family) > +{ > + struct allowedips_ctx *actx = ctx; > + struct nlattr *allowedip_nest; > + > + allowedip_nest = nla_nest_start(actx->skb, actx->i++); Second parameter of nl_nest_start is an attribute type; (ab)using it as array index leads to special handling of such structures in parsers. It's better to have some type like WGDEVICE_A_PEER_ITEM and provide an additional attribute inside it for index (WGPEER_A_INDEX?). See, for example, commit v4.12-rc1~119^2~131 ("nbd: add a status netlink command"). > +static int get_peer(struct wireguard_peer *peer, unsigned int index, > + struct allowedips_cursor *rt_cursor, struct sk_buff *skb) > +{ > + struct nlattr *allowedips_nest, *peer_nest = nla_nest_start(skb, index); Same here.