mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Merge branch 'master' of /repos/git/net-next-2.6
Conflicts: include/net/netfilter/xt_rateest.h net/bridge/br_netfilter.c net/netfilter/nf_conntrack_core.c Signed-off-by: Patrick McHardy <[email protected]>
This commit is contained in:
commit
f9181f4ffc
531 changed files with 14835 additions and 8682 deletions
|
|
@ -63,7 +63,6 @@ static int __init br_init(void)
|
|||
goto err_out4;
|
||||
|
||||
brioctl_set(br_ioctl_deviceless_stub);
|
||||
br_handle_frame_hook = br_handle_frame;
|
||||
|
||||
#if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
|
||||
br_fdb_test_addr_hook = br_fdb_test_addr;
|
||||
|
|
@ -100,7 +99,6 @@ static void __exit br_deinit(void)
|
|||
br_fdb_test_addr_hook = NULL;
|
||||
#endif
|
||||
|
||||
br_handle_frame_hook = NULL;
|
||||
br_fdb_fini();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ static int br_change_mtu(struct net_device *dev, int new_mtu)
|
|||
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
/* remember the MTU in the rtable for PMTU */
|
||||
br->fake_rtable.u.dst.metrics[RTAX_MTU - 1] = new_mtu;
|
||||
br->fake_rtable.dst.metrics[RTAX_MTU - 1] = new_mtu;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ static void del_nbp(struct net_bridge_port *p)
|
|||
|
||||
list_del_rcu(&p->list);
|
||||
|
||||
netdev_rx_handler_unregister(dev);
|
||||
rcu_assign_pointer(dev->br_port, NULL);
|
||||
|
||||
br_multicast_del_port(p);
|
||||
|
|
@ -429,6 +430,11 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
|
|||
goto err2;
|
||||
|
||||
rcu_assign_pointer(dev->br_port, p);
|
||||
|
||||
err = netdev_rx_handler_register(dev, br_handle_frame);
|
||||
if (err)
|
||||
goto err3;
|
||||
|
||||
dev_disable_lro(dev);
|
||||
|
||||
list_add_rcu(&p->list, &br->port_list);
|
||||
|
|
@ -451,6 +457,8 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
|
|||
br_netpoll_enable(br, dev);
|
||||
|
||||
return 0;
|
||||
err3:
|
||||
rcu_assign_pointer(dev->br_port, NULL);
|
||||
err2:
|
||||
br_fdb_delete_by_port(br, p, 1);
|
||||
err1:
|
||||
|
|
|
|||
|
|
@ -131,15 +131,19 @@ static inline int is_link_local(const unsigned char *dest)
|
|||
}
|
||||
|
||||
/*
|
||||
* Called via br_handle_frame_hook.
|
||||
* Return NULL if skb is handled
|
||||
* note: already called with rcu_read_lock (preempt_disabled)
|
||||
* note: already called with rcu_read_lock (preempt_disabled) from
|
||||
* netif_receive_skb
|
||||
*/
|
||||
struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)
|
||||
struct sk_buff *br_handle_frame(struct sk_buff *skb)
|
||||
{
|
||||
struct net_bridge_port *p;
|
||||
const unsigned char *dest = eth_hdr(skb)->h_dest;
|
||||
int (*rhook)(struct sk_buff *skb);
|
||||
|
||||
if (skb->pkt_type == PACKET_LOOPBACK)
|
||||
return skb;
|
||||
|
||||
if (!is_valid_ether_addr(eth_hdr(skb)->h_source))
|
||||
goto drop;
|
||||
|
||||
|
|
@ -147,6 +151,8 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb)
|
|||
if (!skb)
|
||||
return NULL;
|
||||
|
||||
p = rcu_dereference(skb->dev->br_port);
|
||||
|
||||
if (unlikely(is_link_local(dest))) {
|
||||
/* Pause frames shouldn't be passed up by driver anyway */
|
||||
if (skb->protocol == htons(ETH_P_PAUSE))
|
||||
|
|
|
|||
|
|
@ -117,12 +117,12 @@ void br_netfilter_rtable_init(struct net_bridge *br)
|
|||
{
|
||||
struct rtable *rt = &br->fake_rtable;
|
||||
|
||||
atomic_set(&rt->u.dst.__refcnt, 1);
|
||||
rt->u.dst.dev = br->dev;
|
||||
rt->u.dst.path = &rt->u.dst;
|
||||
rt->u.dst.metrics[RTAX_MTU - 1] = 1500;
|
||||
rt->u.dst.flags = DST_NOXFRM;
|
||||
rt->u.dst.ops = &fake_dst_ops;
|
||||
atomic_set(&rt->dst.__refcnt, 1);
|
||||
rt->dst.dev = br->dev;
|
||||
rt->dst.path = &rt->dst;
|
||||
rt->dst.metrics[RTAX_MTU - 1] = 1500;
|
||||
rt->dst.flags = DST_NOXFRM;
|
||||
rt->dst.ops = &fake_dst_ops;
|
||||
}
|
||||
|
||||
static inline struct rtable *bridge_parent_rtable(const struct net_device *dev)
|
||||
|
|
@ -244,7 +244,7 @@ static int br_nf_pre_routing_finish_ipv6(struct sk_buff *skb)
|
|||
kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
skb_dst_set_noref(skb, &rt->u.dst);
|
||||
skb_dst_set_noref(skb, &rt->dst);
|
||||
|
||||
skb->dev = nf_bridge->physindev;
|
||||
nf_bridge_update_protocol(skb);
|
||||
|
|
@ -395,7 +395,7 @@ bridged_dnat:
|
|||
kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
skb_dst_set_noref(skb, &rt->u.dst);
|
||||
skb_dst_set_noref(skb, &rt->dst);
|
||||
}
|
||||
|
||||
skb->dev = nf_bridge->physindev;
|
||||
|
|
|
|||
|
|
@ -331,8 +331,7 @@ extern void br_features_recompute(struct net_bridge *br);
|
|||
|
||||
/* br_input.c */
|
||||
extern int br_handle_frame_finish(struct sk_buff *skb);
|
||||
extern struct sk_buff *br_handle_frame(struct net_bridge_port *p,
|
||||
struct sk_buff *skb);
|
||||
extern struct sk_buff *br_handle_frame(struct sk_buff *skb);
|
||||
|
||||
/* br_ioctl.c */
|
||||
extern int br_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
|
||||
|
|
|
|||
Loading…
Reference in a new issue