On 11/1/21 10:34 AM, Leonard Crestez wrote: > diff --git a/net/ipv4/tcp_authopt.c b/net/ipv4/tcp_authopt.c > new file mode 100644 > index 000000000000..c412a712f229 > --- /dev/null > +++ b/net/ipv4/tcp_authopt.c > @@ -0,0 +1,263 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > + > +#include <linux/kernel.h> > +#include <net/tcp.h> > +#include <net/tcp_authopt.h> > +#include <crypto/hash.h> > + > +/* checks that ipv4 or ipv6 addr matches. */ > +static bool ipvx_addr_match(struct sockaddr_storage *a1, > + struct sockaddr_storage *a2) > +{ > + if (a1->ss_family != a2->ss_family) > + return false; > + if (a1->ss_family == AF_INET && > + (((struct sockaddr_in *)a1)->sin_addr.s_addr != > + ((struct sockaddr_in *)a2)->sin_addr.s_addr)) > + return false; > + if (a1->ss_family == AF_INET6 && > + !ipv6_addr_equal(&((struct sockaddr_in6 *)a1)->sin6_addr, > + &((struct sockaddr_in6 *)a2)->sin6_addr)) > + return false; The above 2 could just be if (a1->ss_family == AF_INET) return (((struct sockaddr_in *)a1)->sin_addr.s_addr == ((struct sockaddr_in *)a2)->sin_addr.s_addr))