nl::Inet::RawEndPoint

#include <src/inet/RawEndPoint.h>

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

Riepilogo

Nest Inet Layer racchiude i metodi per interagire con gli endpoint di rete IP (socket SOCK_RAW su sistemi Linux e derivati da BSD) o con blocchi di controllo del protocollo non elaborato LwIP, poiché il sistema viene configurato di conseguenza.

Eredità

Eredita da: nl::Inet::IPEndPointBasis

Attributi pubblici

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

Funzioni pubbliche

Bind(IPAddressType addrType, IPAddress addr, InterfaceId intfId)
Associare l'endpoint a un indirizzo IP di interfaccia.
BindIPv6LinkLocal(InterfaceId intf, IPAddress addr)
Associa l'endpoint non elaborato a un indirizzo di ambito IPv6 locale rispetto al collegamento nell'indice dell'interfaccia specificato.
BindInterface(IPAddressType addrType, InterfaceId intf)
Associare l'endpoint a un'interfaccia di rete.
Close(void)
void
Chiudi l'endpoint.
Free(void)
void
Chiudi l'endpoint e ricicla la relativa memoria.
GetBoundInterface(void)
InterfaceId
Ottieni l'interfaccia associata su questo endpoint.
Listen(void)
Prepara l'endpoint per ricevere 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)
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 di filtro ICMP6 nello stack di rete.

Attributi pubblici

IPProto

IPProtocol IPProto

versione dell'ICMP (Internet Control Message Protocol)

Sebbene questo campo sia una variabile di classe modificabile, non è una variante della classe e non può essere modificato.

IPVer

IPVersion IPVer

Versione del protocollo Internet.

Sebbene questo campo sia una variabile di classe modificabile, non è una variante della classe e non può essere modificato.

Funzioni pubbliche

Associa

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

Associare l'endpoint a un indirizzo IP di interfaccia.

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

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

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

BindIPv6LinkLocal

INET_ERROR BindIPv6LinkLocal(
  InterfaceId intf,
  IPAddress addr
)

Associa l'endpoint non elaborato a un indirizzo di ambito IPv6 locale rispetto al collegamento nell'indice dell'interfaccia specificato.

Consente inoltre di impostare varie opzioni socket IPv6 appropriate per la trasmissione di pacchetti da e verso destinazioni on-link.

Associa l'endpoint all'indirizzo IPv6 locale rispetto al collegamento addr sull'interfaccia di rete indicata da intf.

Dettagli
Parametri
[in] intf
Un InterfaceId per identificare l'ambito dell'indirizzo.
[in] addr
Un oggetto IPAddress con ambito IPv6 locale rispetto al collegamento.
Parametri
[in] intf
l'indicatore dell'interfaccia di rete
[in] addr
l'indirizzo IP (deve essere un indirizzo di interfaccia)
Valori restituiti
INET_NO_ERROR
success: endpoint associato all'indirizzo
INET_ERROR_INCORRECT_STATE
endpoint è stato associato in precedenza
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 IPv6 locale rispetto al collegamento oppure intf è INET_NULL_INTERFACEID.
other
un altro errore del sistema o della piattaforma
Restituisce
INET_NO_ERROR in caso di esito positivo o un 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'interfaccia IPv6 locale rispetto al collegamento.

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

BindInterface

INET_ERROR BindInterface(
  IPAddressType addrType,
  InterfaceId intf
)

Associare l'endpoint a un'interfaccia di rete.

Associa 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 restituiti
INET_NO_ERROR
success: endpoint associato all'indirizzo
INET_NO_MEMORY
memoria insufficiente per l'endpoint
INET_ERROR_NOT_IMPLEMENTED
implementazione del sistema non completata.
INET_ERROR_UNKNOWN_INTERFACE
Su alcune piattaforme l'interfaccia non è presente.
other
un altro errore del sistema o della piattaforma

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

Chiudi

void Close(
  void
)

Chiudi l'endpoint.

Se mState != kState_Closed, chiude l'endpoint rimuovendolo dall'insieme di endpoint idonei per gli eventi di comunicazione.

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

Senza costi

void Free(
  void
)

Chiudi l'endpoint e ricicla la relativa memoria.

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

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

GetBoundInterface

InterfaceId GetBoundInterface(
  void
)

Ottieni l'interfaccia associata su questo endpoint.

Dettagli
Restituisce
InterfaceId L'ID dell'interfaccia associata.

Ascolta

INET_ERROR Listen(
  void
)

Prepara l'endpoint per ricevere messaggi ICMP.

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

Dettagli
Valori restituiti
INET_NO_ERROR
sempre restituiti.

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

SendMsg

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 opzioni di trasmissione facoltativi
Valori restituiti
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 associata non hanno versioni di protocollo o tipo di indirizzo corrispondenti.
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
un altro errore del sistema o della piattaforma

SendTo

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

Sinonimo di SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags).

SendTo

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
l'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 opzioni di trasmissione facoltativi
Valori restituiti
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 associata non hanno versioni di protocollo o tipo di indirizzo corrispondenti.
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
un altro errore del sistema o della piattaforma

SetICMPFilter

INET_ERROR SetICMPFilter(
  uint8_t numICMPTypes,
  const uint8_t *aICMPTypes
)

Imposta i parametri di 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
lunghezza dell'array a aICMPTypes
[in] aICMPTypes
l'insieme di codici di tipo ICMPv6 da filtrare.
Valori restituiti
INET_NO_ERROR
operazione riuscita: insieme di parametri di filtro
INET_ERROR_NOT_IMPLEMENTED
il sistema non implementa
INET_ERROR_WRONG_ADDRESS_TYPE
endpoint non di tipo IPv6
INET_ERROR_WRONG_PROTOCOL_TYPE
endpoint non di tipo ICMP6
other
un altro errore del sistema o della piattaforma