Ricezione di notifiche delle modifiche
Molti client possono aggiornare simultaneamente la tabella di routing e i client devono ricevere una notifica quando si verificano modifiche alle informazioni di routing. Ad esempio, un client che non riceve una notifica delle modifiche apportate a un altro client alla tabella di routing potrebbe annunciare informazioni di route obsolete. Ciò può essere impedito dai client di programmazione di registrare con gestione tabelle di routing per ricevere una notifica delle modifiche nella tabella di routing. Gestione tabelle di routing invia notifiche di modifiche a tutti i client che li registrano per ricevere.
La notifica di modifica si applica solo alle destinazioni. Non è possibile eseguire query sulla gestione tabelle di routing per le modifiche apportate a una determinata route.
Quando viene apportata una modifica a una delle route a una destinazione, gestione tabelle di routing invia una notifica che si è verificata una modifica. Questa notifica passa solo a quei client registrati con gestione tabelle di routing per il tipo di modifica che si è verificato. Tutte le modifiche apportate alle informazioni di routing nella gestione tabelle di routing si verificano in una o più visualizzazioni e i messaggi di notifica delle modifiche possono essere richiesti in qualsiasi subset di visualizzazioni supportate.
Attualmente sono disponibili tre tipi di notifiche di modifica per cui un client può registrare:
Notifica di qualsiasi modifica alle route per la destinazione. Questa richiesta viene effettuata usando il flag di RTM_CHANGE_TYPE_ALL.
Notifica se la route migliore alla destinazione cambia o una delle informazioni seguenti per le modifiche di route migliori correnti:
- Preferenza
- Hop successivi
- Flag di route
Questa richiesta viene effettuata usando il flag di RTM_CHANGE_TYPE_BEST.
Notifica di tutte le modifiche del tipo RTM_CHANGE_TYPE_BEST, ad eccezione delle modifiche nei flag non di inoltro nella route migliore. Ad esempio, la gestione router attende le modifiche di questo tipo nella visualizzazione unicast e aggiorna le informazioni nel server di inoltro unicast. Questa richiesta viene effettuata usando il flag di RTM_CHANGE_TYPE_FORWARDING.
Le richieste di notifiche delle modifiche possono essere limitate anche a un subset di destinazioni registrando le notifiche delle modifiche solo alle destinazioni "contrassegnate". Il client può contrassegnare una destinazione per la notifica delle modifiche chiamando RtmMarkDestForChangeNotification.
Quando si verifica una modifica, gestione tabelle di routing verifica se sono presenti client che devono ricevere una notifica di questa modifica. Un client deve ricevere una notifica di modifica se vengono soddisfatte tutte le condizioni seguenti:
- Il tipo di modifica che si è verificato è un tipo per cui il client ha registrato per la notifica
- Modifiche a una destinazione contrassegnata dal client o a qualsiasi destinazione, se il client ha richiesto modifiche per tutte le destinazioni
- Il client ha richiesto la notifica di modifica per la visualizzazione in cui si è verificata questa modifica
Se la modifica soddisfa tutti i criteri precedenti, la modifica viene memorizzata nella cache e il client riceve una notifica.
La notifica non specifica le modifiche effettive, solo che si sono verificate. Il client deve recuperare le modifiche chiamando RtmGetChangedDests usando l'handle di notifica ottenuto da una chiamata precedente a RtmRegisterForChangeNotification.