nl::Inet::RawEndPoint

#include <src/inet/RawEndPoint.h>

Gli oggetti di questa classe rappresentano endpoint di rete IP non elaborati.

Riepilogo

Il livello Nest Inet include metodi per interagire con gli endpoint di rete IP (socket SOCK_RAW su sistemi Linux e derivati da BSD) o con i blocchi di controllo di protocollo non elaborato LwIP, in quanto il sistema è configurato di conseguenza.

Eredità

Eredita da: nl::Inet::IPEndPointBasis

Attributi pubblici

IPProto
IPProtocol
Versione dell'Internet Control Message Protocol (ICMP)
IPVer
IPVersion
Versione del protocollo Internet.

Funzioni pubbliche

Bind(IPAddressType addrType, IPAddress addr, InterfaceId intfId)
Associa l'endpoint a un indirizzo IP dell'interfaccia.
BindIPv6LinkLocal(InterfaceId intf, IPAddress addr)
Associa l'endpoint non elaborato a un indirizzo di ambito link locale IPv6 all'indice dell'interfaccia specificato.
BindInterface(IPAddressType addrType, InterfaceId intf)
Associa l'endpoint a un'interfaccia di rete.
Close(void)
void
Chiudi l'endpoint.
Free(void)
void
Chiudi l'endpoint e ricicla la sua memoria.
GetBoundInterface(void)
InterfaceId
Ottieni l'interfaccia associata a questo endpoint.
Listen(void)
Prepara l'endpoint per ricevere i messaggi ICMP.
SendMsg(const IPPacketInfo *pktInfo, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Invia un messaggio ICMP alla destinazione specificata.
SendTo(IPAddress addr, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Un sinonimo di SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags).
SendTo(IPAddress addr, InterfaceId intfId, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Invia un messaggio ICMP all'indirizzo di destinazione specificato.
SetICMPFilter(uint8_t numICMPTypes, const uint8_t *aICMPTypes)
Imposta i parametri del filtro ICMP6 nello stack di rete.

Attributi pubblici

IPProto

IPProtocol IPProto

Versione dell'Internet Control Message Protocol (ICMP)

Sebbene questo campo sia una variabile modificabile della classe, è una invariante della classe che non può essere modificata.

Controllo IP

IPVersion IPVer

Versione del protocollo Internet.

Sebbene questo campo sia una variabile modificabile della classe, è una invariante della classe che non può essere modificata.

Funzioni pubbliche

Associa

INET_ERROR Bind(
  IPAddressType addrType,
  IPAddress addr,
  InterfaceId intfId
)

Associa l'endpoint a un indirizzo IP dell'interfaccia.

associare l'endpoint all'indirizzo IP dell'interfaccia di rete specificato.

Dettagli
Parametri
[in] addrType
La versione del protocollo dell'indirizzo IP
[in] addr
Indirizzo IP (deve essere un indirizzo di interfaccia)
[in] intfId
un indicatore facoltativo dell'interfaccia di rete
Valori di ritorno
INET_NO_ERROR
operazione riuscita: endpoint associato all'indirizzo
INET_ERROR_INCORRECT_STATE
è stato associato in precedenza a un endpoint
INET_NO_MEMORY
memoria insufficiente per l'endpoint
INET_ERROR_UNKNOWN_INTERFACE
Su alcune piattaforme non è presente l'interfaccia specificata.
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType non corrisponde a IPVer.
INET_ERROR_WRONG_ADDRESS_TYPE
addrType è kIPAddressType_Any oppure il tipo addr è diverso da addrType.
other
errore di un altro sistema o piattaforma

Su LwIP, questo metodo non deve essere chiamato con il blocco stack LwIP già acquisito.

BindIPv6LinkLocal

INET_ERROR BindIPv6LinkLocal(
  InterfaceId intf,
  IPAddress addr
)

Associa l'endpoint non elaborato a un indirizzo di ambito link locale IPv6 all'indice dell'interfaccia specificato.

Imposta inoltre varie opzioni di socket IPv6 appropriate per la trasmissione di pacchetti da e verso destinazioni link.

associare l'endpoint all'indirizzo IPv6 del link locale addr sull'interfaccia di rete indicata da intf.

Dettagli
Parametri
[in] intf
Un InterfaceId per identificare l'ambito dell'indirizzo.
[in] addr
Un oggetto ambito IPAddress del collegamento IPv6.
Parametri
[in] intf
L'indicatore dell'interfaccia di rete
[in] addr
Indirizzo IP (deve essere un indirizzo di interfaccia)
Valori di ritorno
INET_NO_ERROR
operazione riuscita: endpoint associato all'indirizzo
INET_ERROR_INCORRECT_STATE
è stato associato in precedenza a un endpoint
INET_NO_MEMORY
memoria insufficiente per l'endpoint
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType non corrisponde a IPVer.
INET_ERROR_WRONG_ADDRESS_TYPE
addr non è un indirizzo locale rispetto al collegamento IPv6 oppure intf è INET_NULL_INTERFACEID.
other
errore di un altro sistema o piattaforma
Restituisce
INET_NO_ERROR in caso di esito positivo o errore del sistema operativo mappato in caso di errore. Un elenco di parametri non valido può generare INET_ERROR_WRONG_ADDRESS_TYPE. Se l'endpoint non elaborato è già associato o è in ascolto, restituisce INET_ERROR_INCORRECT_STATE. Associa l'endpoint a un indirizzo locale del link IPv6 dell'interfaccia.

Su LwIP, questo metodo non deve essere chiamato con il blocco stack LwIP già acquisito.

BindInterface

INET_ERROR BindInterface(
  IPAddressType addrType,
  InterfaceId intf
)

Associa l'endpoint a un'interfaccia di rete.

associare l'endpoint all'indirizzo IP dell'interfaccia di rete specificato.

Dettagli
Parametri
[in] addrType
La versione del protocollo dell'indirizzo IP.
[in] intf
Indicatore dell'interfaccia di rete.
Valori di ritorno
INET_NO_ERROR
operazione riuscita: endpoint associato all'indirizzo
INET_NO_MEMORY
memoria insufficiente per l'endpoint
INET_ERROR_NOT_IMPLEMENTED
implementazione non completata.
INET_ERROR_UNKNOWN_INTERFACE
Su alcune piattaforme l'interfaccia non è presente.
other
errore di un altro sistema o piattaforma

Su LwIP, questo metodo non deve essere chiamato con il blocco stack LwIP già acquisito.

Chiudi

void Close(
  void
)

Chiudi l'endpoint.

Se mState != kState_Closed, chiude l'endpoint, lo rimuove dal set di endpoint idonei per gli eventi di comunicazione.

Sui sistemi LwIP, questo metodo non deve essere chiamato con il blocco stack LwIP già acquisito.

Nessun costo

void Free(
  void
)

Chiudi l'endpoint e ricicla la sua memoria.

Richiama il metodo Close, quindi richiama il metodo InetLayerBasis::Release per restituire l'oggetto al suo pool di memoria.

Sui sistemi LwIP, questo metodo non deve essere chiamato con il blocco stack LwIP già acquisito.

GetBoundInterface

InterfaceId GetBoundInterface(
  void
)

Ottieni l'interfaccia associata a questo endpoint.

Dettagli
Restituisce
InterfaceId: l'ID interfaccia associato.

Ascolta

INET_ERROR Listen(
  void
)

Prepara l'endpoint per ricevere i messaggi ICMP.

Se mState è già kState_Listening, non viene eseguita alcuna operazione, altrimenti mState è impostato su kState_Listening e l'endpoint è pronto a ricevere messaggi ICMPv6, in base alla semantica della piattaforma.

Dettagli
Valori di ritorno
INET_NO_ERROR
sempre restituito.

Su LwIP, questo metodo non deve essere chiamato con il blocco dello stack LwIP già acquisito

Invia messaggio

INET_ERROR SendMsg(
  const IPPacketInfo *pktInfo,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

Invia un messaggio ICMP alla destinazione specificata.

 Send the ICMP message \c msg using the destination information given in \c addr.

 Where (sendFlags & kSendFlag_RetainBuffer) != 0, calls
 Weave::System::PacketBuffer::Free on behalf of the caller, otherwise this
 method deep-copies \c msg into a fresh object, and queues that for
 transmission, leaving the original \c msg available after return.

Dettagli
Parametri
[in] pktInfo
Informazioni sulla destinazione del messaggio
[in] msg
Il buffer del pacchetto contenente il messaggio UDP
[in] sendFlags
flag facoltativi di trasmissione
Valori di ritorno
INET_NO_ERROR
operazione riuscita: msg è in coda per la trasmissione.
INET_ERROR_NOT_SUPPORTED
il sistema non supporta l'operazione richiesta.
INET_ERROR_WRONG_ADDRESS_TYPE
L'indirizzo di destinazione e l'indirizzo dell'interfaccia associato non hanno versioni o tipi di indirizzo corrispondenti al protocollo.
INET_ERROR_MESSAGE_TOO_LONG
msg non contiene l'intero messaggio ICMP.
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
Su alcune piattaforme, solo una parte troncata di msg è stata messa in coda per la trasmissione.
other
errore di un altro sistema o piattaforma

Invia a

INET_ERROR SendTo(
  IPAddress addr,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

Un sinonimo di SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags).

Invia a

INET_ERROR SendTo(
  IPAddress addr,
  InterfaceId intfId,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

Invia un messaggio ICMP all'indirizzo di destinazione specificato.

 Send the ICMP message in \c msg to the destination given in \c addr.

 Where (sendFlags & kSendFlag_RetainBuffer) != 0, calls
 Weave::System::PacketBuffer::Free on behalf of the caller, otherwise this
 method deep-copies \c msg into a fresh object, and queues that for
 transmission, leaving the original \c msg available after return.

Dettagli
Parametri
[in] addr
Indirizzo IP di destinazione
[in] intfId
un indicatore facoltativo dell'interfaccia di rete
[in] msg
Il buffer del pacchetto contenente il messaggio UDP
[in] sendFlags
flag facoltativi di trasmissione
Valori di ritorno
INET_NO_ERROR
operazione riuscita: msg è in coda per la trasmissione.
INET_ERROR_NOT_SUPPORTED
il sistema non supporta l'operazione richiesta.
INET_ERROR_WRONG_ADDRESS_TYPE
L'indirizzo di destinazione e l'indirizzo dell'interfaccia associato non hanno versioni o tipi di indirizzo corrispondenti al protocollo.
INET_ERROR_MESSAGE_TOO_LONG
msg non contiene l'intero messaggio ICMP.
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
Su alcune piattaforme, solo una parte troncata di msg è stata messa in coda per la trasmissione.
other
errore di un altro sistema o piattaforma

FiltroSetICMP

INET_ERROR SetICMPFilter(
  uint8_t numICMPTypes,
  const uint8_t *aICMPTypes
)

Imposta i parametri del filtro ICMP6 nello stack di rete.

Applica i parametri di filtro ICMPv6 per i codici in aICMPTypes all'endpoint sottostante nello stack di networking del sistema.

Dettagli
Parametri
[in] numICMPTypes
di lunghezza dell'array a aICMPTypes
[in] aICMPTypes
L'insieme di codici del tipo ICMPv6 da filtrare.
Valori di ritorno
INET_NO_ERROR
riuscita: set di parametri del filtro
INET_ERROR_NOT_IMPLEMENTED
non implementa
INET_ERROR_WRONG_ADDRESS_TYPE
tipo di endpoint non IPv6
INET_ERROR_WRONG_PROTOCOL_TYPE
tipo di endpoint non ICMP6
other
errore di un altro sistema o piattaforma