[PATCH] Add ForwardDevice attribute for network pools

# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1241132900 25200 # Node ID 327098c60da19f0f3c2c0a3ec69955503a16602a # Parent 94b1108c2a8be28472a171d9a09d08a2580cc53f Add ForwardDevice attribute for network pools libvirt allows you to restrict the firewall rules of a pool so that traffic is forwarded through a specific device. Also, fix a bug where the value for ForwardMode specified by the user wasn't being read in properly. Also change FowardMode to a value map attribute instead of a string. Fix a bug where the value for IPRangeStart is read in twice - IPRangeEnd wasn't being read in at all. Fix a bug in xmlgen code for the network pool forwarding device. Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com> diff -r 94b1108c2a8b -r 327098c60da1 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Thu Apr 30 13:46:35 2009 -0700 +++ b/libxkutil/xmlgen.c Thu Apr 30 16:08:20 2009 -0700 @@ -785,7 +785,7 @@ if (xmlNewProp(forward, BAD_CAST "dev", BAD_CAST pool->forward_dev) == NULL) - goto out; + goto out; } } diff -r 94b1108c2a8b -r 327098c60da1 schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Thu Apr 30 13:46:35 2009 -0700 +++ b/schema/ResourceAllocationSettingData.mof Thu Apr 30 16:08:20 2009 -0700 @@ -171,7 +171,12 @@ string Netmask; string IPRangeStart; string IPRangeEnd; - string ForwardMode; + string ForwardDevice; + + [Description ("Network pool forwarding mode"), + ValueMap {"0", "1", "2"}, + Values {"None", "NAT", "Routed"}] + uint16 ForwardMode; }; [Description ("KVM virtual network pool settings"), @@ -182,7 +187,12 @@ string Netmask; string IPRangeStart; string IPRangeEnd; - string ForwardMode; + string ForwardDevice; + + [Description ("Network pool forwarding mode"), + ValueMap {"0", "1", "2"}, + Values {"None", "NAT", "Routed"}] + uint16 ForwardMode; }; [Description ("LXC virtual network pool settings"), @@ -193,7 +203,12 @@ string Netmask; string IPRangeStart; string IPRangeEnd; - string ForwardMode; + string ForwardDevice; + + [Description ("Network pool forwarding mode"), + ValueMap {"0", "1", "2"}, + Values {"None", "NAT", "Routed"}] + uint16 ForwardMode; }; [Description ("Xen virtual disk pool settings"), diff -r 94b1108c2a8b -r 327098c60da1 src/Virt_ResourcePoolConfigurationService.c --- a/src/Virt_ResourcePoolConfigurationService.c Thu Apr 30 13:46:35 2009 -0700 +++ b/src/Virt_ResourcePoolConfigurationService.c Thu Apr 30 16:08:20 2009 -0700 @@ -82,6 +82,7 @@ { const char *val = NULL; const char *msg = NULL; + uint16_t type; /*FIXME: Need to add validation of addresses if user specified */ @@ -103,12 +104,37 @@ free(pool->pool_info.net.ip_start); pool->pool_info.net.ip_start = strdup(val); - if (cu_get_str_prop(inst, "IPRangeStart", &val) != CMPI_RC_OK) + if (cu_get_str_prop(inst, "IPRangeEnd", &val) != CMPI_RC_OK) val = "192.168.122.254"; free(pool->pool_info.net.ip_end); pool->pool_info.net.ip_end = strdup(val); + if (cu_get_u16_prop(inst, "ForwardMode", &type) != CMPI_RC_OK) { + pool->pool_info.net.forward_mode = strdup("nat"); + } else { + free(pool->pool_info.net.forward_mode); + + switch (type) { + case NETPOOL_FORWARD_NONE: + pool->pool_info.net.forward_mode = NULL; + break; + case NETPOOL_FORWARD_NAT: + pool->pool_info.net.forward_mode = strdup("nat"); + break; + case NETPOOL_FORWARD_ROUTED: + pool->pool_info.net.forward_mode = strdup("route"); + break; + default: + return "Storage pool type not supported"; + } + } + + if (cu_get_str_prop(inst, "ForwardDevice", &val) == CMPI_RC_OK) { + free(pool->pool_info.net.forward_dev); + pool->pool_info.net.forward_dev = strdup(val); + } + return msg; } diff -r 94b1108c2a8b -r 327098c60da1 src/svpc_types.h --- a/src/svpc_types.h Thu Apr 30 13:46:35 2009 -0700 +++ b/src/svpc_types.h Thu Apr 30 16:08:20 2009 -0700 @@ -66,6 +66,10 @@ #define CIM_SAP_INACTIVE_STATE 3 #define CIM_SAP_AVAILABLE_STATE 6 +#define NETPOOL_FORWARD_NONE 0 +#define NETPOOL_FORWARD_NAT 1 +#define NETPOOL_FORWARD_ROUTED 2 + #include <libcmpiutil/libcmpiutil.h> #include <string.h>

+1 Kaitlin Rupert wrote:
# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1241132900 25200 # Node ID 327098c60da19f0f3c2c0a3ec69955503a16602a # Parent 94b1108c2a8be28472a171d9a09d08a2580cc53f Add ForwardDevice attribute for network pools
libvirt allows you to restrict the firewall rules of a pool so that traffic is forwarded through a specific device.
Also, fix a bug where the value for ForwardMode specified by the user wasn't being read in properly. Also change FowardMode to a value map attribute instead of a string.
Fix a bug where the value for IPRangeStart is read in twice - IPRangeEnd wasn't being read in at all.
Fix a bug in xmlgen code for the network pool forwarding device.
Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com>
diff -r 94b1108c2a8b -r 327098c60da1 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Thu Apr 30 13:46:35 2009 -0700 +++ b/libxkutil/xmlgen.c Thu Apr 30 16:08:20 2009 -0700 @@ -785,7 +785,7 @@ if (xmlNewProp(forward, BAD_CAST "dev", BAD_CAST pool->forward_dev) == NULL) - goto out; + goto out; } }
diff -r 94b1108c2a8b -r 327098c60da1 schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Thu Apr 30 13:46:35 2009 -0700 +++ b/schema/ResourceAllocationSettingData.mof Thu Apr 30 16:08:20 2009 -0700 @@ -171,7 +171,12 @@ string Netmask; string IPRangeStart; string IPRangeEnd; - string ForwardMode; + string ForwardDevice; + + [Description ("Network pool forwarding mode"), + ValueMap {"0", "1", "2"}, + Values {"None", "NAT", "Routed"}] + uint16 ForwardMode; };
[Description ("KVM virtual network pool settings"), @@ -182,7 +187,12 @@ string Netmask; string IPRangeStart; string IPRangeEnd; - string ForwardMode; + string ForwardDevice; + + [Description ("Network pool forwarding mode"), + ValueMap {"0", "1", "2"}, + Values {"None", "NAT", "Routed"}] + uint16 ForwardMode; };
[Description ("LXC virtual network pool settings"), @@ -193,7 +203,12 @@ string Netmask; string IPRangeStart; string IPRangeEnd; - string ForwardMode; + string ForwardDevice; + + [Description ("Network pool forwarding mode"), + ValueMap {"0", "1", "2"}, + Values {"None", "NAT", "Routed"}] + uint16 ForwardMode; };
[Description ("Xen virtual disk pool settings"), diff -r 94b1108c2a8b -r 327098c60da1 src/Virt_ResourcePoolConfigurationService.c --- a/src/Virt_ResourcePoolConfigurationService.c Thu Apr 30 13:46:35 2009 -0700 +++ b/src/Virt_ResourcePoolConfigurationService.c Thu Apr 30 16:08:20 2009 -0700 @@ -82,6 +82,7 @@ { const char *val = NULL; const char *msg = NULL; + uint16_t type;
/*FIXME: Need to add validation of addresses if user specified */
@@ -103,12 +104,37 @@ free(pool->pool_info.net.ip_start); pool->pool_info.net.ip_start = strdup(val);
- if (cu_get_str_prop(inst, "IPRangeStart", &val) != CMPI_RC_OK) + if (cu_get_str_prop(inst, "IPRangeEnd", &val) != CMPI_RC_OK) val = "192.168.122.254";
free(pool->pool_info.net.ip_end); pool->pool_info.net.ip_end = strdup(val);
+ if (cu_get_u16_prop(inst, "ForwardMode", &type) != CMPI_RC_OK) { + pool->pool_info.net.forward_mode = strdup("nat"); + } else { + free(pool->pool_info.net.forward_mode); + + switch (type) { + case NETPOOL_FORWARD_NONE: + pool->pool_info.net.forward_mode = NULL; + break; + case NETPOOL_FORWARD_NAT: + pool->pool_info.net.forward_mode = strdup("nat"); + break; + case NETPOOL_FORWARD_ROUTED: + pool->pool_info.net.forward_mode = strdup("route"); + break; + default: + return "Storage pool type not supported"; + } + } + + if (cu_get_str_prop(inst, "ForwardDevice", &val) == CMPI_RC_OK) { + free(pool->pool_info.net.forward_dev); + pool->pool_info.net.forward_dev = strdup(val); + } + return msg;
} diff -r 94b1108c2a8b -r 327098c60da1 src/svpc_types.h --- a/src/svpc_types.h Thu Apr 30 13:46:35 2009 -0700 +++ b/src/svpc_types.h Thu Apr 30 16:08:20 2009 -0700 @@ -66,6 +66,10 @@ #define CIM_SAP_INACTIVE_STATE 3 #define CIM_SAP_AVAILABLE_STATE 6
+#define NETPOOL_FORWARD_NONE 0 +#define NETPOOL_FORWARD_NAT 1 +#define NETPOOL_FORWARD_ROUTED 2 + #include <libcmpiutil/libcmpiutil.h> #include <string.h>
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim
-- Richard Maciel, MSc IBM Linux Technology Center rmaciel@linux.vnet.ibm.com
participants (2)
-
Kaitlin Rupert
-
Richard Maciel