#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/netfilter_bridge.h>
#ifdef CONFIG_NETFILTER_FAMILY_BRIDGE
#include <net/netfilter/nf_queue.h>
#endif
#include <linux/neighbour.h>
#include <net/arp.h>
#include <net/dsa.h>
#include <linux/export.h>
#include <linux/rculist.h>
#include "br_private.h"
#include "br_private_tunnel.h"
static int
br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb)
{ … }
static int br_pass_frame_up(struct sk_buff *skb, bool promisc)
{ … }
int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
{ … }
EXPORT_SYMBOL_GPL(…);
static void __br_handle_local_finish(struct sk_buff *skb)
{ … }
static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
{ … }
static int nf_hook_bridge_pre(struct sk_buff *skb, struct sk_buff **pskb)
{ … }
static int br_process_frame_type(struct net_bridge_port *p,
struct sk_buff *skb)
{ … }
static rx_handler_result_t br_handle_frame(struct sk_buff **pskb)
{ … }
static rx_handler_result_t br_handle_frame_dummy(struct sk_buff **pskb)
{ … }
rx_handler_func_t *br_get_rx_handler(const struct net_device *dev)
{ … }
void br_add_frame(struct net_bridge *br, struct br_frame_type *ft)
{ … }
void br_del_frame(struct net_bridge *br, struct br_frame_type *ft)
{ … }