Beside the update to ovsDatapathSetPolicy, the rest of changes are cosmetic,
to clarify the fact that when parsing netlink attributes the flow policy array
size should be used.

This patch also initialize all netlink attributes before parsing them.

Signed-off-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com>
---
 datapath-windows/ovsext/Datapath.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/datapath-windows/ovsext/Datapath.c 
b/datapath-windows/ovsext/Datapath.c
index 4af909c..bcf3d06 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -1167,11 +1167,11 @@ OvsSubscribeEventCmdHandler(POVS_USER_PARAMS_CONTEXT 
usrParamsCtx,
     OVS_EVENT_SUBSCRIBE request;
     BOOLEAN rc;
     UINT8 join;
-    PNL_ATTR attrs[2];
-    const NL_POLICY policy[] =  {
+    const NL_POLICY policy[] = {
         [OVS_NL_ATTR_MCAST_GRP] = {.type = NL_A_U32 },
         [OVS_NL_ATTR_MCAST_JOIN] = {.type = NL_A_U8 },
         };
+    PNL_ATTR attrs[ARRAY_SIZE(policy)] = { NULL };
 
     UNREFERENCED_PARAMETER(replyLen);
 
@@ -1180,7 +1180,7 @@ OvsSubscribeEventCmdHandler(POVS_USER_PARAMS_CONTEXT 
usrParamsCtx,
     POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;
 
     rc = NlAttrParse(&msgIn->nlMsg, sizeof (*msgIn),
-         NlMsgAttrsLen((PNL_MSG_HDR)msgIn), policy, attrs, ARRAY_SIZE(attrs));
+         NlMsgAttrsLen((PNL_MSG_HDR)msgIn), policy, attrs, ARRAY_SIZE(policy));
     if (!rc) {
         status = STATUS_INVALID_PARAMETER;
         goto done;
@@ -1331,12 +1331,12 @@ HandleDpTransactionCommon(POVS_USER_PARAMS_CONTEXT 
usrParamsCtx,
     NTSTATUS status = STATUS_SUCCESS;
     NL_BUFFER nlBuf;
     NL_ERROR nlError = NL_ERROR_SUCCESS;
-    static const NL_POLICY ovsDatapathSetPolicy[] = {
+    static const NL_POLICY ovsDatapathSetPolicy[__OVS_DP_ATTR_MAX] = {
         [OVS_DP_ATTR_NAME] = { .type = NL_A_STRING, .maxLen = IFNAMSIZ },
         [OVS_DP_ATTR_UPCALL_PID] = { .type = NL_A_U32, .optional = TRUE },
         [OVS_DP_ATTR_USER_FEATURES] = { .type = NL_A_U32, .optional = TRUE },
     };
-    PNL_ATTR dpAttrs[ARRAY_SIZE(ovsDatapathSetPolicy)];
+    PNL_ATTR dpAttrs[ARRAY_SIZE(ovsDatapathSetPolicy)] = { NULL };
 
     UNREFERENCED_PARAMETER(msgOut);
 
@@ -1347,9 +1347,10 @@ HandleDpTransactionCommon(POVS_USER_PARAMS_CONTEXT 
usrParamsCtx,
     if (usrParamsCtx->ovsMsg->genlMsg.cmd == OVS_DP_CMD_SET ||
         usrParamsCtx->ovsMsg->genlMsg.cmd == OVS_DP_CMD_NEW) {
         if (!NlAttrParse((PNL_MSG_HDR)msgIn,
-                        NLMSG_HDRLEN + GENL_HDRLEN + OVS_HDRLEN,
-                        NlMsgAttrsLen((PNL_MSG_HDR)msgIn),
-                        ovsDatapathSetPolicy, dpAttrs, ARRAY_SIZE(dpAttrs))) {
+                         NLMSG_HDRLEN + GENL_HDRLEN + OVS_HDRLEN,
+                         NlMsgAttrsLen((PNL_MSG_HDR)msgIn),
+                         ovsDatapathSetPolicy, dpAttrs,
+                         ARRAY_SIZE(ovsDatapathSetPolicy))) {
             return STATUS_INVALID_PARAMETER;
         }
 
@@ -1645,7 +1646,7 @@ OvsSubscribePacketCmdHandler(POVS_USER_PARAMS_CONTEXT 
usrParamsCtx,
         [OVS_NL_ATTR_PACKET_PID] = {.type = NL_A_U32 },
         [OVS_NL_ATTR_PACKET_SUBSCRIBE] = {.type = NL_A_U8 }
         };
-    PNL_ATTR attrs[ARRAY_SIZE(policy)];
+    PNL_ATTR attrs[ARRAY_SIZE(policy)] = { NULL };
 
     UNREFERENCED_PARAMETER(replyLen);
 
@@ -1654,7 +1655,8 @@ OvsSubscribePacketCmdHandler(POVS_USER_PARAMS_CONTEXT 
usrParamsCtx,
     POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;
 
     rc = NlAttrParse(&msgIn->nlMsg, sizeof (*msgIn),
-         NlMsgAttrsLen((PNL_MSG_HDR)msgIn), policy, attrs, ARRAY_SIZE(attrs));
+                     NlMsgAttrsLen((PNL_MSG_HDR)msgIn), policy, attrs,
+                                   ARRAY_SIZE(policy));
     if (!rc) {
         status = STATUS_INVALID_PARAMETER;
         goto done;
-- 
1.9.5.msysgit.0
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to