The function tcp_payload_length is moved to a private
include file to be used by other conntrack files.  A
sanity check is added for general use, although
previous usage was safe in that filtering is already
done by the time it is called.

Signed-off-by: Darrell Ball <[email protected]>
---
 lib/conntrack-private.h | 13 +++++++++++++
 lib/conntrack-tcp.c     |  7 -------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/lib/conntrack-private.h b/lib/conntrack-private.h
index a7c2ae4..34ab77d 100644
--- a/lib/conntrack-private.h
+++ b/lib/conntrack-private.h
@@ -28,6 +28,7 @@
 #include "openvswitch/types.h"
 #include "packets.h"
 #include "unaligned.h"
+#include "dp-packet.h"
 
 struct ct_endpoint {
     struct ct_addr addr;
@@ -116,4 +117,16 @@ conn_update_expiration(struct conntrack_bucket *ctb, 
struct conn *conn,
     conn_init_expiration(ctb, conn, tm, now);
 }
 
+static inline uint32_t
+tcp_payload_length(struct dp_packet *pkt)
+{
+    char * tcp_payload = (char *) dp_packet_get_tcp_payload(pkt);
+    if (tcp_payload) {
+        return (char *) dp_packet_tail(pkt) - dp_packet_l2_pad_size(pkt)
+               - tcp_payload;
+    } else {
+        return 0;
+    }
+}
+
 #endif /* conntrack-private.h */
diff --git a/lib/conntrack-tcp.c b/lib/conntrack-tcp.c
index ea22400..04460c3 100644
--- a/lib/conntrack-tcp.c
+++ b/lib/conntrack-tcp.c
@@ -144,13 +144,6 @@ tcp_get_wscale(const struct tcp_header *tcp)
     return wscale;
 }
 
-static uint32_t
-tcp_payload_length(struct dp_packet *pkt)
-{
-    return (char *) dp_packet_tail(pkt) - dp_packet_l2_pad_size(pkt)
-           - (char *) dp_packet_get_tcp_payload(pkt);
-}
-
 static enum ct_update_res
 tcp_conn_update(struct conn *conn_, struct conntrack_bucket *ctb,
                 struct dp_packet *pkt, bool reply, long long now)
-- 
1.9.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to