act_ct.c (002c6ca75289a4ac4f6738213dd2d258704886e4) | act_ct.c (52d1aa8b8249ff477aaa38b6f74a8ced780d079c) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB 2/* - 3 * net/sched/act_ct.c Connection Tracking action 4 * 5 * Authors: Paul Blakey <paulb@mellanox.com> 6 * Yossi Kuperman <yossiku@mellanox.com> 7 * Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> 8 */ --- 164 unchanged lines hidden (view full) --- 173 struct nf_conn_labels *ct_labels; 174 struct flow_action_entry *entry; 175 enum ip_conntrack_info ctinfo; 176 u32 *act_ct_labels; 177 178 entry = tcf_ct_flow_table_flow_action_get_next(action); 179 entry->id = FLOW_ACTION_CT_METADATA; 180#if IS_ENABLED(CONFIG_NF_CONNTRACK_MARK) | 1// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB 2/* - 3 * net/sched/act_ct.c Connection Tracking action 4 * 5 * Authors: Paul Blakey <paulb@mellanox.com> 6 * Yossi Kuperman <yossiku@mellanox.com> 7 * Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> 8 */ --- 164 unchanged lines hidden (view full) --- 173 struct nf_conn_labels *ct_labels; 174 struct flow_action_entry *entry; 175 enum ip_conntrack_info ctinfo; 176 u32 *act_ct_labels; 177 178 entry = tcf_ct_flow_table_flow_action_get_next(action); 179 entry->id = FLOW_ACTION_CT_METADATA; 180#if IS_ENABLED(CONFIG_NF_CONNTRACK_MARK) |
181 entry->ct_metadata.mark = ct->mark; | 181 entry->ct_metadata.mark = READ_ONCE(ct->mark); |
182#endif 183 ctinfo = dir == IP_CT_DIR_ORIGINAL ? IP_CT_ESTABLISHED : 184 IP_CT_ESTABLISHED_REPLY; 185 /* aligns with the CT reference on the SKB nf_ct_set */ 186 entry->ct_metadata.cookie = (unsigned long)ct | ctinfo; 187 entry->ct_metadata.orig_dir = dir == IP_CT_DIR_ORIGINAL; 188 189 act_ct_labels = entry->ct_metadata.labels; --- 741 unchanged lines hidden (view full) --- 931static void tcf_ct_act_set_mark(struct nf_conn *ct, u32 mark, u32 mask) 932{ 933#if IS_ENABLED(CONFIG_NF_CONNTRACK_MARK) 934 u32 new_mark; 935 936 if (!mask) 937 return; 938 | 182#endif 183 ctinfo = dir == IP_CT_DIR_ORIGINAL ? IP_CT_ESTABLISHED : 184 IP_CT_ESTABLISHED_REPLY; 185 /* aligns with the CT reference on the SKB nf_ct_set */ 186 entry->ct_metadata.cookie = (unsigned long)ct | ctinfo; 187 entry->ct_metadata.orig_dir = dir == IP_CT_DIR_ORIGINAL; 188 189 act_ct_labels = entry->ct_metadata.labels; --- 741 unchanged lines hidden (view full) --- 931static void tcf_ct_act_set_mark(struct nf_conn *ct, u32 mark, u32 mask) 932{ 933#if IS_ENABLED(CONFIG_NF_CONNTRACK_MARK) 934 u32 new_mark; 935 936 if (!mask) 937 return; 938 |
939 new_mark = mark | (ct->mark & ~(mask)); 940 if (ct->mark != new_mark) { 941 ct->mark = new_mark; | 939 new_mark = mark | (READ_ONCE(ct->mark) & ~(mask)); 940 if (READ_ONCE(ct->mark) != new_mark) { 941 WRITE_ONCE(ct->mark, new_mark); |
942 if (nf_ct_is_confirmed(ct)) 943 nf_conntrack_event_cache(IPCT_MARK, ct); 944 } 945#endif 946} 947 948static void tcf_ct_act_set_labels(struct nf_conn *ct, 949 u32 *labels, --- 733 unchanged lines hidden --- | 942 if (nf_ct_is_confirmed(ct)) 943 nf_conntrack_event_cache(IPCT_MARK, ct); 944 } 945#endif 946} 947 948static void tcf_ct_act_set_labels(struct nf_conn *ct, 949 u32 *labels, --- 733 unchanged lines hidden --- |