|
|
|
|
@ -193,9 +193,9 @@ static void ncd_down_cb(struct ETCP_CONN* conn, int event, void* arg) { (void)ev
|
|
|
|
|
DEBUG_INFO(DEBUG_CATEGORY_NCD, "[ncd] DOWN during fin_wait, cleaning up node=0x%016llx", (unsigned long long)entry->node_id); |
|
|
|
|
conn->fin_wait = 0; conn->fin_wait_clear_cb = NULL; conn->fin_wait_clear_arg = NULL; |
|
|
|
|
if (entry->fin_wait_timer) { uasync_cancel_timeout(entry->ua, entry->fin_wait_timer); entry->fin_wait_timer = NULL; } |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_init_cb, entry);; |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_up_cb, entry);; |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_down_cb, entry);; |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_init_cb, entry); |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_up_cb, entry); |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_down_cb, entry); |
|
|
|
|
etcp_connection_close(conn); |
|
|
|
|
ncd_registry_remove(entry); |
|
|
|
|
u_free(entry); |
|
|
|
|
@ -354,9 +354,9 @@ int node_conn_direct_open(struct UTUN_INSTANCE* inst, uint64_t node_id,
|
|
|
|
|
entry->handle_count = 1; |
|
|
|
|
*out_handle = h; |
|
|
|
|
|
|
|
|
|
etcp_conn_add_cbk(conn, ncd_init_cb, entry, ETCP_CBK_EVENT_INIT);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_up_cb, entry, ETCP_CBK_EVENT_UP);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_down_cb, entry, ETCP_CBK_EVENT_DOWN);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_init_cb, entry, ETCP_CBK_EVENT_INIT); |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_up_cb, entry, ETCP_CBK_EVENT_UP); |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_down_cb, entry, ETCP_CBK_EVENT_DOWN); |
|
|
|
|
|
|
|
|
|
if (conn->state == 1 && entry->up) { |
|
|
|
|
uasync_call_soon(inst->ua, h, ncd_deliver_up_cb); |
|
|
|
|
@ -421,9 +421,9 @@ int node_conn_direct_open(struct UTUN_INSTANCE* inst, uint64_t node_id,
|
|
|
|
|
entry->handle_count = 1; |
|
|
|
|
*out_handle = h; |
|
|
|
|
|
|
|
|
|
etcp_conn_add_cbk(conn, ncd_init_cb, entry, ETCP_CBK_EVENT_INIT);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_up_cb, entry, ETCP_CBK_EVENT_UP);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_down_cb, entry, ETCP_CBK_EVENT_DOWN);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_init_cb, entry, ETCP_CBK_EVENT_INIT); |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_up_cb, entry, ETCP_CBK_EVENT_UP); |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_down_cb, entry, ETCP_CBK_EVENT_DOWN); |
|
|
|
|
|
|
|
|
|
int link_count = ncd_create_links(entry, ni); |
|
|
|
|
|
|
|
|
|
@ -489,9 +489,9 @@ int node_conn_direct_open_node(struct UTUN_INSTANCE* inst, uint64_t node_id,
|
|
|
|
|
entry->handle_count = 1; |
|
|
|
|
*out_handle = h; |
|
|
|
|
|
|
|
|
|
etcp_conn_add_cbk(conn, ncd_init_cb, entry, ETCP_CBK_EVENT_INIT);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_up_cb, entry, ETCP_CBK_EVENT_UP);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_down_cb, entry, ETCP_CBK_EVENT_DOWN);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_init_cb, entry, ETCP_CBK_EVENT_INIT); |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_up_cb, entry, ETCP_CBK_EVENT_UP); |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_down_cb, entry, ETCP_CBK_EVENT_DOWN); |
|
|
|
|
|
|
|
|
|
if (conn->state == 1 && entry->up) { |
|
|
|
|
uasync_call_soon(inst->ua, h, ncd_deliver_up_cb); |
|
|
|
|
@ -548,9 +548,9 @@ int node_conn_direct_open_node(struct UTUN_INSTANCE* inst, uint64_t node_id,
|
|
|
|
|
entry->handle_count = 1; |
|
|
|
|
*out_handle = h; |
|
|
|
|
|
|
|
|
|
etcp_conn_add_cbk(conn, ncd_init_cb, entry, ETCP_CBK_EVENT_INIT);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_up_cb, entry, ETCP_CBK_EVENT_UP);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_down_cb, entry, ETCP_CBK_EVENT_DOWN);; |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_init_cb, entry, ETCP_CBK_EVENT_INIT); |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_up_cb, entry, ETCP_CBK_EVENT_UP); |
|
|
|
|
etcp_conn_add_cbk(conn, ncd_down_cb, entry, ETCP_CBK_EVENT_DOWN); |
|
|
|
|
|
|
|
|
|
int link_count = ncd_create_links(entry, ni); |
|
|
|
|
|
|
|
|
|
@ -596,10 +596,12 @@ void node_conn_direct_close(struct NODE_CONN_DIRECT* h) {
|
|
|
|
|
entry->fin_wait_timer = uasync_set_timeout(entry->ua, NCD_FIN_WAIT_TIMEOUT_TB, entry, ncd_fin_wait_timeout_cb, "ncd_fin_wait"); |
|
|
|
|
DEBUG_INFO(DEBUG_CATEGORY_NCD, "[ncd] fin_wait started node=0x%016llx", (unsigned long long)node_id); |
|
|
|
|
} else { |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_init_cb, entry);; |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_up_cb, entry);; |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_down_cb, entry);; |
|
|
|
|
if (conn) etcp_connection_close(conn); |
|
|
|
|
if (conn) { |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_init_cb, entry); |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_up_cb, entry); |
|
|
|
|
etcp_conn_remove_cbk(conn, ncd_down_cb, entry); |
|
|
|
|
etcp_connection_close(conn); |
|
|
|
|
} |
|
|
|
|
ncd_registry_remove(entry); |
|
|
|
|
u_free(entry); |
|
|
|
|
} |
|
|
|
|
|