4.1. Estensioni dell'interfaccia del modulo IP
L'interfaccia del modulo IP verso i protocolli di livello superiore è estesa per consentire a un protocollo di richiedere la ricezione di tutti i datagrammi inviati a un particolare canale.
Subscribe ( socket, source-address, group-address, interface )
Unsubscribe ( socket, source-address, group-address, interface )
Dove:
"socket" è definito nella sezione 2,
e, citando [IGMPv3]:
"interface" è un identificatore locale dell'interfaccia di rete che indica su quale interfaccia di rete abilitare o disabilitare la ricezione del canale identificato dalla coppia (source-address,group-address). Può essere utilizzato un valore speciale per indicare l'interfaccia "predefinita". Se si desidera ricevere lo stesso canale su più interfacce, è necessaria una chiamata Subscribe separata per ciascuna interfaccia.
L'interfaccia di cui sopra è strettamente un'interfaccia funzionale astratta -- la sua funzionalità può essere fornita in modo specifico per l'implementazione. Ad esempio, sugli host che supportano l'interfaccia di programmazione per il filtraggio delle sorgenti multicast [MSFAPI], le interfacce Subscribe e Unsubscribe possono essere supportate tramite tale API. Quando un host è configurato per conoscere l'intervallo di indirizzi SSM (che il meccanismo di configurazione sia manuale o tramite protocollo), se un'applicazione avvia una richiesta non specifica della sorgente per ricevere il multicast inviato a un indirizzo di destinazione SSM, il sistema operativo dell'host DOVREBBE (SHOULD) restituire un errore all'applicazione.
Gli host che non supportano queste interfacce del modulo IP (ad esempio, host che supportano solo ASM) e i loro protocolli sottostanti non possono aspettarsi di ricevere in modo affidabile il traffico inviato su un canale SSM. Come specificato nella sezione 5.2, i router non configurano uno stato di inoltro SSM né inoltrano datagrammi in risposta a una richiesta di join ASM.
L'implementazione diffusa delle interfacce di ricezione dei datagrammi IP (ad esempio la chiamata di sistema recvfrom() in Unix BSD) non consente al ricevitore di determinare l'indirizzo di destinazione a cui è stato inviato un datagramma. Sugli host con tali implementazioni, quando il socket che riceve i datagrammi è sottoscritto a più canali, non è possibile dedurre l'indirizzo di destinazione del datagramma. Il sistema operativo dell'host DOVREBBE (SHOULD) fornire un mezzo che consenta all'host di determinare gli indirizzi sorgente e di destinazione utilizzati durante l'invio del datagramma. (Ad esempio, il sistema operativo Linux fornisce l'indirizzo di destinazione del pacchetto nella risposta della chiamata di sistema recvmsg().) In attesa di questa capacità, le applicazioni potrebbero essere costrette a utilizzare meccanismi di livello superiore per identificare il canale a cui è stato inviato il datagramma.