aggiornamento (3 agosto 2016): Dopo aver cercato e fuori per gli ultimi due mesi su questa questione (perché io sono davvero bisogno di questa risposta me stesso). Credo di aver trovato la risposta incentrata su Windows. L'ho provato solo su Windows 10, quindi non conosco le versioni precedenti. Ma questa API non dovrebbe essere cambiato se qualcuno vuole verificarlo per me :-)
Tutti _IP_ADAPTER_UNICAST_ADDRESS strutture hanno un'enumerazione per il prefisso indirizzo e il suffisso. Ora mi sono preso la briga di guardarli e sono l'intera chiave per risolvere questo problema!
Che cos'è un indirizzo IPv6 temporaneo .... è un indirizzo con SUFFIX RANDOM! Quindi, per tutti gli indirizzi IPv6 in un IP_ADAPTER_UNICAST_ADDRESS, guarda il IP_SUFFIX_ORIGIN vedi se è IpSuffixOriginRandom. Questo è tutto.
Sono davvero sorpreso di quanto poco ci sia su questo argomento online e questo sarà un grosso problema in pochi anni per gli sviluppatori di applicazioni di rete se nessuno sa come risolvere questo problema per le applicazioni lato server (anche quelle in esecuzione su PC consumer)
Avete sentito prima la risposta !!!
(Risposta originale): Ho cercato in questo argomento esatto per un'applicazione multipiattaforma pure. Penso di aver trovato un modo "" per filtrare gli indirizzi temporanei IPv6 in Windows. Fondamentalmente RFC 4941 sinistri indirizzi temporanei deve:
- Avere una durata di validità inferiore alla Indirizzo "Pubblico"
- hanno una durata preferita meno l'indirizzo "pubblico"
Così per C++, quando utilizzando una funzione come GetAdaptersAddresses è possibile cercare nella struttura PIP_ADAPTER_ADDRESSES per la struttura _IP_ADAPTER_UNICAST_ADDRESS e valutare i membri ValidLifetime e PreferredLifetime. Dopo il filtraggio per il tipo di indirizzo (se è necessario conoscere Local-Link vs Public) è possibile mantenere un conteggio della durata maggiore. La durata maggiore (per adattatore) dovrebbe essere l'indirizzo pubblico!
Per visualizzare le informazioni sull'indirizzo durata eseguire rapidamente il comando da terminale di Windows: netsh interface ipv6 indirizzo spettacolo
Potete vedere tutti gli indirizzi temporanei sono molto più piccoli rispetto alle vite SLAAC in default.
Per ora sto lavorando con questa ipotesi finché i test non dimostrano il contrario. Tutti gli indirizzi temporanei sono basati sul pubblico e quindi non possono essere pubblicati.
Spero che questo aiuti
Hai mai trovato una risposta a questo, José? Sono curioso di me stesso ... – theory
No, era un po 'complesso e ho deciso di non implementarlo. –
Bummer. Almeno hai codice che mostra come usare 'octl' su OS X che fa il trucco? – theory