7.1 Extensions to the IP Service Interface (Estensioni all'interfaccia di servizio IP)
7.1. Extensions to the IP Service Interface (Estensioni all'interfaccia di servizio IP)
I datagrammi IP multicast in arrivo vengono ricevuti dai moduli di protocollo di livello superiore utilizzando la stessa operazione "Receive IP" dei normali datagrammi unicast. La selezione di un protocollo di livello superiore di destinazione si basa sul campo protocollo nell'intestazione IP, indipendentemente dall'indirizzo IP di destinazione. Tuttavia, prima che possano essere ricevuti datagrammi destinati a un gruppo particolare, un protocollo di livello superiore deve chiedere al modulo IP di unirsi a quel gruppo. Pertanto, l'interfaccia di servizio IP deve essere estesa per fornire due nuove operazioni:
JoinHostGroup ( group-address, interface )
LeaveHostGroup ( group-address, interface )
L'operazione JoinHostGroup richiede che questo host diventi membro del gruppo host identificato da group-address sull'interfaccia di rete data. L'operazione LeaveHostGroup richiede che questo host rinunci alla sua appartenenza al gruppo host identificato da group-address sull'interfaccia di rete data. L'argomento interface può essere omesso sugli host che supportano una sola interfaccia. Per gli host che possono essere collegati a più di una rete, il protocollo di livello superiore può scegliere di lasciare l'interfaccia non specificata, nel qual caso la richiesta si applicherà all'interfaccia predefinita per l'invio di datagrammi multicast (vedere sezione 6.1).
È consentito unirsi allo stesso gruppo su più di un'interfaccia, nel qual caso potrebbero essere ricevuti datagrammi multicast duplicati. È anche consentito a più protocolli di livello superiore richiedere l'appartenenza allo stesso gruppo.
Entrambe le operazioni dovrebbero ritornare immediatamente (cioè, sono operazioni non bloccanti), indicando successo o fallimento. Entrambe le operazioni possono fallire a causa di un indirizzo di gruppo o identificatore di interfaccia non valido. JoinHostGroup può fallire a causa della mancanza di risorse locali. LeaveHostGroup può fallire perché l'host non appartiene al gruppo dato sull'interfaccia data. LeaveHostGroup può avere successo, ma l'appartenenza persiste, se più di un protocollo di livello superiore ha richiesto l'appartenenza allo stesso gruppo.