summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Switch.c
diff options
context:
space:
mode:
authorAnand Kumar <kumaranand@vmware.com>2017-05-04 15:12:50 -0700
committerBen Pfaff <blp@ovn.org>2017-05-08 09:51:29 -0400
commit0b5166dca34e6d16c09fa3657779a1a9863b77a9 (patch)
treef2162721a2c116e788e33b5fbd80d0b6d6b9ba1c /datapath-windows/ovsext/Switch.c
parentfe520682421dd361fa33afb9f48a525daa1501ed (diff)
downloadopenvswitch-0b5166dca34e6d16c09fa3657779a1a9863b77a9.tar.gz
datapath-windows: Added a new file to support Ipv4 fragments.
This patch adds functionalities to support IPv4 fragments, which will be used by Conntrack module. Added a new structure to hold the Ipv4 fragments and a hash table to hold Ipv4 datagram entries. Also added a clean up thread that runs every minute to delete the expired IPv4 datagram entries. The individual fragments are ignored by the conntrack. Once all the fragments are recieved, a new NBL is created out of the reassembled fragments and conntrack executes actions on the new NBL. Created new APIs OvsProcessIpv4Fragment() to process individual fragments, OvsIpv4Reassemble() to reassemble Ipv4 fragments. Signed-off-by: Anand Kumar <kumaranand@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Diffstat (limited to 'datapath-windows/ovsext/Switch.c')
-rw-r--r--datapath-windows/ovsext/Switch.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/datapath-windows/ovsext/Switch.c b/datapath-windows/ovsext/Switch.c
index 138a656ce..558e3af6e 100644
--- a/datapath-windows/ovsext/Switch.c
+++ b/datapath-windows/ovsext/Switch.c
@@ -27,6 +27,7 @@
#include "Flow.h"
#include "IpHelper.h"
#include "Oid.h"
+#include "IpFragment.h"
#ifdef OVS_DBG_MOD
#undef OVS_DBG_MOD
@@ -229,6 +230,12 @@ OvsCreateSwitch(NDIS_HANDLE ndisFilterHandle,
if (status != STATUS_SUCCESS) {
OvsUninitSwitchContext(switchContext);
OVS_LOG_ERROR("Exit: Failed to initialize Connection tracking");
+ }
+
+ status = OvsInitIpFragment(switchContext);
+ if (status != STATUS_SUCCESS) {
+ OvsUninitSwitchContext(switchContext);
+ OVS_LOG_ERROR("Exit: Failed to initialize Ip Fragment");
goto create_switch_done;
}
@@ -265,6 +272,8 @@ OvsExtDetach(NDIS_HANDLE filterModuleContext)
OvsCleanupSttDefragmentation();
OvsCleanupConntrack();
OvsCleanupCtRelated();
+ OvsCleanupIpFragment();
+
/* This completes the cleanup, and a new attach can be handled now. */
OVS_LOG_TRACE("Exit: OvsDetach Successfully");