datapath: Reject attempts to change vport type with OVS_VPORT_CMD_SET.
authorBen Pfaff <blp@nicira.com>
Mon, 17 Oct 2011 18:03:22 +0000 (11:03 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 18 Oct 2011 20:31:30 +0000 (13:31 -0700)
Until now this has just silently failed, but it seems to me like we should
actively reject it.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
datapath/datapath.c

index b3e24427c357c7952a1f28b2813161af54f7a2b4..cd29482c508eb50c042f1484d33651ef2ce55fa4 100644 (file)
@@ -1751,7 +1751,9 @@ static int ovs_vport_cmd_set(struct sk_buff *skb, struct genl_info *info)
                goto exit_unlock;
 
        err = 0;
-       if (a[OVS_VPORT_ATTR_OPTIONS])
+       if (a[OVS_VPORT_ATTR_TYPE] && nla_get_u32(a[OVS_VPORT_ATTR_TYPE]) != vport_get_type(vport))
+               err = -EINVAL;
+       if (!err && a[OVS_VPORT_ATTR_OPTIONS])
                err = vport_set_options(vport, a[OVS_VPORT_ATTR_OPTIONS]);
        if (!err)
                err = change_vport(vport, a);