Browse Source

BGP: log node add/remove per group at info level

v2
evgeny 4 weeks ago
parent
commit
b0f149092f
  1. 9
      src/routing_layer/topo_group.c

9
src/routing_layer/topo_group.c

@ -240,6 +240,8 @@ static void topo_group_conn_add_path(struct TOPO_GROUP* group, struct ETCP_CONN*
memset((uint8_t*)nq + sizeof(struct ll_entry), 0, sizeof(*nq) - sizeof(struct ll_entry));
nq->node_id = node_id;
queue_data_put_with_index(group->nodes, &nq->ll);
DEBUG_INFO(DEBUG_CATEGORY_BGP, "node added to group: node=%016llx grp=%016llx type=%u ch=%s (direct)",
(unsigned long long)node_id, (unsigned long long)group->group_id, group->group_type, group->channel_id);
}
uint64_t hop[1] = { node_id };
topo_group_add_path(nq, conn, hop, 1, 0);
@ -617,6 +619,8 @@ void topo_group_remove_conn(struct TOPO_GROUP* group, struct ETCP_CONN* conn) {
struct ll_entry* entry = node_entry;
if (entry) { queue_remove_data(group->nodes, entry); queue_entry_free(entry); }
nodes_removed++;
DEBUG_INFO(DEBUG_CATEGORY_BGP, "node removed from group: node=%016llx grp=%016llx type=%u ch=%s (link_down)",
(unsigned long long)key, (unsigned long long)group->group_id, group->group_type, group->channel_id);
etcp_router_conn_close_all_for_node(group->instance, group->group_id, key);
uint64_t wd_src = (key == conn->peer_node_id) ? conn->instance->node_id : conn->peer_node_id;
topo_group_broadcast_withdraw(group, key, wd_src, NULL);
@ -843,6 +847,9 @@ int topo_group_process_nodeinfo(struct TOPO_GROUP* group, struct ETCP_CONN* from
nodeinfo1->connectivity.ping_req_time = 0;
queue_data_put_with_index(group->nodes, &nodeinfo1->ll);
}
if (is_new_node)
DEBUG_INFO(DEBUG_CATEGORY_BGP, "node added to group: node=%016llx grp=%016llx type=%u ch=%s (bgp)",
(unsigned long long)node_id, (unsigned long long)group->group_id, group->group_type, group->channel_id);
nodeinfo1->paths = paths; nodeinfo1->last_ver = new_ver;
@ -936,6 +943,8 @@ int topo_group_process_withdraw(struct TOPO_GROUP* group, struct ETCP_CONN* send
topo_nodeq_free_group_fields(group->instance->topo_groups, nq);
struct ll_entry* entry = queue_find_data_by_index(group->nodes, &node_id);
if (entry) { queue_remove_data(group->nodes, entry); queue_entry_free(entry); }
DEBUG_INFO(DEBUG_CATEGORY_BGP, "node removed from group: node=%016llx grp=%016llx type=%u ch=%s (withdraw)",
(unsigned long long)node_id, (unsigned long long)group->group_id, group->group_type, group->channel_id);
topo_group_broadcast_withdraw(group, node_id, wd_source, sender);
/* BGP не удаляет member-запись: он работает только со своей RAM-таблицей.
Удаление из peers_* — только битая подпись при верификации (member_sync). */

Loading…
Cancel
Save