linux/net/sched/act_mpls.c

// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/* Copyright (C) 2019 Netronome Systems, Inc. */

#include <linux/if_arp.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mpls.h>
#include <linux/rtnetlink.h>
#include <linux/skbuff.h>
#include <linux/tc_act/tc_mpls.h>
#include <net/mpls.h>
#include <net/netlink.h>
#include <net/pkt_sched.h>
#include <net/pkt_cls.h>
#include <net/tc_act/tc_mpls.h>
#include <net/tc_wrapper.h>

static struct tc_action_ops act_mpls_ops;

#define ACT_MPLS_TTL_DEFAULT

static __be32 tcf_mpls_get_lse(struct mpls_shim_hdr *lse,
			       struct tcf_mpls_params *p, bool set_bos)
{}

TC_INDIRECT_SCOPE int tcf_mpls_act(struct sk_buff *skb,
				   const struct tc_action *a,
				   struct tcf_result *res)
{}

static int valid_label(const struct nlattr *attr,
		       struct netlink_ext_ack *extack)
{}

static const struct nla_policy mpls_policy[TCA_MPLS_MAX + 1] =;

static int tcf_mpls_init(struct net *net, struct nlattr *nla,
			 struct nlattr *est, struct tc_action **a,
			 struct tcf_proto *tp, u32 flags,
			 struct netlink_ext_ack *extack)
{}

static void tcf_mpls_cleanup(struct tc_action *a)
{}

static int tcf_mpls_dump(struct sk_buff *skb, struct tc_action *a,
			 int bind, int ref)
{}

static int tcf_mpls_offload_act_setup(struct tc_action *act, void *entry_data,
				      u32 *index_inc, bool bind,
				      struct netlink_ext_ack *extack)
{}

static struct tc_action_ops act_mpls_ops =;
MODULE_ALIAS_NET_ACT();

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

static void __net_exit mpls_exit_net(struct list_head *net_list)
{}

static struct pernet_operations mpls_net_ops =;

static int __init mpls_init_module(void)
{}

static void __exit mpls_cleanup_module(void)
{}

module_init();
module_exit(mpls_cleanup_module);

MODULE_SOFTDEP();
MODULE_AUTHOR();
MODULE_LICENSE();
MODULE_DESCRIPTION();