linux/net/ipv6/ioam6.c

// SPDX-License-Identifier: GPL-2.0+
/*
 *  IPv6 IOAM implementation
 *
 *  Author:
 *  Justin Iurman <[email protected]>
 */

#include <linux/errno.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/net.h>
#include <linux/ioam6.h>
#include <linux/ioam6_genl.h>
#include <linux/rhashtable.h>
#include <linux/netdevice.h>

#include <net/addrconf.h>
#include <net/genetlink.h>
#include <net/ioam6.h>
#include <net/sch_generic.h>

static void ioam6_ns_release(struct ioam6_namespace *ns)
{}

static void ioam6_sc_release(struct ioam6_schema *sc)
{}

static void ioam6_free_ns(void *ptr, void *arg)
{}

static void ioam6_free_sc(void *ptr, void *arg)
{}

static int ioam6_ns_cmpfn(struct rhashtable_compare_arg *arg, const void *obj)
{}

static int ioam6_sc_cmpfn(struct rhashtable_compare_arg *arg, const void *obj)
{}

static const struct rhashtable_params rht_ns_params =;

static const struct rhashtable_params rht_sc_params =;

static struct genl_family ioam6_genl_family;

static const struct nla_policy ioam6_genl_policy_addns[] =;

static const struct nla_policy ioam6_genl_policy_delns[] =;

static const struct nla_policy ioam6_genl_policy_addsc[] =;

static const struct nla_policy ioam6_genl_policy_delsc[] =;

static const struct nla_policy ioam6_genl_policy_ns_sc[] =;

static int ioam6_genl_addns(struct sk_buff *skb, struct genl_info *info)
{}

static int ioam6_genl_delns(struct sk_buff *skb, struct genl_info *info)
{}

static int __ioam6_genl_dumpns_element(struct ioam6_namespace *ns,
				       u32 portid,
				       u32 seq,
				       u32 flags,
				       struct sk_buff *skb,
				       u8 cmd)
{}

static int ioam6_genl_dumpns_start(struct netlink_callback *cb)
{}

static int ioam6_genl_dumpns_done(struct netlink_callback *cb)
{}

static int ioam6_genl_dumpns(struct sk_buff *skb, struct netlink_callback *cb)
{}

static int ioam6_genl_addsc(struct sk_buff *skb, struct genl_info *info)
{}

static int ioam6_genl_delsc(struct sk_buff *skb, struct genl_info *info)
{}

static int __ioam6_genl_dumpsc_element(struct ioam6_schema *sc,
				       u32 portid, u32 seq, u32 flags,
				       struct sk_buff *skb, u8 cmd)
{}

static int ioam6_genl_dumpsc_start(struct netlink_callback *cb)
{}

static int ioam6_genl_dumpsc_done(struct netlink_callback *cb)
{}

static int ioam6_genl_dumpsc(struct sk_buff *skb, struct netlink_callback *cb)
{}

static int ioam6_genl_ns_set_schema(struct sk_buff *skb, struct genl_info *info)
{}

static const struct genl_ops ioam6_genl_ops[] =;

#define IOAM6_GENL_EV_GRP_OFFSET

static const struct genl_multicast_group ioam6_mcgrps[] =;

static int ioam6_event_put_trace(struct sk_buff *skb,
				 struct ioam6_trace_hdr *trace,
				 unsigned int len)
{}

void ioam6_event(enum ioam6_event_type type, struct net *net, gfp_t gfp,
		 void *opt, unsigned int opt_len)
{}

static struct genl_family ioam6_genl_family __ro_after_init =;

struct ioam6_namespace *ioam6_namespace(struct net *net, __be16 id)
{}

static void __ioam6_fill_trace_data(struct sk_buff *skb,
				    struct ioam6_namespace *ns,
				    struct ioam6_trace_hdr *trace,
				    struct ioam6_schema *sc,
				    u8 sclen, bool is_input)
{}

/* called with rcu_read_lock() */
void ioam6_fill_trace_data(struct sk_buff *skb,
			   struct ioam6_namespace *ns,
			   struct ioam6_trace_hdr *trace,
			   bool is_input)
{}

static int __net_init ioam6_net_init(struct net *net)
{}

static void __net_exit ioam6_net_exit(struct net *net)
{}

static struct pernet_operations ioam6_net_ops =;

int __init ioam6_init(void)
{}

void ioam6_exit(void)
{}