IPv6

En este módulo, se incluyen funciones que controlan la comunicación IPv6.

Resumen

Enumeraciones

anonymous enum{
  OT_IP6_PROTO_HOP_OPTS = 0,
  OT_IP6_PROTO_TCP = 6,
  OT_IP6_PROTO_UDP = 17,
  OT_IP6_PROTO_IP6 = 41,
  OT_IP6_PROTO_ROUTING = 43,
  OT_IP6_PROTO_FRAGMENT = 44,
  OT_IP6_PROTO_ICMP6 = 58,
  OT_IP6_PROTO_NONE = 59,
  OT_IP6_PROTO_DST_OPTS = 60
}
enum
Números de protocolo de Internet.
anonymous enum{
  OT_ADDRESS_ORIGIN_THREAD = 0,
  OT_ADDRESS_ORIGIN_SLAAC = 1,
  OT_ADDRESS_ORIGIN_DHCPV6 = 2,
  OT_ADDRESS_ORIGIN_MANUAL = 3
}
enum
Orígenes de la dirección IPv6.
anonymous enum{
  OT_ECN_NOT_CAPABLE = 0x0,
  OT_ECN_CAPABLE_0 = 0x2,
  OT_ECN_CAPABLE_1 = 0x1,
  OT_ECN_MARKED = 0x3
}
enum
Estados de ECN, representados en el encabezado de IP

Typedefs

otBorderRoutingCounters typedef
Representa los contadores de paquetes reenviados mediante el enrutamiento fronterizo.
otIp6Address typedef
struct otIp6Address
Representa una dirección IPv6.
otIp6AddressCallback)(const otIp6AddressInfo *aAddressInfo, bool aIsAdded, void *aContext) typedef
void(*
Se llama al puntero cuando se agrega o quita una dirección IPv6 interna.
otIp6AddressComponents typedef
Representa los componentes de una dirección IPv6.
otIp6AddressInfo typedef
Representa la información de la dirección IPv6.
otIp6InterfaceIdentifier typedef
Representa el identificador de interfaz de una dirección IPv6.
otIp6NetworkPrefix typedef
Representa el prefijo de red de una dirección IPv6 (64 bits más significativos de la dirección).
otIp6Prefix typedef
struct otIp6Prefix
Representa un prefijo de IPv6.
otIp6ReceiveCallback)(otMessage *aMessage, void *aContext) typedef
void(*
Se llama al puntero cuando se recibe un datagrama IPv6.
otIp6RegisterMulticastListenersCallback)(void *aContext, otError aError, uint8_t aMlrStatus, const otIp6Address *aFailedAddresses, uint8_t aFailedAddressNum) typedef
void(*
Se llama al puntero con resultados de otIp6RegisterMulticastListeners.
otIp6SlaacPrefixFilter)(otInstance *aInstance, const otIp6Prefix *aPrefix) typedef
bool(*
El puntero permite que el usuario filtre prefijos y no permite que se agregue una dirección de ANSAC basada en un prefijo.
otMessageInfo typedef
struct otMessageInfo
Representa las direcciones de sockets IPv6 locales y de intercambio de tráfico.
otNetifAddress typedef
Representa una dirección unicast de interfaz de red IPv6.
otNetifMulticastAddress typedef
Representa una dirección multidifusión de interfaz de red IPv6.
otPacketsAndBytes typedef
Representa los contadores de paquetes y bytes.
otSockAddr typedef
struct otSockAddr
Representa una dirección de socket IPv6.

Variables

OT_TOOL_PACKED_END

remotas

otIp6AddUnicastAddress(otInstance *aInstance, const otNetifAddress *aAddress)
Agrega una dirección de interfaz de red a la interfaz Thread.
otIp6AddUnsecurePort(otInstance *aInstance, uint16_t aPort)
Agrega un puerto a la lista de puertos no seguros permitidos.
otIp6AddressFromString(const char *aString, otIp6Address *aAddress)
Convierte una string de dirección IPv6 legible en una representación binaria.
otIp6AddressToString(const otIp6Address *aAddress, char *aBuffer, uint16_t aSize)
void
Convierte una dirección IPv6 determinada en una string legible.
otIp6ArePrefixesEqual(const otIp6Prefix *aFirst, const otIp6Prefix *aSecond)
bool
Prueba si dos prefijos de IPv6 son iguales.
otIp6GetBorderRoutingCounters(otInstance *aInstance)
Obtiene los contadores de enrutamiento de frontera.
otIp6GetMulticastAddresses(otInstance *aInstance)
Obtiene la lista de direcciones IPv6 de multidifusión suscritas a la interfaz Thread.
otIp6GetPrefix(const otIp6Address *aAddress, uint8_t aLength, otIp6Prefix *aPrefix)
void
Obtiene un prefijo con aLength de aAddress.
otIp6GetUnicastAddresses(otInstance *aInstance)
const otNetifAddress *
Obtiene la lista de direcciones IPv6 asignadas a la interfaz del subproceso.
otIp6GetUnsecurePorts(otInstance *aInstance, uint8_t *aNumEntries)
const uint16_t *
Muestra un puntero a la lista de puertos no seguros.
otIp6HasUnicastAddress(otInstance *aInstance, const otIp6Address *aAddress)
bool
Indica si se asignó o no una dirección IPv6 unicast a la interfaz Thread.
otIp6IsAddressEqual(const otIp6Address *aFirst, const otIp6Address *aSecond)
bool
Prueba si dos direcciones IPv6 son iguales.
otIp6IsAddressUnspecified(const otIp6Address *aAddress)
bool
Indica si una dirección IPv6 determinada es la dirección no especificada.
otIp6IsEnabled(otInstance *aInstance)
bool
Indica si la interfaz IPv6 está activa o no.
otIp6IsMulticastPromiscuousEnabled(otInstance *aInstance)
bool
Comprueba si el modo promiscuo de multidifusión está habilitado en la interfaz de Thread.
otIp6IsReceiveFilterEnabled(otInstance *aInstance)
bool
Indica si se filtra o no el tráfico de control de subprocesos cuando se entregan datagramas IPv6 mediante la devolución de llamada especificada en otIp6SetReceiveCallback().
otIp6IsSlaacEnabled(otInstance *aInstance)
bool
Indica si el módulo ANS está habilitado o no.
otIp6NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
Asigna un búfer de mensaje nuevo para enviar un mensaje IPv6.
otIp6NewMessageFromBuffer(otInstance *aInstance, const uint8_t *aData, uint16_t aDataLength, const otMessageSettings *aSettings)
Asignar un nuevo búfer de mensajes y escribir el datagrama IPv6 en el búfer de mensajes para enviar un mensaje IPv6
otIp6PrefixFromString(const char *aString, otIp6Prefix *aPrefix)
Convierte una string de prefijo IPv6 legible en una representación binaria.
otIp6PrefixMatch(const otIp6Address *aFirst, const otIp6Address *aSecond)
uint8_t
Muestra la longitud de coincidencia de prefijo (bits) para dos direcciones IPv6.
otIp6PrefixToString(const otIp6Prefix *aPrefix, char *aBuffer, uint16_t aSize)
void
Convierte un prefijo IPv6 determinado en una string legible.
otIp6ProtoToString(uint8_t aIpProto)
const char *
Convierte un número de protocolo de IP determinado en una string legible.
otIp6RegisterMulticastListeners(otInstance *aInstance, const otIp6Address *aAddresses, uint8_t aAddressNum, const uint32_t *aTimeout, otIp6RegisterMulticastListenersCallback aCallback, void *aContext)
Registra los objetos de escucha de multidifusión en el router troncal principal.
otIp6RemoveAllUnsecurePorts(otInstance *aInstance)
void
Quita todos los puertos de la lista de puertos no seguros permitidos.
otIp6RemoveUnicastAddress(otInstance *aInstance, const otIp6Address *aAddress)
Quita una dirección de interfaz de red de la interfaz Thread.
otIp6RemoveUnsecurePort(otInstance *aInstance, uint16_t aPort)
Quita un puerto de la lista de puertos no seguros permitidos.
otIp6ResetBorderRoutingCounters(otInstance *aInstance)
void
Restablece los contadores de enrutamiento de borde.
otIp6SelectSourceAddress(otInstance *aInstance, otMessageInfo *aMessageInfo)
Selecciona la dirección de origen de OpenThread.
otIp6Send(otInstance *aInstance, otMessage *aMessage)
Envía un datagrama IPv6 a través de la interfaz Thread.
otIp6SetAddressCallback(otInstance *aInstance, otIp6AddressCallback aCallback, void *aCallbackContext)
void
Registra una devolución de llamada para notificar los cambios en la dirección IPv6 interna.
otIp6SetEnabled(otInstance *aInstance, bool aEnabled)
Sube o baja la interfaz IPv6.
otIp6SetMeshLocalIid(otInstance *aInstance, const otIp6InterfaceIdentifier *aIid)
Establece el IID local de malla (para fines de prueba).
otIp6SetMulticastPromiscuousEnabled(otInstance *aInstance, bool aEnabled)
void
Habilita o inhabilita el modo promiscuo de multidifusión en la interfaz de Thread.
otIp6SetReceiveCallback(otInstance *aInstance, otIp6ReceiveCallback aCallback, void *aCallbackContext)
void
Registra una devolución de llamada para proporcionar datagramas IPv6 recibidos.
otIp6SetReceiveFilterEnabled(otInstance *aInstance, bool aEnabled)
void
Establece si se filtra o no el tráfico de control de subprocesos cuando se entregan datagramas IPv6 mediante la devolución de llamada especificada en otIp6SetReceiveCallback().
otIp6SetSlaacEnabled(otInstance *aInstance, bool aEnabled)
void
Habilita o inhabilita el módulo de ANSAC.
otIp6SetSlaacPrefixFilter(otInstance *aInstance, otIp6SlaacPrefixFilter aFilter)
void
Configura el controlador de filtro del módulo de ANSAC.
otIp6SockAddrToString(const otSockAddr *aSockAddr, char *aBuffer, uint16_t aSize)
void
Convierte una dirección de socket IPv6 determinada en una string legible.
otIp6SubscribeMulticastAddress(otInstance *aInstance, const otIp6Address *aAddress)
Suscribe la interfaz Thread a una dirección multidifusión de la interfaz de red.
otIp6UnsubscribeMulticastAddress(otInstance *aInstance, const otIp6Address *aAddress)
Anula la suscripción de la interfaz Thread a una dirección multidifusión de la interfaz de red.

Structs

otBorderRoutingCounters

Representa los contadores de paquetes reenviados mediante el enrutamiento fronterizo.

otIp6Address

Representa una dirección IPv6.

otIp6AddressComponents

Representa los componentes de una dirección IPv6.

otIp6AddressInfo

Representa la información de la dirección IPv6.

otIp6InterfaceIdentifier

Representa el identificador de interfaz de una dirección IPv6.

otIp6NetworkPrefix

Representa el prefijo de red de una dirección IPv6 (64 bits más significativos de la dirección).

otIp6Prefix

Representa un prefijo de IPv6.

otMessageInfo

Representa las direcciones de sockets IPv6 locales y de intercambio de tráfico.

otNetifAddress

Representa una dirección unicast de interfaz de red IPv6.

otNetifMulticastAddress

Representa una dirección multidifusión de interfaz de red IPv6.

otPacketsAndBytes

Representa los contadores de paquetes y bytes.

otSockAddr

Representa una dirección de socket IPv6.

Unión

otIp6InterfaceIdentifier::OT_TOOL_PACKED_FIELD

Enumeraciones

enumeración anónima

 anonymous enum

Números de protocolo de Internet.

Propiedades
OT_IP6_PROTO_DST_OPTS

Opciones de destino para IPv6.

OT_IP6_PROTO_FRAGMENT

Encabezado de fragmento para IPv6.

OT_IP6_PROTO_HOP_OPTS

Opción de salto a salto de IPv6.

OT_IP6_PROTO_ICMP6

ICMP para IPv6.

OT_IP6_PROTO_IP6

encapsulamiento IPv6.

OT_IP6_PROTO_NONE

No hay encabezados siguientes para IPv6.

OT_IP6_PROTO_ROUTING

Encabezado de enrutamiento para IPv6

OT_IP6_PROTO_TCP

protocolo de control de transmisión.

OT_IP6_PROTO_UDP

Datagrama de usuario.

enumeración anónima

 anonymous enum

Orígenes de la dirección IPv6.

Propiedades
OT_ADDRESS_ORIGIN_DHCPV6

Dirección asignada de DHCPv6.

OT_ADDRESS_ORIGIN_MANUAL

Dirección asignada manualmente.

OT_ADDRESS_ORIGIN_SLAAC

Dirección asignada de ANSAC.

OT_ADDRESS_ORIGIN_THREAD

Dirección asignada de subproceso (ALOC, RLOC, MLEID, etc.)

enumeración anónima

 anonymous enum

Estados de ECN, representados en el encabezado de IP

Propiedades
OT_ECN_CAPABLE_0

ECT(0)

OT_ECN_CAPABLE_1

TEC(1)

OT_ECN_MARKED

Se detectó una congestión (CE)

OT_ECN_NOT_CAPABLE

No ECT.

Typedefs

otBorderRoutingCounters

struct otBorderRoutingCounters otBorderRoutingCounters

Representa los contadores de paquetes reenviados mediante el enrutamiento fronterizo.

otIp6Address

struct otIp6Address otIp6Address

Representa una dirección IPv6.

otIp6AddressCallback

void(* otIp6AddressCallback)(const otIp6AddressInfo *aAddressInfo, bool aIsAdded, void *aContext)

Se llama al puntero cuando se agrega o quita una dirección IPv6 interna.

Detalles
Parámetros
[in] aAddressInfo
Un puntero a la información de la dirección IPv6.
[in] aIsAdded
TRUE si se agregó aAddress, FALSE si se quitó aAddress.
[in] aContext
Un puntero para el contexto específico de la aplicación.

otIp6AddressComponents

struct otIp6AddressComponents otIp6AddressComponents

Representa los componentes de una dirección IPv6.

otIp6AddressInfo

struct otIp6AddressInfo otIp6AddressInfo

Representa la información de la dirección IPv6.

otIp6InterfaceIdentifier

struct otIp6InterfaceIdentifier otIp6InterfaceIdentifier

Representa el identificador de interfaz de una dirección IPv6.

otIp6NetworkPrefix

struct otIp6NetworkPrefix otIp6NetworkPrefix

Representa el prefijo de red de una dirección IPv6 (64 bits más significativos de la dirección).

otIp6Prefix

struct otIp6Prefix otIp6Prefix

Representa un prefijo de IPv6.

otIp6ReceiveCallback

void(* otIp6ReceiveCallback)(otMessage *aMessage, void *aContext)

Se llama al puntero cuando se recibe un datagrama IPv6.

Detalles
Parámetros
[in] aMessage
Un puntero para el búfer de mensaje que contiene el datagrama IPv6 recibido. Esta función transfiere la propiedad de aMessage al receptor de la devolución de llamada. El receptor de la devolución de llamada debe liberar el mensaje después de que se procese (consulta otMessageFree()).
[in] aContext
Un puntero para el contexto específico de la aplicación.

otIp6RegisterMulticastListenersCallback

void(* otIp6RegisterMulticastListenersCallback)(void *aContext, otError aError, uint8_t aMlrStatus, const otIp6Address *aFailedAddresses, uint8_t aFailedAddressNum)

Se llama al puntero con resultados de otIp6RegisterMulticastListeners.

Detalles
Parámetros
[in] aContext
Un puntero al contexto del usuario.
[in] aError
OT_ERROR_NONE cuando se envió correctamente MLR.req y se recibió MLR.rsp, OT_ERROR_RESPONSE_TIMEOUT cuando no se pudo recibir MLR.rsp, OT_ERROR_PARSE cuando no se pudo analizar MLR.rsp.
[in] aMlrStatus
El estado del registro del objeto de escucha de multidifusión cuando aError es OT_ERROR_NONE
[in] aFailedAddresses
Un puntero a las direcciones IPv6 con errores cuando aError es OT_ERROR_NONE.
[in] aFailedAddressNum
La cantidad de direcciones IPv6 con errores cuando aError es OT_ERROR_NONE.
Consulta también:
otIp6RegisterMulticastListeners

otIp6SlaacPrefixFilter

bool(* otIp6SlaacPrefixFilter)(otInstance *aInstance, const otIp6Prefix *aPrefix)

El puntero permite que el usuario filtre prefijos y no permite que se agregue una dirección de ANSAC basada en un prefijo.

Se puede usar otIp6SetSlaacPrefixFilter() para configurar el controlador de filtros. El módulo de ANSAC invoca el controlador de filtros cuando está a punto de agregar una dirección ANSAC basada en un prefijo. El valor booleano que se muestra determina si se filtra (no se agregó) la dirección.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aPrefix
Un puntero para el prefijo de la dirección de ANSAC que se agregará.
Valores que se muestran
TRUE
Indica que se debe filtrar la dirección ANSAC basada en el prefijo y que NO se debe agregar.
FALSE
Indica que se debe agregar la dirección ANSAC según el prefijo.

otMessageInfo

struct otMessageInfo otMessageInfo

Representa las direcciones de sockets IPv6 locales y de intercambio de tráfico.

otNetifAddress

struct otNetifAddress otNetifAddress

Representa una dirección unicast de interfaz de red IPv6.

otNetifMulticastAddress

struct otNetifMulticastAddress otNetifMulticastAddress

Representa una dirección multidifusión de interfaz de red IPv6.

otPacketsAndBytes

struct otPacketsAndBytes otPacketsAndBytes

Representa los contadores de paquetes y bytes.

otSockAddr

struct otSockAddr otSockAddr

Representa una dirección de socket IPv6.

Variables

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp6InterfaceIdentifier OT_TOOL_PACKED_END

remotas

otIp6AddUnicastAddress

otError otIp6AddUnicastAddress(
  otInstance *aInstance,
  const otNetifAddress *aAddress
)

Agrega una dirección de interfaz de red a la interfaz Thread.

La interfaz Thread copia la instancia pasada aAddress. La interfaz Thread solo admite una cantidad fija de direcciones unicast agregadas de forma externa. Consulta los OPENTHREAD_CONFIG_IP6_MAX_EXT_UCAST_ADDRS.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aAddress
Un puntero para una dirección de interfaz de red.
Valores que se muestran
OT_ERROR_NONE
Se agregó (o actualizó) la dirección de la interfaz de red de manera correcta.
OT_ERROR_INVALID_ARGS
La dirección IP que indica aAddress es una dirección interna.
OT_ERROR_NO_BUFS
La interfaz de red ya está almacenando la cantidad máxima de direcciones externas permitidas.

otIp6AddUnsecurePort

otError otIp6AddUnsecurePort(
  otInstance *aInstance,
  uint16_t aPort
)

Agrega un puerto a la lista de puertos no seguros permitidos.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aPort
Es el valor del puerto.
Valores que se muestran
OT_ERROR_NONE
El puerto se agregó correctamente a la lista de puertos no seguros permitidos.
OT_ERROR_INVALID_ARGS
El puerto no es válido (el valor 0 está reservado para uso interno).
OT_ERROR_NO_BUFS
La lista de puertos no seguros está llena.

otIp6AddressFromString

otError otIp6AddressFromString(
  const char *aString,
  otIp6Address *aAddress
)

Convierte una string de dirección IPv6 legible en una representación binaria.

Detalles
Parámetros
[in] aString
Un puntero para una string terminada en NULL.
[out] aAddress
Un puntero a una dirección IPv6.
Valores que se muestran
OT_ERROR_NONE
Se analizó correctamente aString y se actualizó aAddress.
OT_ERROR_PARSE
No se pudo analizar aString como una dirección IPv6.

otIp6AddressToString

void otIp6AddressToString(
  const otIp6Address *aAddress,
  char *aBuffer,
  uint16_t aSize
)

Convierte una dirección IPv6 determinada en una string legible.

La string de dirección IPv6 tiene el formato de 16 valores hexadecimales separados por “:” (es decir, "%x:%x:%x:...:%x").

Si la string resultante no cabe en aBuffer (dentro de sus caracteres aSize), la string se truncará, pero la string resultante siempre tendrá terminación nula.

Detalles
Parámetros
[in] aAddress
Un puntero a una dirección IPv6 (NO DEBE ser NULO).
[out] aBuffer
Un puntero a un array de caracteres para generar la string (NO DEBE ser NULL).
[in] aSize
El tamaño de aBuffer (en bytes). Se recomienda usar OT_IP6_ADDRESS_STRING_SIZE.

otIp6ArePrefixesEqual

bool otIp6ArePrefixesEqual(
  const otIp6Prefix *aFirst,
  const otIp6Prefix *aSecond
)

Prueba si dos prefijos de IPv6 son iguales.

Detalles
Parámetros
[in] aFirst
Un puntero al primer prefijo de IPv6 que se comparará.
[in] aSecond
Un puntero para el segundo prefijo IPv6 que se comparará.
Valores que se muestran
TRUE
Los dos prefijos de IPv6 son iguales.
FALSE
Los dos prefijos de IPv6 no son iguales.

otIp6GetBorderRoutingCounters

const otBorderRoutingCounters * otIp6GetBorderRoutingCounters(
  otInstance *aInstance
)

Obtiene los contadores de enrutamiento de frontera.

Se debe habilitar la función de tiempo de compilación de OPENTHREAD_CONFIG_IP6_BR_COUNTERS_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Qué muestra
Un puntero a los contadores de enrutamiento de borde.

otIp6GetMulticastAddresses

const otNetifMulticastAddress * otIp6GetMulticastAddresses(
  otInstance *aInstance
)

Obtiene la lista de direcciones IPv6 de multidifusión suscritas a la interfaz Thread.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Qué muestra
Un puntero a la primera dirección multidifusión de la interfaz de red.

otIp6GetPrefix

void otIp6GetPrefix(
  const otIp6Address *aAddress,
  uint8_t aLength,
  otIp6Prefix *aPrefix
)

Obtiene un prefijo con aLength de aAddress.

Detalles
Parámetros
[in] aAddress
Un puntero a una dirección IPv6.
[in] aLength
La longitud del prefijo en bits.
[out] aPrefix
Un puntero para generar el prefijo IPv6.

otIp6GetUnicastAddresses

const otNetifAddress * otIp6GetUnicastAddresses(
  otInstance *aInstance
)

Obtiene la lista de direcciones IPv6 asignadas a la interfaz del subproceso.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Qué muestra
Un puntero a la primera dirección de interfaz de red.

otIp6GetUnsecurePorts

const uint16_t * otIp6GetUnsecurePorts(
  otInstance *aInstance,
  uint8_t *aNumEntries
)

Muestra un puntero a la lista de puertos no seguros.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[out] aNumEntries
La cantidad de entradas en la lista.
Qué muestra
Un puntero a la lista de puertos no seguros.

otIp6HasUnicastAddress

bool otIp6HasUnicastAddress(
  otInstance *aInstance,
  const otIp6Address *aAddress
)

Indica si se asignó o no una dirección IPv6 unicast a la interfaz Thread.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aAddress
Un puntero para la dirección unicast.
Valores que se muestran
TRUE
Si se asigna aAddress a la interfaz Thread.
FALSE
Si aAddress no está asignado a la interfaz Thread

otIp6IsAddressEqual

bool otIp6IsAddressEqual(
  const otIp6Address *aFirst,
  const otIp6Address *aSecond
)

Prueba si dos direcciones IPv6 son iguales.

Detalles
Parámetros
[in] aFirst
Un puntero a la primera dirección IPv6 para comparar.
[in] aSecond
Un puntero a la segunda dirección IPv6 para comparar.
Valores que se muestran
TRUE
Las dos direcciones IPv6 son iguales.
FALSE
Las dos direcciones IPv6 no son iguales.

otIp6IsAddressUnspecified

bool otIp6IsAddressUnspecified(
  const otIp6Address *aAddress
)

Indica si una dirección IPv6 determinada es la dirección no especificada.

Detalles
Parámetros
[in] aAddress
Un puntero a una dirección IPv6.
Valores que se muestran
TRUE
Si la dirección IPv6 es No especificada,
FALSE
Si la dirección IPv6 no es la dirección no especificada, sigue estos pasos:

otIp6IsEnabled

bool otIp6IsEnabled(
  otInstance *aInstance
)

Indica si la interfaz IPv6 está activa o no.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Valores que se muestran
TRUE
La interfaz IPv6 está habilitada.
FALSE
La interfaz IPv6 está inhabilitada.

otIp6IsMulticastPromiscuousEnabled

bool otIp6IsMulticastPromiscuousEnabled(
  otInstance *aInstance
)

Comprueba si el modo promiscuo de multidifusión está habilitado en la interfaz de Thread.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Consulta también:
otIp6SetMulticastPromiscuousEnabled

otIp6IsReceiveFilterEnabled

bool otIp6IsReceiveFilterEnabled(
  otInstance *aInstance
)

Indica si se filtra o no el tráfico de control de subprocesos cuando se entregan datagramas IPv6 mediante la devolución de llamada especificada en otIp6SetReceiveCallback().

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Qué muestra
TRUE si se filtra el tráfico de control de subprocesos, de lo contrario, FALSE
Consulta también:
otIp6SetReceiveCallback
otIp6SetReceiveFilterEnabled

otIp6IsSlaacEnabled

bool otIp6IsSlaacEnabled(
  otInstance *aInstance
)

Indica si el módulo ANS está habilitado o no.

Se debe habilitar la función de tiempo de compilación de OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE.

Detalles
Valores que se muestran
TRUE
El módulo ANS está habilitado.
FALSE
El módulo ANS está inhabilitado.

otIp6NewMessage

otMessage * otIp6NewMessage(
  otInstance *aInstance,
  const otMessageSettings *aSettings
)

Asigna un búfer de mensaje nuevo para enviar un mensaje IPv6.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aSettings
Un puntero a la configuración del mensaje o NULL para establecer la configuración predeterminada.
Qué muestra
Un puntero al búfer de mensajes o NULL si no hay búferes de mensajes disponibles o los parámetros no son válidos.
Consulta también:
otMessageFree

otIp6NewMessageFromBuffer

otMessage * otIp6NewMessageFromBuffer(
  otInstance *aInstance,
  const uint8_t *aData,
  uint16_t aDataLength,
  const otMessageSettings *aSettings
)

Asignar un nuevo búfer de mensajes y escribir el datagrama IPv6 en el búfer de mensajes para enviar un mensaje IPv6

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aData
Un puntero al búfer del datagrama IPv6.
[in] aDataLength
El tamaño del búfer del datagrama IPv6 al que apunta aData.
[in] aSettings
Un puntero a la configuración del mensaje o NULL para establecer la configuración predeterminada.
Qué muestra
Un puntero al mensaje o NULL si hay un encabezado IPv6 con formato incorrecto o no hay suficientes búferes de mensaje disponibles.
Consulta también:
otMessageFree

otIp6PrefixFromString

otError otIp6PrefixFromString(
  const char *aString,
  otIp6Prefix *aPrefix
)

Convierte una string de prefijo IPv6 legible en una representación binaria.

El parámetro aString debe ser una cadena que tenga el formato "

/", donde
es una dirección IPv6 y es una longitud de prefijo.

Detalles
Parámetros
[in] aString
Un puntero para una string terminada en NULL.
[out] aPrefix
Un puntero para un prefijo IPv6.
Valores que se muestran
OT_ERROR_NONE
Se analizó correctamente la string como un prefijo de IPv6 y se actualizó aPrefix.
OT_ERROR_PARSE
No se pudo analizar aString como un prefijo de IPv6.

otIp6PrefixMatch

uint8_t otIp6PrefixMatch(
  const otIp6Address *aFirst,
  const otIp6Address *aSecond
)

Muestra la longitud de coincidencia de prefijo (bits) para dos direcciones IPv6.

Detalles
Parámetros
[in] aFirst
Un puntero a la primera dirección IPv6.
[in] aSecond
Un puntero a la segunda dirección IPv6.
Qué muestra
El prefijo coincide con la longitud en bits.

otIp6PrefixToString

void otIp6PrefixToString(
  const otIp6Prefix *aPrefix,
  char *aBuffer,
  uint16_t aSize
)

Convierte un prefijo IPv6 determinado en una string legible.

La cadena de dirección IPv6 tiene el formato "%x:%x:%x:...[::]/plen".

Si la string resultante no cabe en aBuffer (dentro de sus caracteres aSize), la string se truncará, pero la string resultante siempre tendrá terminación nula.

Detalles
Parámetros
[in] aPrefix
Un puntero a un prefijo IPv6 (NO DEBE ser NULO).
[out] aBuffer
Un puntero a un array de caracteres para generar la string (NO DEBE ser NULL).
[in] aSize
El tamaño de aBuffer (en bytes). Se recomienda usar OT_IP6_PREFIX_STRING_SIZE.

otIp6ProtoToString

const char * otIp6ProtoToString(
  uint8_t aIpProto
)

Convierte un número de protocolo de IP determinado en una string legible.

Detalles
Parámetros
[in] aIpProto
Un número de protocolo de IP (enumeración OT_IP6_PROTO_*).
Qué muestra
Una cadena que representa aIpProto.

otIp6RegisterMulticastListeners

otError otIp6RegisterMulticastListeners(
  otInstance *aInstance,
  const otIp6Address *aAddresses,
  uint8_t aAddressNum,
  const uint32_t *aTimeout,
  otIp6RegisterMulticastListenersCallback aCallback,
  void *aContext
)

Registra los objetos de escucha de multidifusión en el router troncal principal.

Se deben habilitar OPENTHREAD_CONFIG_TMF_PROXY_MLR_ENABLE y OPENTHREAD_CONFIG_COMMISSIONER_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aAddresses
Un array de direcciones multidifusión para registrar.
[in] aAddressNum
La cantidad de direcciones multidifusión que se registrarán (0 si aAddresses es NULL).
[in] aTimeout
Un puntero para el valor de tiempo de espera (en segundos) que se incluirá en MLR.req. Un valor de tiempo de espera de 0 quita el objeto de escucha multicast correspondiente. Si es nulo, MLR.req no tendría tiempo de espera Tlv de forma predeterminada.
[in] aCallback
Un puntero para la función de devolución de llamada.
[in] aContext
Un puntero al contexto del usuario.
Valores que se muestran
OT_ERROR_NONE
MLR.req se envió correctamente. Se llamará a aCallback si este método muestra OT_ERROR_NONE.
OT_ERROR_BUSY
Si un registro anterior estaba en curso.
OT_ERROR_INVALID_ARGS
Si uno o más argumentos no son válidos.
OT_ERROR_INVALID_STATE
Si el dispositivo no estaba en un estado válido para enviar MLR.req (p. ej., no se inició el comisionado, no se encontró el router de red troncal principal)
OT_ERROR_NO_BUFS
Si no hay búferes de mensajes disponibles insuficientes.
Consulta también:
otIp6RegisterMulticastListenersCallback

otIp6RemoveAllUnsecurePorts

void otIp6RemoveAllUnsecurePorts(
  otInstance *aInstance
)

Quita todos los puertos de la lista de puertos no seguros permitidos.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.

otIp6RemoveUnicastAddress

otError otIp6RemoveUnicastAddress(
  otInstance *aInstance,
  const otIp6Address *aAddress
)

Quita una dirección de interfaz de red de la interfaz Thread.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aAddress
Un puntero a una dirección IP.
Valores que se muestran
OT_ERROR_NONE
Se quitó correctamente la dirección de interfaz de red.
OT_ERROR_INVALID_ARGS
La dirección IP que indica aAddress es una dirección interna.
OT_ERROR_NOT_FOUND
No se encontró la dirección IP que indica aAddress.

otIp6RemoveUnsecurePort

otError otIp6RemoveUnsecurePort(
  otInstance *aInstance,
  uint16_t aPort
)

Quita un puerto de la lista de puertos no seguros permitidos.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aPort
Es el valor del puerto.
Valores que se muestran
OT_ERROR_NONE
El puerto se quitó correctamente de la lista de puertos no seguros permitidos.
OT_ERROR_INVALID_ARGS
El puerto no es válido (el valor 0 está reservado para uso interno).
OT_ERROR_NOT_FOUND
No se encontró el puerto en la lista de puertos no seguros.

otIp6ResetBorderRoutingCounters

void otIp6ResetBorderRoutingCounters(
  otInstance *aInstance
)

Restablece los contadores de enrutamiento de borde.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.

otIp6SelectSourceAddress

otError otIp6SelectSourceAddress(
  otInstance *aInstance,
  otMessageInfo *aMessageInfo
)

Selecciona la dirección de origen de OpenThread.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in,out] aMessageInfo
Un puntero para la información del mensaje.
Valores que se muestran
OT_ERROR_NONE
Se encontró una dirección de origen y se completó en mSockAddr de aMessageInfo.
OT_ERROR_NOT_FOUND
No se encontró la dirección de origen y aMessageInfo no cambió.

otIp6Send

otError otIp6Send(
  otInstance *aInstance,
  otMessage *aMessage
)

Envía un datagrama IPv6 a través de la interfaz Thread.

El emisor transfiere la propiedad de aMessage cuando realiza esta llamada. OpenThread liberará aMessage cuando se complete el procesamiento, incluso cuando se muestre un valor distinto de OT_ERROR_NONE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aMessage
Un puntero para el búfer de mensaje que contiene el datagrama IPv6.
Valores que se muestran
OT_ERROR_NONE
El mensaje se procesó correctamente.
OT_ERROR_DROP
El mensaje tenía un formato correcto, pero no se procesó por completo debido a las reglas de procesamiento de paquetes.
OT_ERROR_NO_BUFS
No se pudieron asignar los búferes de mensajes necesarios cuando se procesa el datagrama.
OT_ERROR_NO_ROUTE
No hay ruta para el host.
OT_ERROR_INVALID_SOURCE_ADDRESS
La dirección de origen no es válida, p.ej., una dirección Anycast o una dirección multidifusión.
OT_ERROR_PARSE
Se encontró un encabezado con errores de formato cuando se procesaba el mensaje.
OT_ERROR_INVALID_ARGS
Los metadatos del mensaje no son válidos; p.ej., el mensaje usa OT_MESSAGE_ORIGIN_THREAD_NETIF como origen.

otIp6SetAddressCallback

void otIp6SetAddressCallback(
  otInstance *aInstance,
  otIp6AddressCallback aCallback,
  void *aCallbackContext
)

Registra una devolución de llamada para notificar los cambios en la dirección IPv6 interna.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aCallback
Un puntero a una función a la que se llama cuando se agrega o quita una dirección IPv6 interna. NULL para inhabilitar la devolución de llamada.
[in] aCallbackContext
Un puntero para el contexto específico de la aplicación.

otIp6SetEnabled

otError otIp6SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Sube o baja la interfaz IPv6.

Llámalo para habilitar o inhabilitar la comunicación IPv6.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aEnabled
TRUE para habilitar IPv6, FALSE de lo contrario.
Valores que se muestran
OT_ERROR_NONE
Se subió/baja correctamente la interfaz IPv6.
OT_ERROR_INVALID_STATE
La interfaz IPv6 no está disponible porque el dispositivo funciona en modo de vínculo sin procesar (aplicable solo cuando se habilita la función OPENTHREAD_CONFIG_LINK_RAW_ENABLE).

otIp6SetMeshLocalIid

otError otIp6SetMeshLocalIid(
  otInstance *aInstance,
  const otIp6InterfaceIdentifier *aIid
)

Establece el IID local de malla (para fines de prueba).

Requiere OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aIid
Un puntero para el IID local de malla que se debe configurar.
Valores que se muestran
OT_ERROR_NONE
Se configuró correctamente el IID local de la malla.
OT_ERROR_INVALID_STATE
Los protocolos de subprocesos están habilitados.

otIp6SetMulticastPromiscuousEnabled

void otIp6SetMulticastPromiscuousEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Habilita o inhabilita el modo promiscuo de multidifusión en la interfaz de Thread.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aEnabled
TRUE para habilitar el modo Promiscuo de multidifusión, de lo contrario, FALSE
Consulta también:
otIp6IsMulticastPromiscuousEnabled

otIp6SetReceiveCallback

void otIp6SetReceiveCallback(
  otInstance *aInstance,
  otIp6ReceiveCallback aCallback,
  void *aCallbackContext
)

Registra una devolución de llamada para proporcionar datagramas IPv6 recibidos.

De forma predeterminada, esta devolución de llamada no pasa tráfico de control de subprocesos. Consulta otIp6SetReceiveFilterEnabled() para cambiar la configuración del filtro de tráfico de control de subprocesos.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aCallback
Un puntero a una función a la que se llama cuando se recibe un datagrama IPv6 o NULL para inhabilitar la devolución de llamada.
[in] aCallbackContext
Un puntero para el contexto específico de la aplicación.
Consulta también:
otIp6IsReceiveFilterEnabled
otIp6SetReceiveFilterEnabled

otIp6SetReceiveFilterEnabled

void otIp6SetReceiveFilterEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Establece si se filtra o no el tráfico de control de subprocesos cuando se entregan datagramas IPv6 mediante la devolución de llamada especificada en otIp6SetReceiveCallback().

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aEnabled
TRUE si se filtra el tráfico de control de subprocesos, de lo contrario, FALSE
Consulta también:
otIp6SetReceiveCallback
otIsReceiveIp6FilterEnabled

otIp6SetSlaacEnabled

void otIp6SetSlaacEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Habilita o inhabilita el módulo de ANSAC.

Se debe habilitar la función de tiempo de compilación de OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE.

Cuando el módulo ANS está habilitado, se agregan las direcciones ANSAC (según los prefijos de la malla en los datos de red) a la interfaz. Cuando se inhabilita el módulo de ANSAC, se quita cualquier dirección de ANSAC que se haya agregado antes.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aEnabled
TRUE para habilitar, FALSE para inhabilitar.

otIp6SetSlaacPrefixFilter

void otIp6SetSlaacPrefixFilter(
  otInstance *aInstance,
  otIp6SlaacPrefixFilter aFilter
)

Configura el controlador de filtro del módulo de ANSAC.

Se debe habilitar la función de tiempo de compilación de OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE.

El módulo de ANSAC llama al controlador de filtros cuando está a punto de agregar una dirección de ANSAC en función de un prefijo para decidir si se debe agregar la dirección o no.

Un controlador de filtro NULL inhabilita el filtrado y permite que se agreguen todas las direcciones ANSAC.

Si no se llama a esta función, el filtro predeterminado que usa el módulo ANSAC será NULL (el filtrado está inhabilitado).

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aFilter
Un puntero al controlador de filtro de prefijo ANSAC o NULL para inhabilitar el filtrado.

otIp6SockAddrToString

void otIp6SockAddrToString(
  const otSockAddr *aSockAddr,
  char *aBuffer,
  uint16_t aSize
)

Convierte una dirección de socket IPv6 determinada en una string legible.

La string de dirección del socket IPv6 tiene el formato [address]:port, en el que address se muestra como 16 valores hexadecimales separados por : y port es el número de puerto en formato decimal, por ejemplo, “[%x:%x:...:%x]:%u”.

Si la string resultante no cabe en aBuffer (dentro de sus caracteres aSize), la string se truncará, pero la string resultante siempre tendrá terminación nula.

Detalles
Parámetros
[in] aSockAddr
Un puntero a una dirección de socket IPv6 (NO DEBE ser NULO).
[out] aBuffer
Un puntero a un array de caracteres para generar la string (NO DEBE ser NULL).
[in] aSize
El tamaño de aBuffer (en bytes). Se recomienda usar OT_IP6_SOCK_ADDR_STRING_SIZE.

otIp6SubscribeMulticastAddress

otError otIp6SubscribeMulticastAddress(
  otInstance *aInstance,
  const otIp6Address *aAddress
)

Suscribe la interfaz Thread a una dirección multidifusión de la interfaz de red.

La interfaz de Thread copiará la instancia pasada, aAddress. La interfaz Thread solo admite una cantidad fija de direcciones multicast agregadas de forma externa. Consulta los OPENTHREAD_CONFIG_IP6_MAX_EXT_MCAST_ADDRS.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aAddress
Un puntero a una dirección IP.
Valores que se muestran
OT_ERROR_NONE
Se suscribió correctamente a la dirección de multidifusión de la interfaz de red.
OT_ERROR_ALREADY
La dirección de multidifusión ya está suscrita.
OT_ERROR_INVALID_ARGS
La dirección IP que indica aAddress es una dirección multidifusión no válida.
OT_ERROR_REJECTED
La dirección IP que indica aAddress es una dirección multidifusión interna.
OT_ERROR_NO_BUFS
La interfaz de red ya almacena la cantidad máxima permitida de direcciones de multidifusión externas.

otIp6UnsubscribeMulticastAddress

otError otIp6UnsubscribeMulticastAddress(
  otInstance *aInstance,
  const otIp6Address *aAddress
)

Anula la suscripción de la interfaz Thread a una dirección multidifusión de la interfaz de red.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aAddress
Un puntero a una dirección IP.
Valores que se muestran
OT_ERROR_NONE
Se anuló correctamente la suscripción a la dirección de multidifusión de la interfaz de red.
OT_ERROR_REJECTED
La dirección IP que indica aAddress es una dirección interna.
OT_ERROR_NOT_FOUND
No se encontró la dirección IP que indica aAddress.

Macros

OT_IP6_ADDRESS_SIZE

 OT_IP6_ADDRESS_SIZE 16

Tamaño de una dirección IPv6 (bytes)

OT_IP6_ADDRESS_STRING_SIZE

 OT_IP6_ADDRESS_STRING_SIZE 40

Tamaño recomendado para la representación de string de una dirección IPv6.

OT_IP6_HEADER_PROTO_OFFSET

 OT_IP6_HEADER_PROTO_OFFSET 6

Compensación del campo proto en el encabezado IPv6 (bytes)

OT_IP6_HEADER_SIZE

 OT_IP6_HEADER_SIZE 40

Tamaño de un encabezado IPv6 (bytes)

OT_IP6_IID_SIZE

 OT_IP6_IID_SIZE 8

Tamaño de un identificador de interfaz IPv6 (bytes)

OT_IP6_MAX_MLR_ADDRESSES

 OT_IP6_MAX_MLR_ADDRESSES 15

Cantidad máxima de direcciones IPv6 admitidas por el registro de objetos de escucha multidifusión

OT_IP6_PREFIX_BITSIZE

 OT_IP6_PREFIX_BITSIZE (OT_IP6_PREFIX_SIZE * 8)

Tamaño de un prefijo IPv6 (bits)

OT_IP6_PREFIX_SIZE

 OT_IP6_PREFIX_SIZE 8

Tamaño de un prefijo IPv6 (bytes)

OT_IP6_PREFIX_STRING_SIZE

 OT_IP6_PREFIX_STRING_SIZE 45

Tamaño recomendado para la representación de string de un prefijo IPv6.

OT_IP6_SOCK_ADDR_STRING_SIZE

 OT_IP6_SOCK_ADDR_STRING_SIZE 48

Tamaño recomendado para la representación de string de una dirección de socket IPv6.

Recursos

Los temas de referencia de la API de OpenThread se originan a partir del código fuente, disponible en GitHub. Para obtener más información o contribuir a nuestra documentación, consulta Recursos.