linux/drivers/net/ipvlan/ipvlan_main.c

// SPDX-License-Identifier: GPL-2.0-or-later
/* Copyright (c) 2014 Mahesh Bandewar <[email protected]>
 */

#include <linux/ethtool.h>

#include "ipvlan.h"

static int ipvlan_set_port_mode(struct ipvl_port *port, u16 nval,
				struct netlink_ext_ack *extack)
{}

static int ipvlan_port_create(struct net_device *dev)
{}

static void ipvlan_port_destroy(struct net_device *dev)
{}

#define IPVLAN_ALWAYS_ON_OFLOADS

#define IPVLAN_ALWAYS_ON

#define IPVLAN_FEATURES

	/* NETIF_F_GSO_ENCAP_ALL NETIF_F_GSO_SOFTWARE Newly added */

#define IPVLAN_STATE_MASK

static int ipvlan_init(struct net_device *dev)
{}

static void ipvlan_uninit(struct net_device *dev)
{}

static int ipvlan_open(struct net_device *dev)
{}

static int ipvlan_stop(struct net_device *dev)
{}

static netdev_tx_t ipvlan_start_xmit(struct sk_buff *skb,
				     struct net_device *dev)
{}

static netdev_features_t ipvlan_fix_features(struct net_device *dev,
					     netdev_features_t features)
{}

static void ipvlan_change_rx_flags(struct net_device *dev, int change)
{}

static void ipvlan_set_multicast_mac_filter(struct net_device *dev)
{}

static void ipvlan_get_stats64(struct net_device *dev,
			       struct rtnl_link_stats64 *s)
{}

static int ipvlan_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
{}

static int ipvlan_vlan_rx_kill_vid(struct net_device *dev, __be16 proto,
				   u16 vid)
{}

static int ipvlan_get_iflink(const struct net_device *dev)
{}

static const struct net_device_ops ipvlan_netdev_ops =;

static int ipvlan_hard_header(struct sk_buff *skb, struct net_device *dev,
			      unsigned short type, const void *daddr,
			      const void *saddr, unsigned len)
{}

static const struct header_ops ipvlan_header_ops =;

static void ipvlan_adjust_mtu(struct ipvl_dev *ipvlan, struct net_device *dev)
{}

static bool netif_is_ipvlan(const struct net_device *dev)
{}

static int ipvlan_ethtool_get_link_ksettings(struct net_device *dev,
					     struct ethtool_link_ksettings *cmd)
{}

static void ipvlan_ethtool_get_drvinfo(struct net_device *dev,
				       struct ethtool_drvinfo *drvinfo)
{}

static u32 ipvlan_ethtool_get_msglevel(struct net_device *dev)
{}

static void ipvlan_ethtool_set_msglevel(struct net_device *dev, u32 value)
{}

static const struct ethtool_ops ipvlan_ethtool_ops =;

static int ipvlan_nl_changelink(struct net_device *dev,
				struct nlattr *tb[], struct nlattr *data[],
				struct netlink_ext_ack *extack)
{}

static size_t ipvlan_nl_getsize(const struct net_device *dev)
{}

static int ipvlan_nl_validate(struct nlattr *tb[], struct nlattr *data[],
			      struct netlink_ext_ack *extack)
{}

static int ipvlan_nl_fillinfo(struct sk_buff *skb,
			      const struct net_device *dev)
{}

int ipvlan_link_new(struct net *src_net, struct net_device *dev,
		    struct nlattr *tb[], struct nlattr *data[],
		    struct netlink_ext_ack *extack)
{}
EXPORT_SYMBOL_GPL();

void ipvlan_link_delete(struct net_device *dev, struct list_head *head)
{}
EXPORT_SYMBOL_GPL();

void ipvlan_link_setup(struct net_device *dev)
{}
EXPORT_SYMBOL_GPL();

static const struct nla_policy ipvlan_nl_policy[IFLA_IPVLAN_MAX + 1] =;

static struct net *ipvlan_get_link_net(const struct net_device *dev)
{}

static struct rtnl_link_ops ipvlan_link_ops =;

int ipvlan_link_register(struct rtnl_link_ops *ops)
{}
EXPORT_SYMBOL_GPL();

static int ipvlan_device_event(struct notifier_block *unused,
			       unsigned long event, void *ptr)
{}

/* the caller must held the addrs lock */
static int ipvlan_add_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6)
{}

static void ipvlan_del_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6)
{}

static bool ipvlan_is_valid_dev(const struct net_device *dev)
{}

#if IS_ENABLED(CONFIG_IPV6)
static int ipvlan_add_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr)
{}

static void ipvlan_del_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr)
{}

static int ipvlan_addr6_event(struct notifier_block *unused,
			      unsigned long event, void *ptr)
{}

static int ipvlan_addr6_validator_event(struct notifier_block *unused,
					unsigned long event, void *ptr)
{}
#endif

static int ipvlan_add_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr)
{}

static void ipvlan_del_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr)
{}

static int ipvlan_addr4_event(struct notifier_block *unused,
			      unsigned long event, void *ptr)
{}

static int ipvlan_addr4_validator_event(struct notifier_block *unused,
					unsigned long event, void *ptr)
{}

static struct notifier_block ipvlan_addr4_notifier_block __read_mostly =;

static struct notifier_block ipvlan_addr4_vtor_notifier_block __read_mostly =;

static struct notifier_block ipvlan_notifier_block __read_mostly =;

#if IS_ENABLED(CONFIG_IPV6)
static struct notifier_block ipvlan_addr6_notifier_block __read_mostly =;

static struct notifier_block ipvlan_addr6_vtor_notifier_block __read_mostly =;
#endif

static int __init ipvlan_init_module(void)
{}

static void __exit ipvlan_cleanup_module(void)
{}

module_init();
module_exit(ipvlan_cleanup_module);

MODULE_LICENSE();
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_ALIAS_RTNL_LINK();