= La funzione gnodes_split =
Nel caso in cui, con la perdita di un link, il nodo corrente perde tutte le route disponibili per un certo numero di nodi, siamo di fronte allo split di un gnodo. Questo vale sia a livello 0 sia ai livelli superiori. Al livello 0 si tratta di nodi che non sono più raggiungibili per via dello split del gnodo di livello 1. Al livello 2 si tratta di gnodi di livello 1 non più raggiungibili per via dello split di un gnodo di livello 2. E via dicendo.
Quando il nodo corrente assiste a questo split e scopre di essere nel blocco più piccolo deve procedere ad un re-hook.
Vediamo come si implementa questa verifica.
La funzione '''gnodes_split''' viene richiamata dalla {{{communicating_vessels}}} quando questa è stata chiamata per via dell'esecuzione di un ETP ricevuto. E riceve da essa come argomenti {{{old_node_nb}}} e {{{cur_node_nb}}}, il numero di nodi nella mappa di routes, per ogni livello, che erano presenti prima della processazione dell'ETP e che sono presenti ora.
<
>
Partendo dal secondo livello più alto della mappa di route - il livello più alto non viene preso in considerazione perché saremmo in presenza della divisione dell'intera rete Netsukuku - la funzione cerca il primo livello in cui il numero di nodi raggiungibili ora è '''minore o uguale''' al numero di nodi non più raggiungibili rispetto al momento prima della processazione dell'ETP.
<
>
'''''TODO''': Verificare la correttezza del calcolo, in particolare nb_node tiene conto anche del nodo corrente? Se entrambi i tronconi fanno rehook è un problema?''
<
>
Se questo livello {{{level}}} esiste, il nostro attuale gnodo di livello {{{level}}} è splittato. Quindi dobbiamo fare un re-hook nel quale non deve essere preso in considerazione l'attuale gnodo di livello {{{level}}}.
<
>
La funzione avvia in un microthread la [[../MicrofuncHook|microfunc hook]] specificando in {{{forbidden_neighs}}} che vuole escludere dai possibili hooks il suo precedente (attuale) gnodo di livello {{{level}}}.
<
>
Poi restituisce {{{True}}}.
Se invece non siamo in questa situazione, la funzione restituisce {{{False}}}.