    Introduce per netdev priv structure
    
    Some devices like veth or vlans have a bit of extra details that
    are specific to them. Example veth.pair and vlan.vlanid.
    Separate them from the common so we can update cleanly in the future.
    
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Acked-by: Daniel Lezcano <daniel.lezcano@free.fr>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>

---
 src/lxc/conf.c    |    8 ++++----
 src/lxc/conf.h    |    9 ++++++---
 src/lxc/confile.c |    8 ++++----
 3 files changed, 14 insertions(+), 11 deletions(-)

Index: lxc/src/lxc/conf.c
===================================================================
--- lxc.orig/src/lxc/conf.c
+++ lxc/src/lxc/conf.c
@@ -834,8 +834,8 @@ static int instanciate_veth(struct lxc_n
 	char veth1buf[IFNAMSIZ], *veth1;
 	char veth2[IFNAMSIZ];
 
-	if (netdev->pair)
-		veth1 = netdev->pair;
+	if (netdev->priv.pair)
+		veth1 = netdev->priv.pair;
 	else {
 		snprintf(veth1buf, sizeof(veth1buf), "vethXXXXXX");
 		mktemp(veth1buf);
@@ -939,9 +939,9 @@ static int instanciate_vlan(struct lxc_n
 		return -1;
 	}
 
-	snprintf(peer, sizeof(peer), "vlan%d",netdev->vlan_attr.vid);
+	snprintf(peer, sizeof(peer), "vlan%d",netdev->priv.vlan_attr.vid);
 
-	if (lxc_vlan_create(netdev->link, peer, netdev->vlan_attr.vid)) {
+	if (lxc_vlan_create(netdev->link, peer, netdev->priv.vlan_attr.vid)) {
 		ERROR("failed to create vlan interface '%s' on '%s'",
 		      peer, netdev->link);
 		return -1;
Index: lxc/src/lxc/conf.h
===================================================================
--- lxc.orig/src/lxc/conf.h
+++ lxc/src/lxc/conf.h
@@ -78,11 +78,15 @@ struct ifla_vlan {
 	ushort   pad;
 };
 
+union netdev_p {
+	char *pair;
+	struct ifla_vlan vlan_attr;
+};
+
 /*
  * Defines a structure to configure a network device
  * @link   : lxc.network.link, name of bridge or host iface to attach if any
  * @name   : lxc.network.name, name of iface on the container side
- * @pair   : lxc.network.pair, name of host-side iface in case of veth etc
  * @flags  : flag of the network device (IFF_UP, ... )
  * @ipv4   : a list of ipv4 addresses to be set on the network device
  * @ipv6   : a list of ipv6 addresses to be set on the network device
@@ -93,10 +97,9 @@ struct lxc_netdev {
 	int ifindex;
 	char *link;
 	char *name;
-	char *pair;
 	char *hwaddr;
 	char *mtu;
-	struct ifla_vlan vlan_attr;
+	union netdev_p priv;
 	struct lxc_list ipv4;
 	struct lxc_list ipv6;
 };
Index: lxc/src/lxc/confile.c
===================================================================
--- lxc.orig/src/lxc/confile.c
+++ lxc/src/lxc/confile.c
@@ -76,10 +76,10 @@ static struct config config[] = {
 	{ "lxc.network.flags",  config_network_flags  },
 	{ "lxc.network.link",   config_network_link   },
 	{ "lxc.network.name",   config_network_name   },
-	{ "lxc.network.pair",   config_network_pair   },
+	{ "lxc.network.veth.pair",   config_network_pair   },
 	{ "lxc.network.hwaddr", config_network_hwaddr },
 	{ "lxc.network.mtu",    config_network_mtu    },
-	{ "lxc.network.vlanid", config_network_vlanid },
+	{ "lxc.network.vlan.id", config_network_vlanid },
 	{ "lxc.network.ipv4",   config_network_ipv4   },
 	{ "lxc.network.ipv6",   config_network_ipv6   },
 };
@@ -237,7 +237,7 @@ static int config_network_pair(const cha
 	if (!netdev)
 		return -1;
 
-	return network_ifname(&netdev->pair, value);
+	return network_ifname(&netdev->priv.pair, value);
 }
 
 static int config_network_hwaddr(const char *key, char *value,
@@ -267,7 +267,7 @@ static int config_network_vlanid(const c
 	if (!netdev)
 		return -1;
 
-	if (get_u16(&netdev->vlan_attr.vid, value, 0))
+	if (get_u16(&netdev->priv.vlan_attr.vid, value, 0))
 		return -1;
 
 	return 0;



