diff options
author | Vlad Dogaru <ddvlad@rosedu.org> | 2011-01-13 18:38:30 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-20 02:31:09 -0500 |
commit | cbda10fa97d72c7a1923be4426171aa90e8c6dab (patch) | |
tree | 113206ef603189e9f91f075e154cbdc8e1ac3f40 /net | |
parent | 441c793a56502638d45d5da2195056d686147370 (diff) |
net_device: add support for network device groups
Net devices can now be grouped, enabling simpler manipulation from
userspace. This patch adds a group field to the net_device structure, as
well as rtnetlink support to query and modify it.
Signed-off-by: Vlad Dogaru <ddvlad@rosedu.org>
Acked-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/dev.c | 12 | ||||
-rw-r--r-- | net/core/rtnetlink.c | 6 |
2 files changed, 18 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 7741507429f4..2b85d4ae981f 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -4572,6 +4572,17 @@ int dev_set_mtu(struct net_device *dev, int new_mtu) | |||
4572 | EXPORT_SYMBOL(dev_set_mtu); | 4572 | EXPORT_SYMBOL(dev_set_mtu); |
4573 | 4573 | ||
4574 | /** | 4574 | /** |
4575 | * dev_set_group - Change group this device belongs to | ||
4576 | * @dev: device | ||
4577 | * @new_group: group this device should belong to | ||
4578 | */ | ||
4579 | void dev_set_group(struct net_device *dev, int new_group) | ||
4580 | { | ||
4581 | dev->group = new_group; | ||
4582 | } | ||
4583 | EXPORT_SYMBOL(dev_set_group); | ||
4584 | |||
4585 | /** | ||
4575 | * dev_set_mac_address - Change Media Access Control Address | 4586 | * dev_set_mac_address - Change Media Access Control Address |
4576 | * @dev: device | 4587 | * @dev: device |
4577 | * @sa: new address | 4588 | * @sa: new address |
@@ -5678,6 +5689,7 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name, | |||
5678 | dev->priv_flags = IFF_XMIT_DST_RELEASE; | 5689 | dev->priv_flags = IFF_XMIT_DST_RELEASE; |
5679 | setup(dev); | 5690 | setup(dev); |
5680 | strcpy(dev->name, name); | 5691 | strcpy(dev->name, name); |
5692 | dev->group = INIT_NETDEV_GROUP; | ||
5681 | return dev; | 5693 | return dev; |
5682 | 5694 | ||
5683 | free_pcpu: | 5695 | free_pcpu: |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index a5f7535aab5b..09062b07bf7f 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -868,6 +868,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev, | |||
868 | netif_running(dev) ? dev->operstate : IF_OPER_DOWN); | 868 | netif_running(dev) ? dev->operstate : IF_OPER_DOWN); |
869 | NLA_PUT_U8(skb, IFLA_LINKMODE, dev->link_mode); | 869 | NLA_PUT_U8(skb, IFLA_LINKMODE, dev->link_mode); |
870 | NLA_PUT_U32(skb, IFLA_MTU, dev->mtu); | 870 | NLA_PUT_U32(skb, IFLA_MTU, dev->mtu); |
871 | NLA_PUT_U32(skb, IFLA_GROUP, dev->group); | ||
871 | 872 | ||
872 | if (dev->ifindex != dev->iflink) | 873 | if (dev->ifindex != dev->iflink) |
873 | NLA_PUT_U32(skb, IFLA_LINK, dev->iflink); | 874 | NLA_PUT_U32(skb, IFLA_LINK, dev->iflink); |
@@ -1265,6 +1266,11 @@ static int do_setlink(struct net_device *dev, struct ifinfomsg *ifm, | |||
1265 | modified = 1; | 1266 | modified = 1; |
1266 | } | 1267 | } |
1267 | 1268 | ||
1269 | if (tb[IFLA_GROUP]) { | ||
1270 | dev_set_group(dev, nla_get_u32(tb[IFLA_GROUP])); | ||
1271 | modified = 1; | ||
1272 | } | ||
1273 | |||
1268 | /* | 1274 | /* |
1269 | * Interface selected by interface index but interface | 1275 | * Interface selected by interface index but interface |
1270 | * name provided implies that a name change has been | 1276 | * name provided implies that a name change has been |