linux/net/netfilter/ipset/ip_set_list_set.c

// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (C) 2008-2013 Jozsef Kadlecsik <[email protected]> */

/* Kernel module implementing an IP set type: the list:set type */

#include <linux/module.h>
#include <linux/ip.h>
#include <linux/rculist.h>
#include <linux/skbuff.h>
#include <linux/errno.h>

#include <linux/netfilter/ipset/ip_set.h>
#include <linux/netfilter/ipset/ip_set_list.h>

#define IPSET_TYPE_REV_MIN
/*				1    Counters support added */
/*				2    Comments support added */
#define IPSET_TYPE_REV_MAX

MODULE_LICENSE();
MODULE_AUTHOR();
IP_SET_MODULE_DESC();
MODULE_ALIAS();

/* Member elements  */
struct set_elem {} __aligned();

struct set_adt_elem {};

/* Type structure */
struct list_set {};

static int
list_set_ktest(struct ip_set *set, const struct sk_buff *skb,
	       const struct xt_action_param *par,
	       struct ip_set_adt_opt *opt, const struct ip_set_ext *ext)
{}

static int
list_set_kadd(struct ip_set *set, const struct sk_buff *skb,
	      const struct xt_action_param *par,
	      struct ip_set_adt_opt *opt, const struct ip_set_ext *ext)
{}

static int
list_set_kdel(struct ip_set *set, const struct sk_buff *skb,
	      const struct xt_action_param *par,
	      struct ip_set_adt_opt *opt, const struct ip_set_ext *ext)
{}

static int
list_set_kadt(struct ip_set *set, const struct sk_buff *skb,
	      const struct xt_action_param *par,
	      enum ipset_adt adt, struct ip_set_adt_opt *opt)
{}

/* Userspace interfaces: we are protected by the nfnl mutex */

static void
__list_set_del_rcu(struct rcu_head * rcu)
{}

static void
list_set_del(struct ip_set *set, struct set_elem *e)
{}

static void
list_set_replace(struct ip_set *set, struct set_elem *e, struct set_elem *old)
{}

static void
set_cleanup_entries(struct ip_set *set)
{}

static int
list_set_utest(struct ip_set *set, void *value, const struct ip_set_ext *ext,
	       struct ip_set_ext *mext, u32 flags)
{}

static void
list_set_init_extensions(struct ip_set *set, const struct ip_set_ext *ext,
			 struct set_elem *e)
{}

static int
list_set_uadd(struct ip_set *set, void *value, const struct ip_set_ext *ext,
	      struct ip_set_ext *mext, u32 flags)
{}

static int
list_set_udel(struct ip_set *set, void *value, const struct ip_set_ext *ext,
	      struct ip_set_ext *mext, u32 flags)
{}

static int
list_set_uadt(struct ip_set *set, struct nlattr *tb[],
	      enum ipset_adt adt, u32 *lineno, u32 flags, bool retried)
{}

static void
list_set_flush(struct ip_set *set)
{}

static void
list_set_destroy(struct ip_set *set)
{}

/* Calculate the actual memory size of the set data */
static size_t
list_set_memsize(const struct list_set *map, size_t dsize)
{}

static int
list_set_head(struct ip_set *set, struct sk_buff *skb)
{}

static int
list_set_list(const struct ip_set *set,
	      struct sk_buff *skb, struct netlink_callback *cb)
{}

static bool
list_set_same_set(const struct ip_set *a, const struct ip_set *b)
{}

static void
list_set_cancel_gc(struct ip_set *set)
{}

static const struct ip_set_type_variant set_variant =;

static void
list_set_gc(struct timer_list *t)
{}

static void
list_set_gc_init(struct ip_set *set, void (*gc)(struct timer_list *t))
{}

/* Create list:set type of sets */

static bool
init_list_set(struct net *net, struct ip_set *set, u32 size)
{}

static int
list_set_create(struct net *net, struct ip_set *set, struct nlattr *tb[],
		u32 flags)
{}

static struct ip_set_type list_set_type __read_mostly =;

static int __init
list_set_init(void)
{}

static void __exit
list_set_fini(void)
{}

module_init();
module_exit(list_set_fini);