netfilter: ctnetlink: allow userspace to modify labels
Add the ability to set/clear labels assigned to a conntrack via ctnetlink. To allow userspace to only alter specific bits, Pablo suggested to add a new CTA_LABELS_MASK attribute: The new set of active labels is then determined via active = (active & ~mask) ^ changeset i.e., the mask selects those bits in the existing set that should be changed. This follows the same method already used by MARK and CONNMARK targets. Omitting CTA_LABELS_MASK is the same as setting all bits in CTA_LABELS_MASK to 1: The existing set is replaced by the one from userspace. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:

committed by
Pablo Neira Ayuso

父節點
0ceabd8387
當前提交
9b21f6a909
@@ -46,6 +46,9 @@ static inline struct nf_conn_labels *nf_ct_labels_ext_add(struct nf_conn *ct)
|
||||
bool nf_connlabel_match(const struct nf_conn *ct, u16 bit);
|
||||
int nf_connlabel_set(struct nf_conn *ct, u16 bit);
|
||||
|
||||
int nf_connlabels_replace(struct nf_conn *ct,
|
||||
const u32 *data, const u32 *mask, unsigned int words);
|
||||
|
||||
#ifdef CONFIG_NF_CONNTRACK_LABELS
|
||||
int nf_conntrack_labels_init(struct net *net);
|
||||
void nf_conntrack_labels_fini(struct net *net);
|
||||
|
Reference in New Issue
Block a user