Acked-by: Nithin Raju <nit...@vmware.com> I was wondering if this should be part of the recirc patch itself.
-----Original Message----- From: dev <dev-boun...@openvswitch.org> on behalf of Sorin Vinturis <svintu...@cloudbasesolutions.com> Date: Friday, March 18, 2016 at 7:58 AM To: "dev@openvswitch.org" <dev@openvswitch.org> Subject: [ovs-dev] [PATCH v6 5/6] datapath-windows: Extract flow metadata in execute cmd handler. >Signed-off-by: Sorin Vinturis <svintu...@cloudbasesolutions.com> >Acked-by: Sairam Venugopal <vsai...@vmware.com> >--- > datapath-windows/ovsext/DpInternal.h | 1 + > datapath-windows/ovsext/Flow.c | 17 +++++++++++++++++ > datapath-windows/ovsext/Flow.h | 2 ++ > datapath-windows/ovsext/User.c | 7 +++++++ > 4 files changed, 27 insertions(+) > >diff --git a/datapath-windows/ovsext/DpInternal.h >b/datapath-windows/ovsext/DpInternal.h >index 612ff7b..4d4fec3 100644 >--- a/datapath-windows/ovsext/DpInternal.h >+++ b/datapath-windows/ovsext/DpInternal.h >@@ -270,6 +270,7 @@ typedef struct OvsPacketExecute { > uint32_t actionsLen; > PCHAR packetBuf; > PNL_ATTR actions; >+ PNL_ATTR *keyAttrs; > } OvsPacketExecute; > > >diff --git a/datapath-windows/ovsext/Flow.c >b/datapath-windows/ovsext/Flow.c >index 5625d01..40cfb54 100644 >--- a/datapath-windows/ovsext/Flow.c >+++ b/datapath-windows/ovsext/Flow.c >@@ -1735,6 +1735,23 @@ DeleteAllFlows(OVS_DATAPATH *datapath) > } > } > >+NDIS_STATUS >+OvsGetFlowMetadata(OvsFlowKey *key, >+ PNL_ATTR *keyAttrs) >+{ >+ NDIS_STATUS status = NDIS_STATUS_SUCCESS; >+ >+ if (keyAttrs[OVS_KEY_ATTR_RECIRC_ID]) { >+ key->recircId = NlAttrGetU32(keyAttrs[OVS_KEY_ATTR_RECIRC_ID]); >+ } >+ >+ if (keyAttrs[OVS_KEY_ATTR_DP_HASH]) { >+ key->dpHash = NlAttrGetU32(keyAttrs[OVS_KEY_ATTR_DP_HASH]); >+ } >+ >+ return status; >+} >+ > /* > >*------------------------------------------------------------------------- >--- > * Initializes 'flow' members from 'packet', 'skb_priority', 'tun_id', >and >diff --git a/datapath-windows/ovsext/Flow.h >b/datapath-windows/ovsext/Flow.h >index 78bf7cc..310c472 100644 >--- a/datapath-windows/ovsext/Flow.h >+++ b/datapath-windows/ovsext/Flow.h >@@ -51,6 +51,8 @@ NDIS_STATUS OvsDeleteFlowTable(OVS_DATAPATH *datapath); > NDIS_STATUS OvsAllocateFlowTable(OVS_DATAPATH *datapath, > POVS_SWITCH_CONTEXT switchContext); > >+NDIS_STATUS OvsGetFlowMetadata(OvsFlowKey *key, >+ PNL_ATTR *keyAttrs); > NDIS_STATUS OvsExtractFlow(const NET_BUFFER_LIST *pkt, UINT32 inPort, > OvsFlowKey *flow, POVS_PACKET_HDR_INFO layers, > OvsIPv4TunnelKey *tunKey); >diff --git a/datapath-windows/ovsext/User.c >b/datapath-windows/ovsext/User.c >index cadffda..6b2d94a 100644 >--- a/datapath-windows/ovsext/User.c >+++ b/datapath-windows/ovsext/User.c >@@ -383,6 +383,7 @@ _MapNlAttrToOvsPktExec(PNL_ATTR *nlAttrs, PNL_ATTR >*keyAttrs, > execute->actionsLen = >NlAttrGetSize(nlAttrs[OVS_PACKET_ATTR_ACTIONS]); > > execute->inPort = NlAttrGetU32(keyAttrs[OVS_KEY_ATTR_IN_PORT]); >+ execute->keyAttrs = keyAttrs; > } > > NTSTATUS >@@ -429,6 +430,11 @@ OvsExecuteDpIoctl(OvsPacketExecute *execute) > } > // XXX: Figure out if any of the other members of fwdDetail need to >be set. > >+ status = OvsGetFlowMetadata(&key, execute->keyAttrs); >+ if (status != STATUS_SUCCESS) { >+ goto dropit; >+ } >+ > ndisStatus = OvsExtractFlow(pNbl, fwdDetail->SourcePortId, &key, >&layers, > NULL); > if (ndisStatus == NDIS_STATUS_SUCCESS) { >@@ -450,6 +456,7 @@ OvsExecuteDpIoctl(OvsPacketExecute *execute) > } > } > >+dropit: > if (pNbl) { > OvsCompleteNBL(gOvsSwitchContext, pNbl, TRUE); > } >-- >1.9.0.msysgit.0 >_______________________________________________ >dev mailing list >dev@openvswitch.org >https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailma >n_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=pN >HQcdr7B40b4h6Yb7FIedI1dnBsxdDuTLBYD3JqV80&m=1YtRcaLre-9LkfwHfYn9JkqkifmvTp >8pFqDao0bbEt4&s=G4pHn9ugPvStzFuPxKpWcBuWi1fQK5skdAu7VT3jtvo&e= _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev