root/include/net/netfilter/nf_conntrack_labels.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. nf_ct_labels_find
  2. nf_ct_labels_ext_add
  3. nf_conntrack_labels_init
  4. nf_conntrack_labels_fini
  5. nf_connlabels_get
  6. nf_connlabels_put

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 
   3 #ifndef _NF_CONNTRACK_LABELS_H
   4 #define _NF_CONNTRACK_LABELS_H
   5 
   6 #include <linux/netfilter/nf_conntrack_common.h>
   7 #include <linux/netfilter/nf_conntrack_tuple_common.h>
   8 #include <linux/types.h>
   9 #include <net/net_namespace.h>
  10 #include <net/netfilter/nf_conntrack.h>
  11 #include <net/netfilter/nf_conntrack_extend.h>
  12 #include <uapi/linux/netfilter/xt_connlabel.h>
  13 
  14 #define NF_CT_LABELS_MAX_SIZE ((XT_CONNLABEL_MAXBIT + 1) / BITS_PER_BYTE)
  15 
  16 struct nf_conn_labels {
  17         unsigned long bits[NF_CT_LABELS_MAX_SIZE / sizeof(long)];
  18 };
  19 
  20 static inline struct nf_conn_labels *nf_ct_labels_find(const struct nf_conn *ct)
  21 {
  22 #ifdef CONFIG_NF_CONNTRACK_LABELS
  23         return nf_ct_ext_find(ct, NF_CT_EXT_LABELS);
  24 #else
  25         return NULL;
  26 #endif
  27 }
  28 
  29 static inline struct nf_conn_labels *nf_ct_labels_ext_add(struct nf_conn *ct)
  30 {
  31 #ifdef CONFIG_NF_CONNTRACK_LABELS
  32         struct net *net = nf_ct_net(ct);
  33 
  34         if (net->ct.labels_used == 0)
  35                 return NULL;
  36 
  37         return nf_ct_ext_add(ct, NF_CT_EXT_LABELS, GFP_ATOMIC);
  38 #else
  39         return NULL;
  40 #endif
  41 }
  42 
  43 int nf_connlabels_replace(struct nf_conn *ct,
  44                           const u32 *data, const u32 *mask, unsigned int words);
  45 
  46 #ifdef CONFIG_NF_CONNTRACK_LABELS
  47 int nf_conntrack_labels_init(void);
  48 void nf_conntrack_labels_fini(void);
  49 int nf_connlabels_get(struct net *net, unsigned int bit);
  50 void nf_connlabels_put(struct net *net);
  51 #else
  52 static inline int nf_conntrack_labels_init(void) { return 0; }
  53 static inline void nf_conntrack_labels_fini(void) {}
  54 static inline int nf_connlabels_get(struct net *net, unsigned int bit) { return 0; }
  55 static inline void nf_connlabels_put(struct net *net) {}
  56 #endif
  57 
  58 #endif /* _NF_CONNTRACK_LABELS_H */

/* [<][>][^][v][top][bottom][index][help] */