From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cong Wang Subject: Re: [PATCH net-next v1 2/2] bridge: export multicast database via netlink Date: Sat, 01 Dec 2012 11:56:18 +0800 Message-ID: <1354334178.9680.7.camel@cr0> References: <1354269514-1863-1-git-send-email-amwang@redhat.com> <1354269514-1863-2-git-send-email-amwang@redhat.com> <20121130112618.GF30697@casper.infradead.org> <1354287652.19865.10.camel@cr0> <20121130152733.GH30697@casper.infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org, Herbert Xu , Jesper Dangaard Brouer , Stephen Hemminger , "David S. Miller" To: Thomas Graf Return-path: In-Reply-To: <20121130152733.GH30697@casper.infradead.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: bridge-bounces@lists.linux-foundation.org Errors-To: bridge-bounces@lists.linux-foundation.org List-Id: netdev.vger.kernel.org On Fri, 2012-11-30 at 15:27 +0000, Thomas Graf wrote: > On 11/30/12 at 11:00pm, Cong Wang wrote: > > I don't understand this. nla_put_flag() is used to put a flag (only one > > bit set) into a netlink message, so why should we use it to put > > p->port_no here? And why port_no 0 matters here? > > nla_put_flag() will simply add a netlink attribute with no payload, > i.e. just the header. Assuming that port_no == 0 is invalid the > port_no can be used as attribute id as both are 16bit integers. > > It will look like this: > > MDBA_ROUTERS = { > { > .nla_len = 4, > .nla_type = , > }, > { > .nla_len = 4, > .nla_type = , > } > [...] > } > > If you ever need to extend this you can just add payload to the > per port attribute and nothing will break. Never mind, I will use port->dev->ifindex instead of port->port_no. This will also make the user-space easier. > > > So I should use net->dev_base_seq + mdb->seq ? > > No you can't, mdb->seq is not stable throughout a dump. What you > can do is save mdb->seq in cb->args[] and in case you continue > dumping from the same mdb in the next call to your dump function > you check if it changed and bump cb->seq if it did to trigger an > interrupt. Ok, will do. Thanks!