Re: [PATCH v10] net: bonding: Add support for IPV6 ns/na to balance-alb/balance-tlb mode

From: 孙守鑫
Date: Fri Jan 28 2022 - 06:46:21 EST



Thanks your comment, I'll adjust it and send out v11 soon.


在 2022/1/28 10:47, Jakub Kicinski 写道:
On Tue, 25 Jan 2022 09:24:18 -0500 Sun Shouxin wrote:
+/* determine if the packet is NA or NS */
+static bool __alb_determine_nd(struct icmp6hdr *hdr)
+{
+ if (hdr->icmp6_type == NDISC_NEIGHBOUR_ADVERTISEMENT ||
+ hdr->icmp6_type == NDISC_NEIGHBOUR_SOLICITATION) {
+ return true;
+ }
+
+ return false;
+}
+
+static bool alb_determine_nd(struct sk_buff *skb, struct bonding *bond)
+{
+ struct ipv6hdr *ip6hdr;
+ struct icmp6hdr *hdr;
+
+ if (!pskb_network_may_pull(skb, sizeof(*ip6hdr)))
+ return true;
+
+ ip6hdr = ipv6_hdr(skb);
+ if (ip6hdr->nexthdr == IPPROTO_ICMPV6) {
if (ip6hdr->nexthdr != IPPROTO_ICMPV6)
return false;

This way there's no need to indent the rest of the function.

+ if (!pskb_may_pull(skb, sizeof(*ip6hdr) + sizeof(*hdr)))
What happened to the _network part? pskb_network_may_pull(), right?

+ return true;
+
+ hdr = icmp6_hdr(skb);
+ return __alb_determine_nd(hdr);
Why create a full helper for this condition? Why not just:

return hdr->icmp6_type == NDISC_NEIGHBOUR_ADVERTISEMENT ||
hdr->icmp6_type == NDISC_NEIGHBOUR_SOLICITATION;


+ }
+
+ return false;
+}