Acked-by: Sairam Venugopal <[email protected]>
On 2/22/16, 6:07 AM, "Sorin Vinturis" <[email protected]> wrote: >Signed-off-by: Sorin Vinturis <[email protected]> >--- >v3: No changes from the previous version. >--- > 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 8fc068e..e256ec6 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 >[email protected] >https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailma >n_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Dc >ruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmNR3JEQ&m=9er7COYpSoXAx1XMEyKSC_fbC4feGn >1Ciz0jZt9U-8U&s=YTObrirbUuURTqML4LPMbt_LpHG39c34J_W51QeZnWw&e= _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
