#include "ipvlan.h"
static u32 ipvlan_jhash_secret __read_mostly;
void ipvlan_init_secret(void)
{ … }
void ipvlan_count_rx(const struct ipvl_dev *ipvlan,
unsigned int len, bool success, bool mcast)
{ … }
EXPORT_SYMBOL_GPL(…);
#if IS_ENABLED(CONFIG_IPV6)
static u8 ipvlan_get_v6_hash(const void *iaddr)
{ … }
#else
static u8 ipvlan_get_v6_hash(const void *iaddr)
{
return 0;
}
#endif
static u8 ipvlan_get_v4_hash(const void *iaddr)
{ … }
static bool addr_equal(bool is_v6, struct ipvl_addr *addr, const void *iaddr)
{ … }
static struct ipvl_addr *ipvlan_ht_addr_lookup(const struct ipvl_port *port,
const void *iaddr, bool is_v6)
{ … }
void ipvlan_ht_addr_add(struct ipvl_dev *ipvlan, struct ipvl_addr *addr)
{ … }
void ipvlan_ht_addr_del(struct ipvl_addr *addr)
{ … }
struct ipvl_addr *ipvlan_find_addr(const struct ipvl_dev *ipvlan,
const void *iaddr, bool is_v6)
{ … }
bool ipvlan_addr_busy(struct ipvl_port *port, void *iaddr, bool is_v6)
{ … }
void *ipvlan_get_L3_hdr(struct ipvl_port *port, struct sk_buff *skb, int *type)
{ … }
unsigned int ipvlan_mac_hash(const unsigned char *addr)
{ … }
void ipvlan_process_multicast(struct work_struct *work)
{ … }
static void ipvlan_skb_crossing_ns(struct sk_buff *skb, struct net_device *dev)
{ … }
static int ipvlan_rcv_frame(struct ipvl_addr *addr, struct sk_buff **pskb,
bool local)
{ … }
struct ipvl_addr *ipvlan_addr_lookup(struct ipvl_port *port, void *lyr3h,
int addr_type, bool use_dest)
{ … }
static noinline_for_stack int ipvlan_process_v4_outbound(struct sk_buff *skb)
{ … }
#if IS_ENABLED(CONFIG_IPV6)
static noinline_for_stack int
ipvlan_route_v6_outbound(struct net_device *dev, struct sk_buff *skb)
{ … }
static int ipvlan_process_v6_outbound(struct sk_buff *skb)
{ … }
#else
static int ipvlan_process_v6_outbound(struct sk_buff *skb)
{
return NET_XMIT_DROP;
}
#endif
static int ipvlan_process_outbound(struct sk_buff *skb)
{ … }
static void ipvlan_multicast_enqueue(struct ipvl_port *port,
struct sk_buff *skb, bool tx_pkt)
{ … }
static int ipvlan_xmit_mode_l3(struct sk_buff *skb, struct net_device *dev)
{ … }
static int ipvlan_xmit_mode_l2(struct sk_buff *skb, struct net_device *dev)
{ … }
int ipvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
{ … }
static bool ipvlan_external_frame(struct sk_buff *skb, struct ipvl_port *port)
{ … }
static rx_handler_result_t ipvlan_handle_mode_l3(struct sk_buff **pskb,
struct ipvl_port *port)
{ … }
static rx_handler_result_t ipvlan_handle_mode_l2(struct sk_buff **pskb,
struct ipvl_port *port)
{ … }
rx_handler_result_t ipvlan_handle_frame(struct sk_buff **pskb)
{ … }