diff options
Diffstat (limited to 'net/bridge')
-rw-r--r-- | net/bridge/br_netfilter.c | 4 | ||||
-rw-r--r-- | net/bridge/br_netlink.c | 15 |
2 files changed, 17 insertions, 2 deletions
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index 80e1b0f60a30..2acf7fa1fec6 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c | |||
@@ -859,12 +859,12 @@ static unsigned int br_nf_forward_arp(const struct nf_hook_ops *ops, | |||
859 | return NF_STOLEN; | 859 | return NF_STOLEN; |
860 | } | 860 | } |
861 | 861 | ||
862 | #if IS_ENABLED(CONFIG_NF_CONNTRACK_IPV4) | 862 | #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV4) |
863 | static int br_nf_dev_queue_xmit(struct sk_buff *skb) | 863 | static int br_nf_dev_queue_xmit(struct sk_buff *skb) |
864 | { | 864 | { |
865 | int ret; | 865 | int ret; |
866 | 866 | ||
867 | if (skb->nfct != NULL && skb->protocol == htons(ETH_P_IP) && | 867 | if (skb->protocol == htons(ETH_P_IP) && |
868 | skb->len + nf_bridge_mtu_reduction(skb) > skb->dev->mtu && | 868 | skb->len + nf_bridge_mtu_reduction(skb) > skb->dev->mtu && |
869 | !skb_is_gso(skb)) { | 869 | !skb_is_gso(skb)) { |
870 | if (br_parse_ip_options(skb)) | 870 | if (br_parse_ip_options(skb)) |
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index e74b6d530cb6..e8844d975b32 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c | |||
@@ -445,6 +445,20 @@ static int br_validate(struct nlattr *tb[], struct nlattr *data[]) | |||
445 | return 0; | 445 | return 0; |
446 | } | 446 | } |
447 | 447 | ||
448 | static int br_dev_newlink(struct net *src_net, struct net_device *dev, | ||
449 | struct nlattr *tb[], struct nlattr *data[]) | ||
450 | { | ||
451 | struct net_bridge *br = netdev_priv(dev); | ||
452 | |||
453 | if (tb[IFLA_ADDRESS]) { | ||
454 | spin_lock_bh(&br->lock); | ||
455 | br_stp_change_bridge_id(br, nla_data(tb[IFLA_ADDRESS])); | ||
456 | spin_unlock_bh(&br->lock); | ||
457 | } | ||
458 | |||
459 | return register_netdevice(dev); | ||
460 | } | ||
461 | |||
448 | static size_t br_get_link_af_size(const struct net_device *dev) | 462 | static size_t br_get_link_af_size(const struct net_device *dev) |
449 | { | 463 | { |
450 | struct net_port_vlans *pv; | 464 | struct net_port_vlans *pv; |
@@ -473,6 +487,7 @@ struct rtnl_link_ops br_link_ops __read_mostly = { | |||
473 | .priv_size = sizeof(struct net_bridge), | 487 | .priv_size = sizeof(struct net_bridge), |
474 | .setup = br_dev_setup, | 488 | .setup = br_dev_setup, |
475 | .validate = br_validate, | 489 | .validate = br_validate, |
490 | .newlink = br_dev_newlink, | ||
476 | .dellink = br_dev_delete, | 491 | .dellink = br_dev_delete, |
477 | }; | 492 | }; |
478 | 493 | ||