Google is committed to advancing racial equity for Black communities. See how.

nl :: Inet :: RawEndPoint

#include <src/inet/RawEndPoint.h>

Os objetos desta classe representam pontos finais de rede IP brutos.

Resumo

A camada Nest Inet encapsula métodos para interagir com endpoints de rede IP (soquetes SOCK_RAW em sistemas Linux e derivados de BSD) ou blocos de controle de protocolo bruto LwIP, conforme o sistema é configurado de acordo.

Herança

Herda: nl :: Inet :: IPEndPointBasis

Atributos públicos

IPProto
IPProtocol
versão do Internet Control Message Protocol (ICMP)
IPVer
IPVersion
Versão do protocolo da Internet.

Funções públicas

Bind (IPAddressType addrType, IPAddress addr, InterfaceId intfId)
Vincule o ponto de extremidade a um endereço IP de interface.
BindIPv6LinkLocal (InterfaceId intf, IPAddress addr)
Vincule o ponto de extremidade bruto a um endereço de escopo local com link IPv6 no índice de interface especificado.
BindInterface (IPAddressType addrType, InterfaceId intf)
Vincule o ponto de extremidade a uma interface de rede.
Close (void)
void
Feche o terminal.
Free (void)
void
Feche o ponto de extremidade e recicle sua memória.
GetBoundInterface (void)
InterfaceId
Obtenha a interface vinculada neste terminal.
Listen (void)
Prepare o endpoint para receber mensagens ICMP.
SendMsg (const IPPacketInfo *pktInfo, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Envie uma mensagem ICMP para o destino especificado.
SendTo ( IPAddress addr, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Um sinónimo para SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags) .
SendTo ( IPAddress addr, InterfaceId intfId, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Envie uma mensagem ICMP para o endereço de destino especificado.
SetICMPFilter (uint8_t numICMPTypes, const uint8_t *aICMPTypes)
Defina os parâmetros de filtro ICMP6 na pilha de rede.

Atributos públicos

IPProto

IPProtocol IPProto

versão do Internet Control Message Protocol (ICMP)

Embora este campo seja uma variável de classe mutável, é uma invariante da classe que não pode ser modificado.

IPVer

IPVersion IPVer

Versão do protocolo da Internet.

Embora este campo seja uma variável de classe mutável, é uma invariante da classe que não pode ser modificado.

Funções públicas

Ligar

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

Vincule o ponto de extremidade a um endereço IP de interface.

Vincula o ponto de extremidade ao endereço IP da interface de rede especificado.

Detalhes
Parâmetros
[in] addrType
a versão do protocolo do endereço IP
[in] addr
o endereço IP (deve ser um endereço de interface)
[in] intfId
um indicador de interface de rede opcional
Valores Retornados
INET_NO_ERROR
sucesso: ponto final vinculado ao endereço
INET_ERROR_INCORRECT_STATE
ponto final foi vinculado anteriormente
INET_NO_MEMORY
memória insuficiente para endpoint
INET_ERROR_UNKNOWN_INTERFACE
Em algumas plataformas, a interface opcionalmente especificada não está presente.
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType não corresponde IPVer .
INET_ERROR_WRONG_ADDRESS_TYPE
addrType é kIPAddressType_Any , ou o tipo de addr não é igual a addrType .
other
outro sistema ou erro de plataforma

No LwIP, este método não deve ser chamado com o bloqueio de pilha LwIP já adquirido.

BindIPv6LinkLocal

INET_ERROR BindIPv6LinkLocal(
  InterfaceId intf,
  IPAddress addr
)

Vincule o ponto de extremidade bruto a um endereço de escopo local com link IPv6 no índice de interface especificado.

Também define várias opções de soquete IPv6 apropriadas para a transmissão de pacotes de e para destinos no link.

Vinculado o ponto final para o link-local endereço IPv6 addr na interface de rede indicada por intf .

Detalhes
Parâmetros
[in] intf
Um InterfaceId para identificar o escopo do endereço.
[in] addr
Um IPv6 âmbito link-local IPAddress objeto.
Parâmetros
[in] intf
o indicador da interface de rede
[in] addr
o endereço IP (deve ser um endereço de interface)
Valores Retornados
INET_NO_ERROR
sucesso: ponto final vinculado ao endereço
INET_ERROR_INCORRECT_STATE
ponto final foi vinculado anteriormente
INET_NO_MEMORY
memória insuficiente para endpoint
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType não corresponde IPVer .
INET_ERROR_WRONG_ADDRESS_TYPE
addr não é um link-local endereço IPv6 ou intf é INET_NULL_INTERFACEID .
other
outro sistema ou erro de plataforma
Devoluções
INET_NO_ERROR em caso de sucesso ou um erro de sistema operacional mapeado em caso de falha. Uma lista de parâmetros inválida pode resultar em INET_ERROR_WRONG_ADDRESS_TYPE. Se o ponto de extremidade bruto já estiver ligado ou escutando, retorna INET_ERROR_INCORRECT_STATE. Vincule o ponto de extremidade a um endereço local de link IPv6 da interface.

No LwIP, este método não deve ser chamado com o bloqueio de pilha LwIP já adquirido.

BindInterface

INET_ERROR BindInterface(
  IPAddressType addrType,
  InterfaceId intf
)

Vincule o ponto de extremidade a uma interface de rede.

Vincula o ponto de extremidade ao endereço IP da interface de rede especificado.

Detalhes
Parâmetros
[in] addrType
a versão do protocolo do endereço IP.
[in] intf
indicador da interface de rede.
Valores Retornados
INET_NO_ERROR
sucesso: ponto final vinculado ao endereço
INET_NO_MEMORY
memória insuficiente para endpoint
INET_ERROR_NOT_IMPLEMENTED
implementação do sistema não concluída.
INET_ERROR_UNKNOWN_INTERFACE
Em algumas plataformas, a interface não está presente.
other
outro sistema ou erro de plataforma

No LwIP, este método não deve ser chamado com o bloqueio de pilha LwIP já adquirido.

Perto

void Close(
  void
)

Feche o terminal.

Se mState != kState_Closed , em seguida, fecha o ponto final, removendo-o do conjunto de endpoints elegíveis para eventos de comunicação.

Em sistemas LwIP, este método não deve ser chamado com o bloqueio de pilha LwIP já adquirido.

Livre

void Free(
  void
)

Feche o ponto de extremidade e recicle sua memória.

Chama o Close método, em seguida, chama o InetLayerBasis::Release método para retornar o objeto à sua pool de memória.

Em sistemas LwIP, este método não deve ser chamado com o bloqueio de pilha LwIP já adquirido.

GetBoundInterface

InterfaceId GetBoundInterface(
  void
)

Obtenha a interface vinculada neste terminal.

Detalhes
Devoluções
InterfaceId O ID da interface vinculada.

Ouço

INET_ERROR Listen(
  void
)

Prepare o endpoint para receber mensagens ICMP.

Se mState já está kState_Listening , em seguida, nenhuma operação é realizada, caso contrário, o mState é definido como kState_Listening e o ponto final é preparado a mensagens ICMPv6 recebidas, de acordo com a semântica da plataforma.

Detalhes
Valores Retornados
INET_NO_ERROR
sempre voltou.

No LwIP, este método não deve ser chamado com o bloqueio de pilha LwIP já adquirido

SendMsg

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

Envie uma mensagem ICMP para o destino especificado.

 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.

Detalhes
Parâmetros
[in] pktInfo
informação de destino para a mensagem
[in] msg
o buffer de pacote contendo a mensagem UDP
[in] sendFlags
sinalizadores de opção de transmissão opcional
Valores Retornados
INET_NO_ERROR
sucesso: msg está em fila para transmissão.
INET_ERROR_NOT_SUPPORTED
o sistema não suporta a operação solicitada.
INET_ERROR_WRONG_ADDRESS_TYPE
o endereço de destino e o endereço da interface associada não têm versões de protocolo ou tipo de endereço correspondentes.
INET_ERROR_MESSAGE_TOO_LONG
msg não contém toda a mensagem ICMP.
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
Em algumas plataformas, apenas uma parte truncada da msg foi colocado em fila para transmissão.
other
outro sistema ou erro de plataforma

Enviar para

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

Um sinónimo para SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags) .

Enviar para

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

Envie uma mensagem ICMP para o endereço de destino especificado.

 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.

Detalhes
Parâmetros
[in] addr
o endereço IP de destino
[in] intfId
um indicador de interface de rede opcional
[in] msg
o buffer de pacote contendo a mensagem UDP
[in] sendFlags
sinalizadores de opção de transmissão opcional
Valores Retornados
INET_NO_ERROR
sucesso: msg está em fila para transmissão.
INET_ERROR_NOT_SUPPORTED
o sistema não suporta a operação solicitada.
INET_ERROR_WRONG_ADDRESS_TYPE
o endereço de destino e o endereço da interface associada não têm versões de protocolo ou tipo de endereço correspondentes.
INET_ERROR_MESSAGE_TOO_LONG
msg não contém toda a mensagem ICMP.
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
Em algumas plataformas, apenas uma parte truncada da msg foi colocado em fila para transmissão.
other
outro sistema ou erro de plataforma

SetICMPFilter

INET_ERROR SetICMPFilter(
  uint8_t numICMPTypes,
  const uint8_t *aICMPTypes
)

Defina os parâmetros de filtro ICMP6 na pilha de rede.

Aplique os parâmetros de filtragem ICMPv6 para os códigos em aICMPTypes ao ponto de extremidade subjacente na pilha de rede do sistema.

Detalhes
Parâmetros
[in] numICMPTypes
comprimento da matriz em aICMPTypes
[in] aICMPTypes
o conjunto de códigos de tipo ICMPv6 para filtrar.
Valores Retornados
INET_NO_ERROR
sucesso: conjunto de parâmetros de filtro
INET_ERROR_NOT_IMPLEMENTED
sistema não implementa
INET_ERROR_WRONG_ADDRESS_TYPE
endpoint não é do tipo IPv6
INET_ERROR_WRONG_PROTOCOL_TYPE
endpoint não é do tipo ICMP6
other
outro sistema ou erro de plataforma