You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
1.2 KiB
26 lines
1.2 KiB
Ключевые изменения в понимании |
|
|
|
paths |
|
|
|
route_bgp_process_nodeinfo(bgp, from_conn, data, entry->len): |
|
проверяет текущую версию nodeinfo, если совпадает - только bgp_update local nodelist |
|
если версия новая или нет узла - spread: |
|
bgp_update local nodelist |
|
realloc: добавляет next hop: hoplist += prev_node_id, hop_count++ |
|
bgp_spread |
|
|
|
1. функция распространения маршрута |
|
bgp_spread(struct ROUTE_BGP bgp, struct NODEINFO* n) |
|
send to: |
|
- все подключения, если не найден uid подключения в hoplist |
|
|
|
|
|
bgp_update local nodelist: |
|
- обновляем саму node |
|
- удалеям conn где lash hop=prev_node_id |
|
- добавляем новый conn с новым hoplist |
|
|
|
2. withdraw: |
|
bgp_withdraw(struct ROUTE_BGP bgp, uint64_t node_to_del, uint64_t wd_source) - wd_source это узел который захотел withdraw. |
|
- находим у себя node to del. удаляем если в hoplist найден wd_node (или мы = wd_node) |
|
если удалили - распространяем по всем линкам с этими же аргументами
|
|
|