Thread (23 messages) 23 messages, 2 authors, 2017-07-19

Re: [PATCH net-next 09/11] net: dsa: Move FDB dump implementation inside DSA

flat view

From: Arkadi Sharshevsky <hidden>
Date: 2017-07-19 12:00:49


On 07/18/2017 09:06 PM, Vivien Didelot wrote:
Hi Arkadi,

Arkadi Sharshevsky [off-list ref] writes:
quoted
+typedef int dsa_fdb_dump_cb_t(const unsigned char *addr, u16 vid,
+			      u16 ndm_state, void *data);
Can I ask you to change u16 ndm_state for bool is_static at the same
time? Ethernet switches do not need to report more than that.
Will fix, thanks.
quoted
+static int
+dsa_slave_port_fdb_do_dump(const unsigned char *addr, u16 vid,
+			   u16 ndm_state, void *data)
+{
+	struct dsa_slave_dump_ctx *dump = data;
+	u32 portid = NETLINK_CB(dump->cb->skb).portid;
+	u32 seq = dump->cb->nlh->nlmsg_seq;
+	struct nlmsghdr *nlh;
+	struct ndmsg *ndm;
+
+	if (dump->idx < dump->cb->args[2])
+		goto skip;
+
+	nlh = nlmsg_put(dump->skb, portid, seq, RTM_NEWNEIGH,
+			sizeof(*ndm), NLM_F_MULTI);
+	if (!nlh)
+		return -EMSGSIZE;
+
+	ndm = nlmsg_data(nlh);
+	ndm->ndm_family  = AF_BRIDGE;
+	ndm->ndm_pad1    = 0;
+	ndm->ndm_pad2    = 0;
+	ndm->ndm_flags   = NTF_SELF;
+	ndm->ndm_type    = 0;
+	ndm->ndm_ifindex = dump->dev->ifindex;
+	ndm->ndm_state   = ndm_state;
So we can simply scope this here:

        ndm->ndm_state = is_static ? NUD_NOARP : NUD_REACHABLE;
quoted
+
+	if (nla_put(dump->skb, NDA_LLADDR, ETH_ALEN, addr))
+		goto nla_put_failure;
+
+	if (vid && nla_put_u16(dump->skb, NDA_VLAN, vid))
+		goto nla_put_failure;
+
+	nlmsg_end(dump->skb, nlh);
+
+skip:
+	dump->idx++;
+	return 0;
+
+nla_put_failure:
+	nlmsg_cancel(dump->skb, nlh);
+	return -EMSGSIZE;
+}
Other than that, LGTM.


Thanks,

        Vivien
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help