diff options
author | Sairam Venugopal <vsairam@vmware.com> | 2016-11-09 16:34:22 -0800 |
---|---|---|
committer | Gurucharan Shetty <guru@ovn.org> | 2016-11-11 13:53:07 -0800 |
commit | 6e83dfd9c77d83c873f9a51455a90d273e3ee157 (patch) | |
tree | efb999fe360395e8164a1a9a4db6546c8f933d6f /datapath-windows/ovsext/Conntrack.h | |
parent | a4dabb3df5d000e689915ff9f1df1d21ece0d496 (diff) | |
download | openvswitch-6e83dfd9c77d83c873f9a51455a90d273e3ee157.tar.gz |
datapath-windows: Enable support for tracking ICMP code and type
Add support for tracking ICMP code and Type in the Hyper-V Conntrack
module. This code is similar to the userspace connection tracker.
Signed-off-by: Sairam Venugopal <vsairam@vmware.com>
Acked-by: Anand Kumar <kumaranand@vmware.com>
Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/Conntrack.h')
-rw-r--r-- | datapath-windows/ovsext/Conntrack.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/datapath-windows/ovsext/Conntrack.h b/datapath-windows/ovsext/Conntrack.h index 4995ff412..270e2dd15 100644 --- a/datapath-windows/ovsext/Conntrack.h +++ b/datapath-windows/ovsext/Conntrack.h @@ -31,7 +31,14 @@ struct ct_addr { struct ct_endpoint { struct ct_addr addr; - ovs_be16 port; + union { + ovs_be16 port; + struct { + ovs_be16 icmp_id; + uint8_t icmp_type; + uint8_t icmp_code; + }; + }; UINT16 pad; }; @@ -94,6 +101,14 @@ typedef struct OvsConntrackKeyLookupCtx { ((STRUCT *) (void *) ((char *) (POINTER) - \ offsetof (STRUCT, MEMBER))) +static __inline void +OvsConntrackUpdateExpiration(OVS_CT_ENTRY *ctEntry, + long long now, + long long interval) +{ + ctEntry->expiration = now + interval; +} + VOID OvsCleanupConntrack(VOID); NTSTATUS OvsInitConntrack(POVS_SWITCH_CONTEXT context); @@ -102,20 +117,25 @@ NDIS_STATUS OvsExecuteConntrackAction(PNET_BUFFER_LIST curNbl, OvsFlowKey *key, const PNL_ATTR a); BOOLEAN OvsConntrackValidateTcpPacket(const TCPHdr *tcp); +BOOLEAN OvsConntrackValidateIcmpPacket(const ICMPHdr *icmp); OVS_CT_ENTRY * OvsConntrackCreateTcpEntry(const TCPHdr *tcp, PNET_BUFFER_LIST nbl, UINT64 now); NDIS_STATUS OvsCtMapTcpProtoInfoToNl(PNL_BUFFER nlBuf, OVS_CT_ENTRY *conn_); OVS_CT_ENTRY * OvsConntrackCreateOtherEntry(UINT64 now); +OVS_CT_ENTRY * OvsConntrackCreateIcmpEntry(UINT64 now); enum CT_UPDATE_RES OvsConntrackUpdateTcpEntry(OVS_CT_ENTRY* conn_, const TCPHdr *tcp, PNET_BUFFER_LIST nbl, BOOLEAN reply, UINT64 now); -enum ct_update_res OvsConntrackUpdateOtherEntry(OVS_CT_ENTRY *conn_, +enum CT_UPDATE_RES OvsConntrackUpdateOtherEntry(OVS_CT_ENTRY *conn_, BOOLEAN reply, UINT64 now); +enum CT_UPDATE_RES OvsConntrackUpdateIcmpEntry(OVS_CT_ENTRY* conn_, + BOOLEAN reply, + UINT64 now); NTSTATUS OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, PVOID outBuffer, |