stellar support monotonic time and real time
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <assert.h>
|
||||
|
||||
#include "macro.h"
|
||||
#include "times.h"
|
||||
#include "tcp_utils.h"
|
||||
#include "udp_utils.h"
|
||||
#include "id_generator.h"
|
||||
@@ -513,9 +514,7 @@ static int duplicated_packet_bypass(struct session_manager *mgr, struct session
|
||||
|
||||
static void session_update(struct session *sess, enum session_state next_state, const struct packet *pkt, const struct tuple6 *key, enum flow_direction dir)
|
||||
{
|
||||
struct timespec real;
|
||||
clock_gettime(CLOCK_REALTIME, &real); // must be realtime
|
||||
|
||||
uint64_t real_sec = stellar_get_real_time_sec();
|
||||
if (session_get_state(sess) == SESSION_STATE_INIT)
|
||||
{
|
||||
session_set_id(sess, id_generator_alloc());
|
||||
@@ -548,7 +547,7 @@ static void session_update(struct session *sess, enum session_state next_state,
|
||||
}
|
||||
|
||||
tuple6_to_str(key, sess->tuple_str, sizeof(sess->tuple_str));
|
||||
session_set_timestamp(sess, SESSION_TIMESTAMP_START, real.tv_sec);
|
||||
session_set_timestamp(sess, SESSION_TIMESTAMP_START, real_sec);
|
||||
switch (key->ip_proto)
|
||||
{
|
||||
case IPPROTO_TCP:
|
||||
@@ -580,7 +579,7 @@ static void session_update(struct session *sess, enum session_state next_state,
|
||||
|
||||
session_set_current_packet(sess, pkt);
|
||||
session_set_flow_direction(sess, dir);
|
||||
session_set_timestamp(sess, SESSION_TIMESTAMP_LAST, real.tv_sec);
|
||||
session_set_timestamp(sess, SESSION_TIMESTAMP_LAST, real_sec);
|
||||
session_set_state(sess, next_state);
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ struct session
|
||||
{
|
||||
uint64_t id;
|
||||
uint64_t stats[MAX_FLOW_DIRECTION][MAX_STAT];
|
||||
uint64_t timestamps[MAX_TIMESTAMP];
|
||||
uint64_t timestamps[MAX_TIMESTAMP]; // realtime seconds
|
||||
struct tcp_half tcp_halfs[MAX_FLOW_DIRECTION];
|
||||
struct timeout timeout;
|
||||
struct list_head lru;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -302,6 +303,7 @@ TEST(CASE, TCP_FAST_OPEN)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// TCP state machine test: active -> closing
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -86,6 +87,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -176,6 +178,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -262,6 +265,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -346,6 +350,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_DATA_TIMEOUT)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -395,6 +400,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_HALF_CLOSED_TIMEOUT)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -474,6 +480,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// TCP state machine test: init -> opening
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -59,6 +60,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -136,6 +138,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -213,6 +216,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -301,6 +305,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -402,6 +407,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -497,6 +503,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -591,6 +598,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -679,6 +687,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// TCP state machine test: init -> opening -> active -> closing -> closed
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -54,6 +55,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// TCP state machine test: opening -> active
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -58,6 +59,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -146,6 +148,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// TCP state machine test: opening -> closing
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -59,6 +60,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -157,6 +159,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -251,6 +254,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -344,6 +348,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_INIT_TIMEOUT)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -401,6 +406,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_HANDSHAKE_TIMEOUT)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -489,6 +495,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -588,6 +595,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_HALF_FIN)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -675,6 +683,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// UDP state machine test: init -> opening -> active -> closing
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -54,6 +55,7 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// UDP state machine test: init -> opening -> closing
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -59,6 +60,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_C2S)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -137,6 +139,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C)
|
||||
struct session_manager *mgr = NULL;
|
||||
struct session_manager_stat *stat = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -51,6 +52,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_DATA)
|
||||
struct session *sess = NULL;
|
||||
struct session_manager *mgr = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -52,6 +53,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_HANDSHAKE)
|
||||
struct session *sess = NULL;
|
||||
struct session_manager *mgr = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -52,6 +53,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_INIT)
|
||||
struct session *sess = NULL;
|
||||
struct session_manager *mgr = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "times.h"
|
||||
#include "session_priv.h"
|
||||
#include "session_manager.h"
|
||||
|
||||
@@ -51,6 +52,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA1)
|
||||
struct session *sess = NULL;
|
||||
struct session_manager *mgr = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
@@ -86,6 +88,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA2)
|
||||
struct session *sess = NULL;
|
||||
struct session_manager *mgr = NULL;
|
||||
|
||||
stellar_update_time_cache();
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user