ipv6: ioam: Prerequisite patch for ioam6_iptunnel
authorJustin Iurman <justin.iurman@uliege.be>
Sun, 3 Oct 2021 18:45:37 +0000 (20:45 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 Oct 2021 11:53:35 +0000 (12:53 +0100)
This prerequisite patch provides some minor edits (alignments, renames) and a
minor modification inside a function to facilitate the next patch by using
existing nla_* functions.

Signed-off-by: Justin Iurman <justin.iurman@uliege.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ioam6_iptunnel.c

index f9ee045..5d03101 100644 (file)
@@ -9,7 +9,6 @@
 #include <linux/kernel.h>
 #include <linux/skbuff.h>
 #include <linux/net.h>
-#include <linux/netlink.h>
 #include <linux/in6.h>
 #include <linux/ioam6.h>
 #include <linux/ioam6_iptunnel.h>
 #include <net/sock.h>
 #include <net/lwtunnel.h>
 #include <net/ioam6.h>
+#include <net/netlink.h>
 
 #define IOAM6_MASK_SHORT_FIELDS 0xff100000
 #define IOAM6_MASK_WIDE_FIELDS 0xe00000
 
 struct ioam6_lwt_encap {
-       struct ipv6_hopopt_hdr  eh;
-       u8                      pad[2]; /* 2-octet padding for 4n-alignment */
-       struct ioam6_hdr        ioamh;
-       struct ioam6_trace_hdr  traceh;
+       struct ipv6_hopopt_hdr eh;
+       u8 pad[2];                      /* 2-octet padding for 4n-alignment */
+       struct ioam6_hdr ioamh;
+       struct ioam6_trace_hdr traceh;
 } __packed;
 
 struct ioam6_lwt {
@@ -42,7 +42,7 @@ static struct ioam6_lwt_encap *ioam6_lwt_info(struct lwtunnel_state *lwt)
        return &ioam6_lwt_state(lwt)->tuninfo;
 }
 
-static struct ioam6_trace_hdr *ioam6_trace(struct lwtunnel_state *lwt)
+static struct ioam6_trace_hdr *ioam6_lwt_trace(struct lwtunnel_state *lwt)
 {
        return &(ioam6_lwt_state(lwt)->tuninfo.traceh);
 }
@@ -51,25 +51,6 @@ static const struct nla_policy ioam6_iptunnel_policy[IOAM6_IPTUNNEL_MAX + 1] = {
        [IOAM6_IPTUNNEL_TRACE]  = NLA_POLICY_EXACT_LEN(sizeof(struct ioam6_trace_hdr)),
 };
 
-static int nla_put_ioam6_trace(struct sk_buff *skb, int attrtype,
-                              struct ioam6_trace_hdr *trace)
-{
-       struct ioam6_trace_hdr *data;
-       struct nlattr *nla;
-       int len;
-
-       len = sizeof(*trace);
-
-       nla = nla_reserve(skb, attrtype, len);
-       if (!nla)
-               return -EMSGSIZE;
-
-       data = nla_data(nla);
-       memcpy(data, trace, len);
-
-       return 0;
-}
-
 static bool ioam6_validate_trace_hdr(struct ioam6_trace_hdr *trace)
 {
        u32 fields;
@@ -231,36 +212,40 @@ drop:
 static int ioam6_fill_encap_info(struct sk_buff *skb,
                                 struct lwtunnel_state *lwtstate)
 {
-       struct ioam6_trace_hdr *trace = ioam6_trace(lwtstate);
+       struct ioam6_trace_hdr *trace;
+       int err;
 
-       if (nla_put_ioam6_trace(skb, IOAM6_IPTUNNEL_TRACE, trace))
-               return -EMSGSIZE;
+       trace = ioam6_lwt_trace(lwtstate);
+
+       err = nla_put(skb, IOAM6_IPTUNNEL_TRACE, sizeof(*trace), trace);
+       if (err)
+               return err;
 
        return 0;
 }
 
 static int ioam6_encap_nlsize(struct lwtunnel_state *lwtstate)
 {
-       struct ioam6_trace_hdr *trace = ioam6_trace(lwtstate);
+       struct ioam6_trace_hdr *trace = ioam6_lwt_trace(lwtstate);
 
        return nla_total_size(sizeof(*trace));
 }
 
 static int ioam6_encap_cmp(struct lwtunnel_state *a, struct lwtunnel_state *b)
 {
-       struct ioam6_trace_hdr *a_hdr = ioam6_trace(a);
-       struct ioam6_trace_hdr *b_hdr = ioam6_trace(b);
+       struct ioam6_trace_hdr *a_hdr = ioam6_lwt_trace(a);
+       struct ioam6_trace_hdr *b_hdr = ioam6_lwt_trace(b);
 
        return (a_hdr->namespace_id != b_hdr->namespace_id);
 }
 
 static const struct lwtunnel_encap_ops ioam6_iptun_ops = {
-       .build_state    = ioam6_build_state,
+       .build_state            = ioam6_build_state,
        .output         = ioam6_output,
-       .fill_encap     = ioam6_fill_encap_info,
+       .fill_encap             = ioam6_fill_encap_info,
        .get_encap_size = ioam6_encap_nlsize,
-       .cmp_encap      = ioam6_encap_cmp,
-       .owner          = THIS_MODULE,
+       .cmp_encap              = ioam6_encap_cmp,
+       .owner                  = THIS_MODULE,
 };
 
 int __init ioam6_iptunnel_init(void)