datapath: Specify the minimal length of OVS_PACKET_ATTR_PACKET in the policy
authorThomas Graf <tgraf@suug.ch>
Sat, 30 Mar 2013 01:03:05 +0000 (18:03 -0700)
committerJesse Gross <jesse@nicira.com>
Sat, 30 Mar 2013 01:03:05 +0000 (18:03 -0700)
Specifying the minimal length in the policy makes it reuseable
and documents the interface.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Jesse Gross <jesse@nicira.com>
datapath/datapath.c

index bab29d2..076aa98 100644 (file)
@@ -815,8 +815,7 @@ static int ovs_packet_cmd_execute(struct sk_buff *skb, struct genl_info *info)
 
        err = -EINVAL;
        if (!a[OVS_PACKET_ATTR_PACKET] || !a[OVS_PACKET_ATTR_KEY] ||
-           !a[OVS_PACKET_ATTR_ACTIONS] ||
-           nla_len(a[OVS_PACKET_ATTR_PACKET]) < ETH_HLEN)
+           !a[OVS_PACKET_ATTR_ACTIONS])
                goto err;
 
        len = nla_len(a[OVS_PACKET_ATTR_PACKET]);
@@ -891,7 +890,11 @@ err:
 }
 
 static const struct nla_policy packet_policy[OVS_PACKET_ATTR_MAX + 1] = {
-       [OVS_PACKET_ATTR_PACKET] = { .type = NLA_UNSPEC },
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)
+       [OVS_PACKET_ATTR_PACKET] = { .len = ETH_HLEN },
+#else
+       [OVS_PACKET_ATTR_PACKET] = { .minlen = ETH_HLEN },
+#endif
        [OVS_PACKET_ATTR_KEY] = { .type = NLA_NESTED },
        [OVS_PACKET_ATTR_ACTIONS] = { .type = NLA_NESTED },
 };