net: tc_skbedit: Factor a helper out of is_tcf_skbedit_{mark, ptype}()
authorPetr Machata <petrm@mellanox.com>
Thu, 19 Mar 2020 13:47:20 +0000 (15:47 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Mar 2020 04:09:19 +0000 (21:09 -0700)
The two functions is_tcf_skbedit_mark() and is_tcf_skbedit_ptype() have a
very similar structure. A follow-up patch will add one more such function.
Instead of more cut'n'pasting, extract a helper function that checks
whether a TC action is an skbedit with the required flag. Convert the two
existing functions into thin wrappers around the helper.

Signed-off-by: Petr Machata <petrm@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tc_act/tc_skbedit.h

index b22a1f641f02cc59a2c0196ad17523bf45574544..ac8ff60143fee7d681317533f58affac7cc3fe22 100644 (file)
@@ -27,8 +27,8 @@ struct tcf_skbedit {
 };
 #define to_skbedit(a) ((struct tcf_skbedit *)a)
 
-/* Return true iff action is mark */
-static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
+/* Return true iff action is the one identified by FLAG. */
+static inline bool is_tcf_skbedit_with_flag(const struct tc_action *a, u32 flag)
 {
 #ifdef CONFIG_NET_CLS_ACT
        u32 flags;
@@ -37,12 +37,18 @@ static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
                rcu_read_lock();
                flags = rcu_dereference(to_skbedit(a)->params)->flags;
                rcu_read_unlock();
-               return flags == SKBEDIT_F_MARK;
+               return flags == flag;
        }
 #endif
        return false;
 }
 
+/* Return true iff action is mark */
+static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
+{
+       return is_tcf_skbedit_with_flag(a, SKBEDIT_F_MARK);
+}
+
 static inline u32 tcf_skbedit_mark(const struct tc_action *a)
 {
        u32 mark;
@@ -57,17 +63,7 @@ static inline u32 tcf_skbedit_mark(const struct tc_action *a)
 /* Return true iff action is ptype */
 static inline bool is_tcf_skbedit_ptype(const struct tc_action *a)
 {
-#ifdef CONFIG_NET_CLS_ACT
-       u32 flags;
-
-       if (a->ops && a->ops->id == TCA_ID_SKBEDIT) {
-               rcu_read_lock();
-               flags = rcu_dereference(to_skbedit(a)->params)->flags;
-               rcu_read_unlock();
-               return flags == SKBEDIT_F_PTYPE;
-       }
-#endif
-       return false;
+       return is_tcf_skbedit_with_flag(a, SKBEDIT_F_PTYPE);
 }
 
 static inline u32 tcf_skbedit_ptype(const struct tc_action *a)