diff options
| author | David S. Miller <davem@davemloft.net> | 2013-03-12 05:52:22 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-03-12 05:52:22 -0400 |
| commit | e5f2ef7ab4690d2e8faaf5fd203c5ecd70c3abaf (patch) | |
| tree | 3558f68717c70a67e18c3274bb17709a353d036f /net/bridge | |
| parent | 30129cf28a5c99f9cb7c168f0d280f147fd6cc8b (diff) | |
| parent | 3da889b616164bde76a37350cf28e0d17a94e979 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/intel/e1000e/netdev.c
Minor conflict in e1000e, a line that got fixed in 'net'
has been removed in 'net-next'.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
| -rw-r--r-- | net/bridge/br_device.c | 2 | ||||
| -rw-r--r-- | net/bridge/br_input.c | 2 | ||||
| -rw-r--r-- | net/bridge/br_mdb.c | 4 | ||||
| -rw-r--r-- | net/bridge/br_multicast.c | 3 | ||||
| -rw-r--r-- | net/bridge/br_netlink.c | 1 | ||||
| -rw-r--r-- | net/bridge/br_private.h | 4 |
6 files changed, 11 insertions, 5 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index d5f1d3fd4b28..314c73ed418f 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c | |||
| @@ -66,7 +66,7 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 66 | goto out; | 66 | goto out; |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | mdst = br_mdb_get(br, skb); | 69 | mdst = br_mdb_get(br, skb, vid); |
| 70 | if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) | 70 | if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) |
| 71 | br_multicast_deliver(mdst, skb); | 71 | br_multicast_deliver(mdst, skb); |
| 72 | else | 72 | else |
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 480330151898..828e2bcc1f52 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c | |||
| @@ -97,7 +97,7 @@ int br_handle_frame_finish(struct sk_buff *skb) | |||
| 97 | if (is_broadcast_ether_addr(dest)) | 97 | if (is_broadcast_ether_addr(dest)) |
| 98 | skb2 = skb; | 98 | skb2 = skb; |
| 99 | else if (is_multicast_ether_addr(dest)) { | 99 | else if (is_multicast_ether_addr(dest)) { |
| 100 | mdst = br_mdb_get(br, skb); | 100 | mdst = br_mdb_get(br, skb, vid); |
| 101 | if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) { | 101 | if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) { |
| 102 | if ((mdst && mdst->mglist) || | 102 | if ((mdst && mdst->mglist) || |
| 103 | br_multicast_is_router(br)) | 103 | br_multicast_is_router(br)) |
diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c index 9f97b850fc65..ee79f3f20383 100644 --- a/net/bridge/br_mdb.c +++ b/net/bridge/br_mdb.c | |||
| @@ -80,6 +80,7 @@ static int br_mdb_fill_info(struct sk_buff *skb, struct netlink_callback *cb, | |||
| 80 | port = p->port; | 80 | port = p->port; |
| 81 | if (port) { | 81 | if (port) { |
| 82 | struct br_mdb_entry e; | 82 | struct br_mdb_entry e; |
| 83 | memset(&e, 0, sizeof(e)); | ||
| 83 | e.ifindex = port->dev->ifindex; | 84 | e.ifindex = port->dev->ifindex; |
| 84 | e.state = p->state; | 85 | e.state = p->state; |
| 85 | if (p->addr.proto == htons(ETH_P_IP)) | 86 | if (p->addr.proto == htons(ETH_P_IP)) |
| @@ -136,6 +137,7 @@ static int br_mdb_dump(struct sk_buff *skb, struct netlink_callback *cb) | |||
| 136 | break; | 137 | break; |
| 137 | 138 | ||
| 138 | bpm = nlmsg_data(nlh); | 139 | bpm = nlmsg_data(nlh); |
| 140 | memset(bpm, 0, sizeof(*bpm)); | ||
| 139 | bpm->ifindex = dev->ifindex; | 141 | bpm->ifindex = dev->ifindex; |
| 140 | if (br_mdb_fill_info(skb, cb, dev) < 0) | 142 | if (br_mdb_fill_info(skb, cb, dev) < 0) |
| 141 | goto out; | 143 | goto out; |
| @@ -171,6 +173,7 @@ static int nlmsg_populate_mdb_fill(struct sk_buff *skb, | |||
| 171 | return -EMSGSIZE; | 173 | return -EMSGSIZE; |
| 172 | 174 | ||
| 173 | bpm = nlmsg_data(nlh); | 175 | bpm = nlmsg_data(nlh); |
| 176 | memset(bpm, 0, sizeof(*bpm)); | ||
| 174 | bpm->family = AF_BRIDGE; | 177 | bpm->family = AF_BRIDGE; |
| 175 | bpm->ifindex = dev->ifindex; | 178 | bpm->ifindex = dev->ifindex; |
| 176 | nest = nla_nest_start(skb, MDBA_MDB); | 179 | nest = nla_nest_start(skb, MDBA_MDB); |
| @@ -228,6 +231,7 @@ void br_mdb_notify(struct net_device *dev, struct net_bridge_port *port, | |||
| 228 | { | 231 | { |
| 229 | struct br_mdb_entry entry; | 232 | struct br_mdb_entry entry; |
| 230 | 233 | ||
| 234 | memset(&entry, 0, sizeof(entry)); | ||
| 231 | entry.ifindex = port->dev->ifindex; | 235 | entry.ifindex = port->dev->ifindex; |
| 232 | entry.addr.proto = group->proto; | 236 | entry.addr.proto = group->proto; |
| 233 | entry.addr.u.ip4 = group->u.ip4; | 237 | entry.addr.u.ip4 = group->u.ip4; |
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 81d51b859a59..81f2389f78eb 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c | |||
| @@ -132,7 +132,7 @@ static struct net_bridge_mdb_entry *br_mdb_ip6_get( | |||
| 132 | #endif | 132 | #endif |
| 133 | 133 | ||
| 134 | struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, | 134 | struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, |
| 135 | struct sk_buff *skb) | 135 | struct sk_buff *skb, u16 vid) |
| 136 | { | 136 | { |
| 137 | struct net_bridge_mdb_htable *mdb = rcu_dereference(br->mdb); | 137 | struct net_bridge_mdb_htable *mdb = rcu_dereference(br->mdb); |
| 138 | struct br_ip ip; | 138 | struct br_ip ip; |
| @@ -144,6 +144,7 @@ struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, | |||
| 144 | return NULL; | 144 | return NULL; |
| 145 | 145 | ||
| 146 | ip.proto = skb->protocol; | 146 | ip.proto = skb->protocol; |
| 147 | ip.vid = vid; | ||
| 147 | 148 | ||
| 148 | switch (skb->protocol) { | 149 | switch (skb->protocol) { |
| 149 | case htons(ETH_P_IP): | 150 | case htons(ETH_P_IP): |
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index 27aa3ee517ce..db12a0fcfe50 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c | |||
| @@ -29,6 +29,7 @@ static inline size_t br_port_info_size(void) | |||
| 29 | + nla_total_size(1) /* IFLA_BRPORT_MODE */ | 29 | + nla_total_size(1) /* IFLA_BRPORT_MODE */ |
| 30 | + nla_total_size(1) /* IFLA_BRPORT_GUARD */ | 30 | + nla_total_size(1) /* IFLA_BRPORT_GUARD */ |
| 31 | + nla_total_size(1) /* IFLA_BRPORT_PROTECT */ | 31 | + nla_total_size(1) /* IFLA_BRPORT_PROTECT */ |
| 32 | + nla_total_size(1) /* IFLA_BRPORT_FAST_LEAVE */ | ||
| 32 | + 0; | 33 | + 0; |
| 33 | } | 34 | } |
| 34 | 35 | ||
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 6d314c4e6bcb..3cbf5beb3d4b 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h | |||
| @@ -442,7 +442,7 @@ extern int br_multicast_rcv(struct net_bridge *br, | |||
| 442 | struct net_bridge_port *port, | 442 | struct net_bridge_port *port, |
| 443 | struct sk_buff *skb); | 443 | struct sk_buff *skb); |
| 444 | extern struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, | 444 | extern struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, |
| 445 | struct sk_buff *skb); | 445 | struct sk_buff *skb, u16 vid); |
| 446 | extern void br_multicast_add_port(struct net_bridge_port *port); | 446 | extern void br_multicast_add_port(struct net_bridge_port *port); |
| 447 | extern void br_multicast_del_port(struct net_bridge_port *port); | 447 | extern void br_multicast_del_port(struct net_bridge_port *port); |
| 448 | extern void br_multicast_enable_port(struct net_bridge_port *port); | 448 | extern void br_multicast_enable_port(struct net_bridge_port *port); |
| @@ -504,7 +504,7 @@ static inline int br_multicast_rcv(struct net_bridge *br, | |||
| 504 | } | 504 | } |
| 505 | 505 | ||
| 506 | static inline struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, | 506 | static inline struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, |
| 507 | struct sk_buff *skb) | 507 | struct sk_buff *skb, u16 vid) |
| 508 | { | 508 | { |
| 509 | return NULL; | 509 | return NULL; |
| 510 | } | 510 | } |
