[Libvirt-cim] [PATCH] ACL: Add 'Action' property to KVM_{IPHeaders, Hdr8021}Filter
Chip Vincent
cvincent at linux.vnet.ibm.com
Tue Sep 20 21:08:50 UTC 2011
+1. Pushed.
On 08/24/2011 12:26 PM, Eduardo Lima (Etrunko) wrote:
> # HG changeset patch
> # User Eduardo Lima (Etrunko)<eblima at br.ibm.com>
> # Date 1311872160 10800
> # Node ID 4d837e60bb82daa73bba8e13bbab9041fc7632ee
> # Parent 277b56b3863b5f81a3faa18aeb7b9951b963b489
> ACL: Add 'Action' property to KVM_{IPHeaders,Hdr8021}Filter
>
> This property should be defined in the CIM_FilterEntryBase parent class
> (would also apply to 'Direction' and 'Priority' properties), considering
> the fact that, according to libvirt documentation, the 'action' attribute
> of a rule is mandatory. For reference please check:
>
> http://libvirt.org/formatnwfilter.html#nwfelemsRules
>
> Signed-off-by: Eduardo Lima (Etrunko)<eblima at br.ibm.com>
>
> diff --git a/schema/FilterEntry.mof b/schema/FilterEntry.mof
> --- a/schema/FilterEntry.mof
> +++ b/schema/FilterEntry.mof
> @@ -2,6 +2,14 @@
> [Provider("cmpi::Virt_FilterEntry")]
> class KVM_Hdr8021Filter : CIM_Hdr8021Filter
> {
> + [Description (
> + "This defines whether the action should be to forward or "
> + "deny traffic meeting the match condition specified in "
> + "this filter." ),
> + ValueMap { "1", "2" },
> + Values { "Permit", "Deny" }]
> + uint16 Action;
> +
> [Description("This defines whether the Filter is used for input, "
> "output, or both input and output filtering. All values are "
> "used with respect to the interface for which the Filter "
> @@ -32,6 +40,14 @@
> [Provider("cmpi::Virt_FilterEntry")]
> class KVM_IPHeadersFilter : CIM_IPHeadersFilter
> {
> + [Description (
> + "This defines whether the action should be to forward or "
> + "deny traffic meeting the match condition specified in "
> + "this filter." ),
> + ValueMap { "1", "2" },
> + Values { "Permit", "Deny" }]
> + uint16 Action;
> +
> [Description("This defines whether the Filter is used for input, "
> "output, or both input and output filtering. All values are "
> "used with respect to the interface for which the Filter "
> diff --git a/src/Virt_FilterEntry.c b/src/Virt_FilterEntry.c
> --- a/src/Virt_FilterEntry.c
> +++ b/src/Virt_FilterEntry.c
> @@ -159,6 +159,19 @@
> return priority;
> }
>
> +static int convert_action(const char *s)
> +{
> + enum {NONE=0, ACCEPT, DENY} action = NONE;
> +
> + if (s != NULL) {
> + if (STREQC(s, "accept"))
> + action = ACCEPT;
> + else if (STREQC(s, "drop") || STREQC(s, "reject"))
> + action = DENY;
> + }
> + return action;
> +}
> +
> static CMPIInstance *convert_mac_rule_to_instance(
> struct acl_rule *rule,
> const CMPIBroker *broker,
> @@ -169,7 +182,7 @@
> CMPIInstance *inst = NULL;
> const char *sys_name = NULL;
> const char *sys_ccname = NULL;
> - int direction, priority = 0;
> + int action, direction, priority = 0;
> unsigned int bytes[48];
> unsigned int size = 0;
> CMPIArray *array = NULL;
> @@ -203,6 +216,9 @@
> CMSetProperty(inst, "SystemCreationClassName", sys_ccname, CMPI_chars);
> CMSetProperty(inst, "Name", (CMPIValue *)rule->name, CMPI_chars);
>
> + action = convert_action(rule->action);
> + CMSetProperty(inst, "Action", (CMPIValue *)&action, CMPI_uint16);
> +
> direction = convert_direction(rule->direction);
> CMSetProperty(inst, "Direction", (CMPIValue *)&direction, CMPI_uint16);
>
> @@ -259,7 +275,7 @@
> CMPIInstance *inst = NULL;
> const char *sys_name = NULL;
> const char *sys_ccname = NULL;
> - int direction, priority = 0;
> + int action, direction, priority = 0;
> unsigned int bytes[48];
> unsigned int size = 0;
> unsigned int n = 0;
> @@ -293,6 +309,9 @@
> CMSetProperty(inst, "SystemCreationClassName", sys_ccname, CMPI_chars);
> CMSetProperty(inst, "Name", (CMPIValue *)rule->name, CMPI_chars);
>
> + action = convert_action(rule->action);
> + CMSetProperty(inst, "Action", (CMPIValue *)&action, CMPI_uint16);
> +
> direction = convert_direction(rule->direction);
> CMSetProperty(inst, "Direction", (CMPIValue *)&direction, CMPI_uint16);
>
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
--
Chip Vincent
Open Virtualization
IBM Linux Technology Center
cvincent at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list