[ovs-dev] [PATCH 6/9] datapath-windows: Add new NlFillOvsMsgForNfGenMsg method in Netlink.c

Sairam Venugopal vsairam at vmware.com
Tue Jun 21 01:23:05 UTC 2016


Create a new method to create and fill OvsMessage with NfGenMsg. This will
be used for sending Netfilter based Netlink messages.

Signed-off-by: Sairam Venugopal <vsairam at vmware.com>
---
 datapath-windows/ovsext/Netlink/Netlink.c | 39 +++++++++++++++++++++++++++++++
 datapath-windows/ovsext/Netlink/Netlink.h |  4 ++++
 2 files changed, 43 insertions(+)

diff --git a/datapath-windows/ovsext/Netlink/Netlink.c b/datapath-windows/ovsext/Netlink/Netlink.c
index a25a22a..6717dd1 100644
--- a/datapath-windows/ovsext/Netlink/Netlink.c
+++ b/datapath-windows/ovsext/Netlink/Netlink.c
@@ -73,6 +73,45 @@ NlFillOvsMsg(PNL_BUFFER nlBuf, UINT16 nlmsgType,
 
 /*
  * ---------------------------------------------------------------------------
+ * Prepare netlink message headers. This API adds
+ * NL_MSG_HDR + GENL_HDR + OVS_HDR to the tail of input NLBuf.
+ * Attributes should be added by caller.
+ * ---------------------------------------------------------------------------
+ */
+BOOLEAN
+NlFillOvsMsgForNfGenMsg(PNL_BUFFER nlBuf, UINT16 nlmsgType,
+                        UINT16 nlmsgFlags, UINT32 nlmsgSeq,
+                        UINT32 nlmsgPid, UINT8 nfgenFamily,
+                        UINT8 nfGenVersion, UINT32 dpNo)
+{
+    BOOLEAN writeOk;
+    OVS_MESSAGE msgOut;
+    UINT32 offset = NlBufSize(nlBuf);
+
+    /* To keep compiler happy for release build. */
+    UNREFERENCED_PARAMETER(offset);
+    ASSERT(NlBufAt(nlBuf, offset, 0) != 0);
+
+    msgOut.nlMsg.nlmsgType = nlmsgType;
+    msgOut.nlMsg.nlmsgFlags = nlmsgFlags;
+    msgOut.nlMsg.nlmsgSeq = nlmsgSeq;
+    msgOut.nlMsg.nlmsgPid = nlmsgPid;
+    msgOut.nlMsg.nlmsgLen = sizeof(struct _OVS_MESSAGE);
+
+    msgOut.nfGenMsg.nfgenFamily = nfgenFamily;
+    msgOut.nfGenMsg.version = nfGenVersion;
+    msgOut.nfGenMsg.resId = 0;
+
+    msgOut.ovsHdr.dp_ifindex = dpNo;
+
+    writeOk = NlMsgPutTail(nlBuf, (PCHAR)(&msgOut),
+                           sizeof (struct _OVS_MESSAGE));
+
+    return writeOk;
+}
+
+/*
+ * ---------------------------------------------------------------------------
  * Prepare NL_MSG_HDR only. This API appends a NL_MSG_HDR to the tail of
  * input NlBuf.
  * ---------------------------------------------------------------------------
diff --git a/datapath-windows/ovsext/Netlink/Netlink.h b/datapath-windows/ovsext/Netlink/Netlink.h
index cce7ec3..9d31641 100644
--- a/datapath-windows/ovsext/Netlink/Netlink.h
+++ b/datapath-windows/ovsext/Netlink/Netlink.h
@@ -94,6 +94,10 @@ BOOLEAN NlFillOvsMsg(PNL_BUFFER nlBuf,
                      UINT16 nlmsgType, UINT16 nlmsgFlags,
                      UINT32 nlmsgSeq, UINT32 nlmsgPid,
                      UINT8 genlCmd, UINT8 genlVer, UINT32 dpNo);
+BOOLEAN NlFillOvsMsgForNfGenMsg(PNL_BUFFER nlBuf, UINT16 nlmsgType,
+                                UINT16 nlmsgFlags, UINT32 nlmsgSeq,
+                                UINT32 nlmsgPid, UINT8 nfgenFamily,
+                                UINT8 nfGenVersion, UINT32 dpNo);
 BOOLEAN NlFillNlHdr(PNL_BUFFER nlBuf,
                     UINT16 nlmsgType, UINT16 nlmsgFlags,
                     UINT32 nlmsgSeq, UINT32 nlmsgPid);
-- 
2.5.0.windows.1




More information about the dev mailing list