@@ -233,6 +233,11 @@ static int libxl__set_xenstore_nic(libxl__gc *gc, uint32_t domid,
flexarray_append(back, GCSPRINTF("%u", nic->mtu));
}
+ if (nic->vid) {
+ flexarray_append(back, "vid");
+ flexarray_append(back, GCSPRINTF("%u", nic->vid));
+ }
+
flexarray_append(back, "bridge");
flexarray_append(back, libxl__strdup(gc, nic->bridge));
flexarray_append(back, "handle");
@@ -313,6 +318,21 @@ static int libxl__nic_from_xenstore(libxl__gc *gc, const char *libxl_path,
nic->mtu = LIBXL_DEVICE_NIC_MTU_DEFAULT;
}
+ rc = libxl__xs_read_checked(gc, XBT_NULL,
+ GCSPRINTF("%s/vid", libxl_path), &tmp);
+ if (rc) goto out;
+ if (tmp) {
+ char *endptr;
+
+ nic->vid = strtol(tmp, &endptr, 10);
+ if (*endptr != '\0') {
+ rc = ERROR_INVAL;
+ goto out;
+ }
+ } else {
+ nic->vid = 0;
+ }
+
rc = libxl__xs_read_checked(gc, XBT_NULL,
GCSPRINTF("%s/mac", libxl_path), &tmp);
if (rc) goto out;
@@ -809,6 +809,7 @@ libxl_device_nic = Struct("device_nic", [
("backend_domname", string),
("devid", libxl_devid),
("mtu", integer),
+ ("vid", integer),
("model", string),
("mac", libxl_mac),
("ip", string),
Add integer member `vid' to libxl_device_nic, to represent the VLAN ID to assign to the VIF when adding it to the bridge device. Update libxl_nic.c to read and write the vid field from the xenstore. This provides the capability for supported operating systems (e.g. Linux) to perform VLAN filtering on bridge ports. The Xen hotplug scripts need to be updated to read this information from then xenstore and perform the required configuration. Signed-off-by: Leigh Brown <leigh@solinno.co.uk> --- tools/libs/light/libxl_nic.c | 20 ++++++++++++++++++++ tools/libs/light/libxl_types.idl | 1 + 2 files changed, 21 insertions(+)