[ovs-dev] [PATCH] [PATCH v4] datapath-windows: Output to multiple VXLAN ports
Sairam Venugopal
vsairam at vmware.com
Mon Sep 14 18:09:01 UTC 2015
Acked-by: Sairam Venugopal <vsairam at vmware.com>
On 9/10/15, 3:09 PM, "Alin Serdean" <aserdean at cloudbasesolutions.com>
wrote:
>If we have a flow rule of the following form:
> actions=strip_vlan,set_tunnel:0x3e9,15,16,17 (Where port 15, 16 and 17
>are
> VXLAN OF ports with different tunnelling information)
>
>Current implementation is that if a packet will hit that specific flow,
>only one packet will be sent out with the first tunnelling information.
>
>This patch saves the initial packet source port for further use of the
>currently implemented pipeline and ignores the latter if it
>is the last tunnelling port.
>
>Signed-off-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
>---
>This patch should also be applied on 2.4
>v5 Do not save the save the NIC index and source port ID.
>v4 Relax condition when saving ports.
>v3 Fix formatting.
>v2 Address comments.
>---
>---
> datapath-windows/ovsext/Actions.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
>diff --git a/datapath-windows/ovsext/Actions.c
>b/datapath-windows/ovsext/Actions.c
>index c8de7c5..bfe5d7f 100644
>--- a/datapath-windows/ovsext/Actions.c
>+++ b/datapath-windows/ovsext/Actions.c
>@@ -947,7 +947,6 @@ OvsOutputBeforeSetAction(OvsForwardingContext
>*ovsFwdCtx)
> {
> PNET_BUFFER_LIST newNbl;
> NDIS_STATUS status = NDIS_STATUS_SUCCESS;
>- PNET_BUFFER nb;
>
> /*
> * Create a copy and work on the copy after this point. The original
>NBL is
>@@ -967,14 +966,14 @@ OvsOutputBeforeSetAction(OvsForwardingContext
>*ovsFwdCtx)
> * XXX Head room needs to include the additional encap.
> * XXX copySize check is not considering multiple NBs.
> */
>- nb = NET_BUFFER_LIST_FIRST_NB(ovsFwdCtx->curNbl);
> newNbl = OvsPartialCopyNBL(ovsFwdCtx->switchContext,
>ovsFwdCtx->curNbl,
> 0, 0, TRUE /*copy NBL info*/);
>
> ASSERT(ovsFwdCtx->destPortsSizeOut > 0 ||
> ovsFwdCtx->tunnelTxNic != NULL || ovsFwdCtx->tunnelRxNic !=
>NULL);
>
>- /* Send the original packet out */
>+ /* Send the original packet out and save the original source port
>number */
>+ UINT32 tempVportNo = ovsFwdCtx->srcVportNo;
> status = OvsOutputForwardingCtx(ovsFwdCtx);
> ASSERT(ovsFwdCtx->curNbl == NULL);
> ASSERT(ovsFwdCtx->destPortsSizeOut == 0);
>@@ -992,7 +991,7 @@ OvsOutputBeforeSetAction(OvsForwardingContext
>*ovsFwdCtx)
> OvsCompleteNBL(ovsFwdCtx->switchContext, newNbl, TRUE);
> } else {
> status = OvsInitForwardingCtx(ovsFwdCtx,
>ovsFwdCtx->switchContext,
>- newNbl, ovsFwdCtx->srcVportNo, 0,
>+ newNbl, tempVportNo, 0,
>
>NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL(newNbl),
> ovsFwdCtx->completionList,
> &ovsFwdCtx->layers, FALSE);
>--
>1.9.5.msysgit.0
>_______________________________________________
>dev mailing list
>dev at openvswitch.org
>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=iVd0wpAwaSfU5xL5Nbr4Y7eYotstyp
>AspBeloutEaVA&s=PktnT3avtbzDDgHPB4EcKAkjn5tgUrZgO-wP0-6II-c&e=
More information about the dev
mailing list