Messages in this thread | | | Date | Thu, 27 Jan 2022 18:47:22 -0800 | From | Jakub Kicinski <> | Subject | Re: [PATCH v10] net: bonding: Add support for IPV6 ns/na to balance-alb/balance-tlb mode |
| |
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; > +}
| |