Message ID | 20160713233838.47648-7-vsairam@vmware.com |
---|---|
State | Superseded |
Delegated to: | Guru Shetty |
Headers | show |
Acked-By: Yin Lin <linyi@vmware.com> On Wed, Jul 13, 2016 at 4:38 PM, Sairam Venugopal <vsairam@vmware.com> wrote: > Tweak the OvsCreateNlMsgFromCtEntry() method to reuse it for creating > netlink messages from other files. Also define the function in Conntrack.h > to make it accessible. > > Signed-off-by: Sairam Venugopal <vsairam@vmware.com> > --- > datapath-windows/ovsext/Conntrack.c | 32 ++++++++++++++++++++++---------- > datapath-windows/ovsext/Conntrack.h | 9 +++++++++ > 2 files changed, 31 insertions(+), 10 deletions(-) > > diff --git a/datapath-windows/ovsext/Conntrack.c > b/datapath-windows/ovsext/Conntrack.c > index 90b59ce..382c13d 100644 > --- a/datapath-windows/ovsext/Conntrack.c > +++ b/datapath-windows/ovsext/Conntrack.c > @@ -934,12 +934,15 @@ WindowsTickToUnixSeconds(long long windowsTicks) > - SEC_TO_UNIX_EPOCH)); > } > > -static NTSTATUS > +NTSTATUS > OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, > - POVS_MESSAGE msgIn, > PVOID outBuffer, > UINT32 outBufLen, > - int dpIfIndex) > + UINT8 eventType, > + UINT32 nlmsgSeq, > + UINT32 nlmsgPid, > + UINT8 nfGenVersion, > + UINT32 dpIfIndex) > { > NL_BUFFER nlBuf; > BOOLEAN ok; > @@ -947,6 +950,7 @@ OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, > UINT32 timeout; > NDIS_STATUS status; > UINT64 currentTime, expiration; > + UINT16 nlmsgType; > NdisGetCurrentSystemTime((LARGE_INTEGER *)¤tTime); > UINT8 nfgenFamily = 0; > if (entry->key.dl_type == htons(ETH_TYPE_IPV4)) { > @@ -957,13 +961,17 @@ OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, > > NlBufInit(&nlBuf, outBuffer, outBufLen); > /* Mimic netfilter */ > - UINT16 nlmsgType = (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW); > + if (eventType == OVS_EVENT_CT_NEW) { > + nlmsgType = (UINT16) (NFNL_SUBSYS_CTNETLINK << 8 | > IPCTNL_MSG_CT_NEW); > + } else if (eventType == OVS_EVENT_CT_DELETE) { > + nlmsgType = (UINT16) (NFNL_SUBSYS_CTNETLINK << 8 | > IPCTNL_MSG_CT_DELETE); > + } else { > + return STATUS_INVALID_PARAMETER; > + } > + > ok = NlFillOvsMsgForNfGenMsg(&nlBuf, nlmsgType, NLM_F_CREATE, > - msgIn->nlMsg.nlmsgSeq, > - msgIn->nlMsg.nlmsgPid, > - nfgenFamily, > - msgIn->nfGenMsg.version, > - dpIfIndex); > + nlmsgSeq, nlmsgPid, nfgenFamily, > + nfGenVersion, dpIfIndex); > if (!ok) { > return STATUS_INVALID_BUFFER_SIZE; > } > @@ -1130,9 +1138,13 @@ OvsCtDumpCmdHandler(POVS_USER_PARAMS_CONTEXT > usrParamsCtx, > if (outIndex >= inIndex) { > entry = CONTAINING_RECORD(link, OVS_CT_ENTRY, link); > > - rc = OvsCreateNlMsgFromCtEntry(entry, msgIn, > + rc = OvsCreateNlMsgFromCtEntry(entry, > > usrParamsCtx->outputBuffer, > > usrParamsCtx->outputLength, > + OVS_EVENT_CT_NEW, > + msgIn->nlMsg.nlmsgSeq, > + msgIn->nlMsg.nlmsgPid, > + > msgIn->nfGenMsg.version, > 0); > > if (rc != NDIS_STATUS_SUCCESS) { > diff --git a/datapath-windows/ovsext/Conntrack.h > b/datapath-windows/ovsext/Conntrack.h > index 6d573c8..4995ff4 100644 > --- a/datapath-windows/ovsext/Conntrack.h > +++ b/datapath-windows/ovsext/Conntrack.h > @@ -116,4 +116,13 @@ enum CT_UPDATE_RES > OvsConntrackUpdateTcpEntry(OVS_CT_ENTRY* conn_, > enum ct_update_res OvsConntrackUpdateOtherEntry(OVS_CT_ENTRY *conn_, > BOOLEAN reply, > UINT64 now); > +NTSTATUS > +OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, > + PVOID outBuffer, > + UINT32 outBufLen, > + UINT8 eventType, > + UINT32 nlmsgSeq, > + UINT32 nlmsgPid, > + UINT8 nfGenVersion, > + UINT32 dpIfIndex); > #endif /* __OVS_CONNTRACK_H_ */ > -- > 2.9.0.windows.1 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev >
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> > -----Mesaj original----- > De la: dev [mailto:dev-bounces@openvswitch.org] În numele Sairam > Venugopal > Trimis: Thursday, July 14, 2016 2:39 AM > Către: dev@openvswitch.org > Subiect: [ovs-dev] [PATCH 6/9] datapath-windows: Modify > OvsCreateNlMsgFromCtEntry to make it reusable > > Tweak the OvsCreateNlMsgFromCtEntry() method to reuse it for creating > netlink messages from other files. Also define the function in Conntrack.h to > make it accessible. > > Signed-off-by: Sairam Venugopal <vsairam@vmware.com>
diff --git a/datapath-windows/ovsext/Conntrack.c b/datapath-windows/ovsext/Conntrack.c index 90b59ce..382c13d 100644 --- a/datapath-windows/ovsext/Conntrack.c +++ b/datapath-windows/ovsext/Conntrack.c @@ -934,12 +934,15 @@ WindowsTickToUnixSeconds(long long windowsTicks) - SEC_TO_UNIX_EPOCH)); } -static NTSTATUS +NTSTATUS OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, - POVS_MESSAGE msgIn, PVOID outBuffer, UINT32 outBufLen, - int dpIfIndex) + UINT8 eventType, + UINT32 nlmsgSeq, + UINT32 nlmsgPid, + UINT8 nfGenVersion, + UINT32 dpIfIndex) { NL_BUFFER nlBuf; BOOLEAN ok; @@ -947,6 +950,7 @@ OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, UINT32 timeout; NDIS_STATUS status; UINT64 currentTime, expiration; + UINT16 nlmsgType; NdisGetCurrentSystemTime((LARGE_INTEGER *)¤tTime); UINT8 nfgenFamily = 0; if (entry->key.dl_type == htons(ETH_TYPE_IPV4)) { @@ -957,13 +961,17 @@ OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, NlBufInit(&nlBuf, outBuffer, outBufLen); /* Mimic netfilter */ - UINT16 nlmsgType = (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW); + if (eventType == OVS_EVENT_CT_NEW) { + nlmsgType = (UINT16) (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW); + } else if (eventType == OVS_EVENT_CT_DELETE) { + nlmsgType = (UINT16) (NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_DELETE); + } else { + return STATUS_INVALID_PARAMETER; + } + ok = NlFillOvsMsgForNfGenMsg(&nlBuf, nlmsgType, NLM_F_CREATE, - msgIn->nlMsg.nlmsgSeq, - msgIn->nlMsg.nlmsgPid, - nfgenFamily, - msgIn->nfGenMsg.version, - dpIfIndex); + nlmsgSeq, nlmsgPid, nfgenFamily, + nfGenVersion, dpIfIndex); if (!ok) { return STATUS_INVALID_BUFFER_SIZE; } @@ -1130,9 +1138,13 @@ OvsCtDumpCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, if (outIndex >= inIndex) { entry = CONTAINING_RECORD(link, OVS_CT_ENTRY, link); - rc = OvsCreateNlMsgFromCtEntry(entry, msgIn, + rc = OvsCreateNlMsgFromCtEntry(entry, usrParamsCtx->outputBuffer, usrParamsCtx->outputLength, + OVS_EVENT_CT_NEW, + msgIn->nlMsg.nlmsgSeq, + msgIn->nlMsg.nlmsgPid, + msgIn->nfGenMsg.version, 0); if (rc != NDIS_STATUS_SUCCESS) { diff --git a/datapath-windows/ovsext/Conntrack.h b/datapath-windows/ovsext/Conntrack.h index 6d573c8..4995ff4 100644 --- a/datapath-windows/ovsext/Conntrack.h +++ b/datapath-windows/ovsext/Conntrack.h @@ -116,4 +116,13 @@ enum CT_UPDATE_RES OvsConntrackUpdateTcpEntry(OVS_CT_ENTRY* conn_, enum ct_update_res OvsConntrackUpdateOtherEntry(OVS_CT_ENTRY *conn_, BOOLEAN reply, UINT64 now); +NTSTATUS +OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, + PVOID outBuffer, + UINT32 outBufLen, + UINT8 eventType, + UINT32 nlmsgSeq, + UINT32 nlmsgPid, + UINT8 nfGenVersion, + UINT32 dpIfIndex); #endif /* __OVS_CONNTRACK_H_ */
Tweak the OvsCreateNlMsgFromCtEntry() method to reuse it for creating netlink messages from other files. Also define the function in Conntrack.h to make it accessible. Signed-off-by: Sairam Venugopal <vsairam@vmware.com> --- datapath-windows/ovsext/Conntrack.c | 32 ++++++++++++++++++++++---------- datapath-windows/ovsext/Conntrack.h | 9 +++++++++ 2 files changed, 31 insertions(+), 10 deletions(-)