TCP ooo reception fixes
[vpp.git] / src / vnet / tcp / tcp_debug.h
old mode 100644 (file)
new mode 100755 (executable)
index eaca672..b4497a3
@@ -50,6 +50,7 @@
   _(CC_EVT, "cc event")                        \
   _(CC_PACK, "cc partial ack")         \
   _(SEG_INVALID, "invalid segment")    \
+  _(PAWS_FAIL, "failed paws check")    \
   _(ACK_RCV_ERR, "invalid ack")                \
   _(RCV_WND_SHRUNK, "shrunk rcv_wnd")  \
 
@@ -337,7 +338,8 @@ typedef enum _tcp_dbg_evt
 #define TCP_EVT_TIMER_POP_HANDLER(_tc_index, _timer_id, ...)            \
 {                                                                      \
   tcp_connection_t *_tc;                                               \
-  if (_timer_id == TCP_TIMER_RETRANSMIT_SYN)                                   \
+  if (_timer_id == TCP_TIMER_RETRANSMIT_SYN                            \
+    || _timer_id == TCP_TIMER_ESTABLISH)                               \
     {                                                                  \
       _tc = tcp_half_open_connection_get (_tc_index);                  \
     }                                                                  \
@@ -381,6 +383,20 @@ typedef enum _tcp_dbg_evt
   ed->data[4] = _tc->rcv_wnd;                                          \
 }
 
+#define TCP_EVT_PAWS_FAIL_HANDLER(_tc, _seq, _end, ...)                        \
+{                                                                      \
+  ELOG_TYPE_DECLARE (_e) =                                             \
+  {                                                                    \
+    .format = "paws fail: seq %u end %u tsval %u tsval_recent %u",     \
+    .format_args = "i4i4i4i4",                                         \
+  };                                                                   \
+  DECLARE_ETD(_tc, _e, 4);                                             \
+  ed->data[0] = _seq - _tc->irs;                                       \
+  ed->data[1] = _end - _tc->irs;                                       \
+  ed->data[2] = _tc->opt.tsval;                                                \
+  ed->data[3] = _tc->tsval_recent;                                     \
+}
+
 #define TCP_EVT_ACK_RCV_ERR_HANDLER(_tc, _type, _ack, ...)             \
 {                                                                      \
   ELOG_TYPE_DECLARE (_e) =                                             \