flow_dissector: prepare for encapsulated control flags
authorAsbjørn Sloth Tønnesen <ast@fiberby.net>
Sat, 13 Jul 2024 02:19:03 +0000 (02:19 +0000)
committerJakub Kicinski <kuba@kernel.org>
Mon, 15 Jul 2024 16:14:38 +0000 (09:14 -0700)
Rename skb_flow_dissect_set_enc_addr_type() to
skb_flow_dissect_set_enc_control(), and make it set both
addr_type and flags in FLOW_DISSECTOR_KEY_ENC_CONTROL.

Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net>
Tested-by: Davide Caratti <dcaratti@redhat.com>
Reviewed-by: Davide Caratti <dcaratti@redhat.com>
Link: https://patch.msgid.link/20240713021911.1631517-7-ast@fiberby.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/flow_dissector.c

index e64a263798070a30d08eb0bba90a33370ddbe4fa..1614c6708ea7c2ab9e1ded9f1dfceadbd675403e 100644 (file)
@@ -299,9 +299,10 @@ void skb_flow_dissect_meta(const struct sk_buff *skb,
 EXPORT_SYMBOL(skb_flow_dissect_meta);
 
 static void
-skb_flow_dissect_set_enc_addr_type(enum flow_dissector_key_id type,
-                                  struct flow_dissector *flow_dissector,
-                                  void *target_container)
+skb_flow_dissect_set_enc_control(enum flow_dissector_key_id type,
+                                u32 ctrl_flags,
+                                struct flow_dissector *flow_dissector,
+                                void *target_container)
 {
        struct flow_dissector_key_control *ctrl;
 
@@ -312,6 +313,7 @@ skb_flow_dissect_set_enc_addr_type(enum flow_dissector_key_id type,
                                         FLOW_DISSECTOR_KEY_ENC_CONTROL,
                                         target_container);
        ctrl->addr_type = type;
+       ctrl->flags = ctrl_flags;
 }
 
 void
@@ -367,6 +369,7 @@ skb_flow_dissect_tunnel_info(const struct sk_buff *skb,
 {
        struct ip_tunnel_info *info;
        struct ip_tunnel_key *key;
+       u32 ctrl_flags = 0;
 
        /* A quick check to see if there might be something to do. */
        if (!dissector_uses_key(flow_dissector,
@@ -395,9 +398,9 @@ skb_flow_dissect_tunnel_info(const struct sk_buff *skb,
 
        switch (ip_tunnel_info_af(info)) {
        case AF_INET:
-               skb_flow_dissect_set_enc_addr_type(FLOW_DISSECTOR_KEY_IPV4_ADDRS,
-                                                  flow_dissector,
-                                                  target_container);
+               skb_flow_dissect_set_enc_control(FLOW_DISSECTOR_KEY_IPV4_ADDRS,
+                                                ctrl_flags, flow_dissector,
+                                                target_container);
                if (dissector_uses_key(flow_dissector,
                                       FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS)) {
                        struct flow_dissector_key_ipv4_addrs *ipv4;
@@ -410,9 +413,9 @@ skb_flow_dissect_tunnel_info(const struct sk_buff *skb,
                }
                break;
        case AF_INET6:
-               skb_flow_dissect_set_enc_addr_type(FLOW_DISSECTOR_KEY_IPV6_ADDRS,
-                                                  flow_dissector,
-                                                  target_container);
+               skb_flow_dissect_set_enc_control(FLOW_DISSECTOR_KEY_IPV6_ADDRS,
+                                                ctrl_flags, flow_dissector,
+                                                target_container);
                if (dissector_uses_key(flow_dissector,
                                       FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS)) {
                        struct flow_dissector_key_ipv6_addrs *ipv6;