IPv6

Questo modulo include funzioni che controllano la comunicazione IPv6.

Riepilogo

Enumerazioni

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
Numeri di protocollo Internet.
anonymous enum{
  OT_ADDRESS_ORIGIN_THREAD = 0,
  OT_ADDRESS_ORIGIN_SLAAC = 1,
  OT_ADDRESS_ORIGIN_DHCPV6 = 2,
  OT_ADDRESS_ORIGIN_MANUAL = 3
}
enum
Origini degli indirizzi IPv6.
anonymous enum{
  OT_ECN_NOT_CAPABLE = 0x0,
  OT_ECN_CAPABLE_0 = 0x2,
  OT_ECN_CAPABLE_1 = 0x1,
  OT_ECN_MARKED = 0x3
}
enum
Stati ECN, rappresentati come nell'intestazione IP.

Typedef

otBorderRoutingCounters typedef
Rappresenta i contatori dei pacchetti inoltrati tramite routing delle frontiere.
otIp6Address typedef
struct otIp6Address
Rappresenta un indirizzo IPv6.
otIp6AddressCallback)(const otIp6AddressInfo *aAddressInfo, bool aIsAdded, void *aContext) typedef
void(*
Il puntatore viene chiamato quando viene aggiunto o rimosso un indirizzo IPv6 interno.
otIp6AddressComponents typedef
Rappresenta i componenti di un indirizzo IPv6.
otIp6AddressInfo typedef
Rappresenta le informazioni dell'indirizzo IPv6.
otIp6InterfaceIdentifier typedef
Rappresenta l'identificatore di interfaccia di un indirizzo IPv6.
otIp6NetworkPrefix typedef
Rappresenta il prefisso di rete di un indirizzo IPv6 (i 64 bit più significativi dell'indirizzo).
otIp6Prefix typedef
struct otIp6Prefix
Rappresenta un prefisso IPv6.
otIp6ReceiveCallback)(otMessage *aMessage, void *aContext) typedef
void(*
Il puntatore viene chiamato quando viene ricevuto un datagramma IPv6.
otIp6RegisterMulticastListenersCallback)(void *aContext, otError aError, uint8_t aMlrStatus, const otIp6Address *aFailedAddresses, uint8_t aFailedAddressNum) typedef
void(*
Il puntatore viene richiamato con i risultati di otIp6RegisterMulticastListeners.
otIp6SlaacPrefixFilter)(otInstance *aInstance, const otIp6Prefix *aPrefix) typedef
bool(*
Il puntatore consente all'utente di filtrare i prefissi e non consente l'aggiunta di un indirizzo SLAAC in base a un prefisso.
otMessageInfo typedef
struct otMessageInfo
Rappresenta gli indirizzi dei socket IPv6 locali e peer.
otNetifAddress typedef
Rappresenta un indirizzo unicast dell'interfaccia di rete IPv6.
otNetifMulticastAddress typedef
Rappresenta un indirizzo multicast dell'interfaccia di rete IPv6.
otPacketsAndBytes typedef
Rappresenta i contatori per pacchetti e byte.
otSockAddr typedef
struct otSockAddr
Rappresenta un indirizzo socket IPv6.

Variabili

OT_TOOL_PACKED_END

Funzioni

otIp6AddUnicastAddress(otInstance *aInstance, const otNetifAddress *aAddress)
Aggiunge un indirizzo interfaccia di rete all'interfaccia Thread.
otIp6AddUnsecurePort(otInstance *aInstance, uint16_t aPort)
Aggiunge una porta all'elenco delle porte non protette consentite.
otIp6AddressFromString(const char *aString, otIp6Address *aAddress)
Converte una stringa di indirizzi IPv6 leggibile in una rappresentazione binaria.
otIp6AddressToString(const otIp6Address *aAddress, char *aBuffer, uint16_t aSize)
void
Converte un determinato indirizzo IPv6 in una stringa leggibile.
otIp6ArePrefixesEqual(const otIp6Prefix *aFirst, const otIp6Prefix *aSecond)
bool
Verifica se due prefissi IPv6 sono uguali.
otIp6GetBorderRoutingCounters(otInstance *aInstance)
Ottieni i contatori del routing bordo.
otIp6GetMulticastAddresses(otInstance *aInstance)
Restituisce l'elenco di indirizzi multicast IPv6 sottoscritti all'interfaccia Thread.
otIp6GetPrefix(const otIp6Address *aAddress, uint8_t aLength, otIp6Prefix *aPrefix)
void
Riceve un prefisso con aLength da aAddress.
otIp6GetUnicastAddresses(otInstance *aInstance)
const otNetifAddress *
Restituisce l'elenco di indirizzi IPv6 assegnati all'interfaccia Thread.
otIp6GetUnsecurePorts(otInstance *aInstance, uint8_t *aNumEntries)
const uint16_t *
Restituisce un puntatore all'elenco di porte non sicure.
otIp6HasUnicastAddress(otInstance *aInstance, const otIp6Address *aAddress)
bool
Indica se un indirizzo IPv6 unicast è assegnato all'interfaccia Thread.
otIp6IsAddressEqual(const otIp6Address *aFirst, const otIp6Address *aSecond)
bool
Verifica se due indirizzi IPv6 sono uguali.
otIp6IsAddressUnspecified(const otIp6Address *aAddress)
bool
Indica se un determinato indirizzo IPv6 è l'indirizzo non specificato.
otIp6IsEnabled(otInstance *aInstance)
bool
Indica se l'interfaccia IPv6 è attiva o meno.
otIp6IsMulticastPromiscuousEnabled(otInstance *aInstance)
bool
Verifica se la modalità promiscuo multicast è attivata nell'interfaccia Thread.
otIp6IsReceiveFilterEnabled(otInstance *aInstance)
bool
Indica se il traffico di controllo Thread viene filtrato o meno durante la distribuzione di datagrammi IPv6 tramite il callback specificato in otIp6SetReceiveCallback().
otIp6IsSlaacEnabled(otInstance *aInstance)
bool
Indica se il modulo SLAAC è abilitato o meno.
otIp6NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
Alloca un nuovo buffer dei messaggi per l'invio di un messaggio IPv6.
otIp6NewMessageFromBuffer(otInstance *aInstance, const uint8_t *aData, uint16_t aDataLength, const otMessageSettings *aSettings)
Alloca un nuovo buffer dei messaggi e scrivi il datagramma IPv6 nel buffer dei messaggi per inviare un messaggio IPv6.
otIp6PrefixFromString(const char *aString, otIp6Prefix *aPrefix)
Converte una stringa di prefisso IPv6 leggibile in una rappresentazione binaria.
otIp6PrefixMatch(const otIp6Address *aFirst, const otIp6Address *aSecond)
uint8_t
Restituisce la lunghezza della corrispondenza del prefisso (bit) per due indirizzi IPv6.
otIp6PrefixToString(const otIp6Prefix *aPrefix, char *aBuffer, uint16_t aSize)
void
Converte un determinato prefisso IPv6 in una stringa leggibile.
otIp6ProtoToString(uint8_t aIpProto)
const char *
Converte un determinato numero di protocollo IP in una stringa leggibile.
otIp6RegisterMulticastListeners(otInstance *aInstance, const otIp6Address *aAddresses, uint8_t aAddressNum, const uint32_t *aTimeout, otIp6RegisterMulticastListenersCallback aCallback, void *aContext)
Registra i listener multicast nel router backbone principale.
otIp6RemoveAllUnsecurePorts(otInstance *aInstance)
void
Rimuove tutte le porte dall'elenco delle porte non sicure consentite.
otIp6RemoveUnicastAddress(otInstance *aInstance, const otIp6Address *aAddress)
Rimuove un indirizzo interfaccia di rete dall'interfaccia Thread.
otIp6RemoveUnsecurePort(otInstance *aInstance, uint16_t aPort)
Rimuove una porta dall'elenco delle porte non sicure consentite.
otIp6ResetBorderRoutingCounters(otInstance *aInstance)
void
Reimposta i contatori del routing bordo.
otIp6SelectSourceAddress(otInstance *aInstance, otMessageInfo *aMessageInfo)
Esegui la selezione dell'indirizzo di origine OpenThread.
otIp6Send(otInstance *aInstance, otMessage *aMessage)
Invia un datagramma IPv6 tramite l'interfaccia Thread.
otIp6SetAddressCallback(otInstance *aInstance, otIp6AddressCallback aCallback, void *aCallbackContext)
void
Registra un callback per notificare le modifiche all'indirizzo IPv6 interno.
otIp6SetEnabled(otInstance *aInstance, bool aEnabled)
Porta in alto o in basso l'interfaccia IPv6.
otIp6SetMeshLocalIid(otInstance *aInstance, const otIp6InterfaceIdentifier *aIid)
Imposta l'IID locale mesh (a scopo di test).
otIp6SetMulticastPromiscuousEnabled(otInstance *aInstance, bool aEnabled)
void
Attiva o disattiva la modalità promiscuo multicast nell'interfaccia Thread.
otIp6SetReceiveCallback(otInstance *aInstance, otIp6ReceiveCallback aCallback, void *aCallbackContext)
void
Registra un callback per fornire i datagrammi IPv6 ricevuti.
otIp6SetReceiveFilterEnabled(otInstance *aInstance, bool aEnabled)
void
Consente di impostare se il traffico di controllo Thread viene filtrato o meno durante la distribuzione di datagrammi IPv6 tramite il callback specificato in otIp6SetReceiveCallback().
otIp6SetSlaacEnabled(otInstance *aInstance, bool aEnabled)
void
Attiva/disattiva il modulo SLAAC.
otIp6SetSlaacPrefixFilter(otInstance *aInstance, otIp6SlaacPrefixFilter aFilter)
void
Imposta il gestore dei filtri del modulo SLAAC.
otIp6SockAddrToString(const otSockAddr *aSockAddr, char *aBuffer, uint16_t aSize)
void
Converte un determinato indirizzo socket IPv6 in una stringa leggibile.
otIp6SubscribeMulticastAddress(otInstance *aInstance, const otIp6Address *aAddress)
Sottoscrive l'interfaccia Thread a un indirizzo Network Interface Multicast.
otIp6UnsubscribeMulticastAddress(otInstance *aInstance, const otIp6Address *aAddress)
Annulla l'iscrizione dell'interfaccia Thread a un indirizzo di interfaccia multicast di interfaccia di rete.

Strutture

otBorderRoutingCounters

Rappresenta i contatori dei pacchetti inoltrati tramite routing delle frontiere.

otIp6Address

Rappresenta un indirizzo IPv6.

otIp6AddressComponents

Rappresenta i componenti di un indirizzo IPv6.

otIp6AddressInfo

Rappresenta le informazioni dell'indirizzo IPv6.

otIp6InterfaceIdentifier

Rappresenta l'identificatore di interfaccia di un indirizzo IPv6.

otIp6NetworkPrefix

Rappresenta il prefisso di rete di un indirizzo IPv6 (i 64 bit più significativi dell'indirizzo).

otIp6Prefix

Rappresenta un prefisso IPv6.

otMessageInfo

Rappresenta gli indirizzi dei socket IPv6 locali e peer.

otNetifAddress

Rappresenta un indirizzo unicast dell'interfaccia di rete IPv6.

otNetifMulticastAddress

Rappresenta un indirizzo multicast dell'interfaccia di rete IPv6.

otPacketsAndBytes

Rappresenta i contatori per pacchetti e byte.

otSockAddr

Rappresenta un indirizzo socket IPv6.

Unione

otIp6InterfaceIdentifier::OT_TOOL_PACKED_FIELD

Enumerazioni

enum anonimo

 anonymous enum

Numeri di protocollo Internet.

Proprietà
OT_IP6_PROTO_DST_OPTS

Opzioni di destinazione per IPv6.

OT_IP6_PROTO_FRAGMENT

Intestazione del frammento per IPv6.

OT_IP6_PROTO_HOP_OPTS

Opzione hop-by-hop IPv6.

OT_IP6_PROTO_ICMP6

ICMP per IPv6.

OT_IP6_PROTO_IP6

Incapsulamento IPv6.

OT_IP6_PROTO_NONE

Nessuna intestazione successiva per IPv6.

OT_IP6_PROTO_ROUTING

Intestazione di routing per IPv6.

OT_IP6_PROTO_TCP

Protocollo di controllo della trasmissione.

OT_IP6_PROTO_UDP

Datagramma utente.

enum anonimo

 anonymous enum

Origini degli indirizzi IPv6.

Proprietà
OT_ADDRESS_ORIGIN_DHCPV6

Indirizzo assegnato da DHCPv6.

OT_ADDRESS_ORIGIN_MANUAL

Indirizzo assegnato manualmente.

OT_ADDRESS_ORIGIN_SLAAC

SLAAC assegnato.

OT_ADDRESS_ORIGIN_THREAD

Indirizzo assegnato al thread (ALOC, RLOC, MLEID ecc.)

enum anonimo

 anonymous enum

Stati ECN, rappresentati come nell'intestazione IP.

Proprietà
OT_ECN_CAPABLE_0

ECT(0)

OT_ECN_CAPABLE_1

ECT(1)

OT_ECN_MARKED

Congestione rilevata (CE)

OT_ECN_NOT_CAPABLE

Non ECT.

Typedef

otBorderRoutingCounters

struct otBorderRoutingCounters otBorderRoutingCounters

Rappresenta i contatori dei pacchetti inoltrati tramite routing delle frontiere.

otIp6Address

struct otIp6Address otIp6Address

Rappresenta un indirizzo IPv6.

otIp6AddressCallback

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

Il puntatore viene chiamato quando viene aggiunto o rimosso un indirizzo IPv6 interno.

Dettagli
Parametri
[in] aAddressInfo
Un puntatore alle informazioni dell'indirizzo IPv6.
[in] aIsAdded
TRUE se aAddress è stato aggiunto, FALSE se aAddress è stato rimosso.
[in] aContext
Un puntatore al contesto specifico dell'applicazione.

otIp6AddressComponents

struct otIp6AddressComponents otIp6AddressComponents

Rappresenta i componenti di un indirizzo IPv6.

otIp6AddressInfo

struct otIp6AddressInfo otIp6AddressInfo

Rappresenta le informazioni dell'indirizzo IPv6.

otIp6InterfaceIdentifier

struct otIp6InterfaceIdentifier otIp6InterfaceIdentifier

Rappresenta l'identificatore di interfaccia di un indirizzo IPv6.

otIp6NetworkPrefix

struct otIp6NetworkPrefix otIp6NetworkPrefix

Rappresenta il prefisso di rete di un indirizzo IPv6 (i 64 bit più significativi dell'indirizzo).

otIp6Prefix

struct otIp6Prefix otIp6Prefix

Rappresenta un prefisso IPv6.

otIp6ReceiveCallback

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

Il puntatore viene chiamato quando viene ricevuto un datagramma IPv6.

Dettagli
Parametri
[in] aMessage
Un puntatore al buffer dei messaggi contenente il datagramma IPv6 ricevuto. Questa funzione trasferisce la proprietà del aMessage al destinatario del callback. Dopo l'elaborazione, il messaggio dovrebbe essere liberato dal destinatario del callback (vedi otMessageFree()).
[in] aContext
Un puntatore al contesto specifico dell'applicazione.

otIp6RegisterMulticastListenersCallback

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

Il puntatore viene richiamato con i risultati di otIp6RegisterMulticastListeners.

Dettagli
Parametri
[in] aContext
Un puntatore al contesto dell'utente.
[in] aError
OT_ERROR_NONE quando con esito positivo l'invio di MLR.req e la ricezione di MLR.rsp, OT_ERROR_ANSWER_TIMEOUT se la ricezione di MLR.rsp non è andata a buon fine, OT_ERROR_PARSE quando l'analisi MLR.rsp non è riuscita.
[in] aMlrStatus
Lo stato di registrazione del listener multicast quando aError è OT_ERROR_NONE.
[in] aFailedAddresses
Un puntatore agli indirizzi IPv6 non riusciti quando aError è OT_ERROR_NONE.
[in] aFailedAddressNum
Il numero di indirizzi IPv6 non riusciti quando aError è OT_ERROR_NONE.
Vedi anche:
otIp6RegisterMulticastListeners

otIp6SlaacPrefixFilter

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

Il puntatore consente all'utente di filtrare i prefissi e non consente l'aggiunta di un indirizzo SLAAC in base a un prefisso.

È possibile usare otIp6SetSlaacPrefixFilter() per impostare il gestore dei filtri. Il gestore di filtri viene richiamato dal modulo SLAAC quando sta per aggiungere un indirizzo SLAAC basato su un prefisso. Il suo valore booleano restituito determina se l'indirizzo è filtrato (non aggiunto) o meno.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aPrefix
Un puntatore al prefisso per il quale sta per essere aggiunto un indirizzo SLAAC.
Valori restituiti
TRUE
Indica che l'indirizzo SLAAC basato sul prefisso deve essere filtrato e NON aggiunto.
FALSE
Indica che deve essere aggiunto l'indirizzo SLAAC basato sul prefisso.

otMessageInfo

struct otMessageInfo otMessageInfo

Rappresenta gli indirizzi dei socket IPv6 locali e peer.

otNetifAddress

struct otNetifAddress otNetifAddress

Rappresenta un indirizzo unicast dell'interfaccia di rete IPv6.

otNetifMulticastAddress

struct otNetifMulticastAddress otNetifMulticastAddress

Rappresenta un indirizzo multicast dell'interfaccia di rete IPv6.

otPacketsAndBytes

struct otPacketsAndBytes otPacketsAndBytes

Rappresenta i contatori per pacchetti e byte.

otSockAddr

struct otSockAddr otSockAddr

Rappresenta un indirizzo socket IPv6.

Variabili

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp6InterfaceIdentifier OT_TOOL_PACKED_END

Funzioni

otIp6AddUnicastAddress

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

Aggiunge un indirizzo interfaccia di rete all'interfaccia Thread.

L'istanza passata aAddress viene copiata dall'interfaccia Thread. L'interfaccia Thread supporta solo un numero fisso di indirizzi unicast aggiunti esternamente. Leggi i OPENTHREAD_CONFIG_IP6_MAX_EXT_UCAST_ADDRS.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aAddress
Un puntatore a un indirizzo di interfaccia di rete.
Valori restituiti
OT_ERROR_NONE
L'indirizzo dell'interfaccia di rete è stato aggiunto (o aggiornato) correttamente.
OT_ERROR_INVALID_ARGS
L'indirizzo IP indicato da aAddress è un indirizzo interno.
OT_ERROR_NO_BUFS
L'interfaccia di rete memorizza già il numero massimo consentito di indirizzi esterni.

otIp6AddUnsecurePort

otError otIp6AddUnsecurePort(
  otInstance *aInstance,
  uint16_t aPort
)

Aggiunge una porta all'elenco delle porte non protette consentite.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aPort
Il valore della porta.
Valori restituiti
OT_ERROR_NONE
La porta è stata aggiunta correttamente all'elenco di porte non sicure consentite.
OT_ERROR_INVALID_ARGS
La porta non è valida (il valore 0 è riservato per uso interno).
OT_ERROR_NO_BUFS
L'elenco di porte non sicure è pieno.

otIp6AddressFromString

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

Converte una stringa di indirizzi IPv6 leggibile in una rappresentazione binaria.

Dettagli
Parametri
[in] aString
Un puntatore a una stringa con terminazione NULL.
[out] aAddress
Un puntatore a un indirizzo IPv6.
Valori restituiti
OT_ERROR_NONE
Analisi di aString riuscita e aggiornamento di aAddress completato.
OT_ERROR_PARSE
Impossibile analizzare aString come indirizzo IPv6.

otIp6AddressToString

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

Converte un determinato indirizzo IPv6 in una stringa leggibile.

La stringa dell'indirizzo IPv6 è formattata come 16 valori esadecimali separati da ":" (ad esempio, "%x:%x:%x:...:%x").

Se la stringa risultante non rientra in aBuffer (all'interno dei suoi aSize caratteri), la stringa viene troncata, ma la stringa restituita è sempre con terminazione null.

Dettagli
Parametri
[in] aAddress
Un puntatore a un indirizzo IPv6 (NON DEVE essere NULL).
[out] aBuffer
Un puntatore a un array di caratteri per generare la stringa (NON DEVE essere NULL).
[in] aSize
La dimensione di aBuffer (in byte). Si consiglia di utilizzare OT_IP6_ADDRESS_STRING_SIZE.

otIp6ArePrefixesEqual

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

Verifica se due prefissi IPv6 sono uguali.

Dettagli
Parametri
[in] aFirst
Un puntatore al primo prefisso IPv6 da confrontare.
[in] aSecond
Un puntatore al secondo prefisso IPv6 da confrontare.
Valori restituiti
TRUE
I due prefissi IPv6 sono gli stessi.
FALSE
I due prefissi IPv6 non sono uguali.

otIp6GetBorderRoutingCounters

const otBorderRoutingCounters * otIp6GetBorderRoutingCounters(
  otInstance *aInstance
)

Ottieni i contatori del routing bordo.

La funzionalità OPENTHREAD_CONFIG_IP6_BR_COUNTERS_ENABLE in fase di build deve essere abilitata.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
Restituisce
Un puntatore ai contatori del routing confine.

otIp6GetMulticastAddresses

const otNetifMulticastAddress * otIp6GetMulticastAddresses(
  otInstance *aInstance
)

Restituisce l'elenco di indirizzi multicast IPv6 sottoscritti all'interfaccia Thread.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
Restituisce
Un puntatore al primo indirizzo Network Interface Multicast.

otIp6GetPrefix

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

Riceve un prefisso con aLength da aAddress.

Dettagli
Parametri
[in] aAddress
Un puntatore a un indirizzo IPv6.
[in] aLength
La lunghezza del prefisso in bit.
[out] aPrefix
Un puntatore che restituisce il prefisso IPv6.

otIp6GetUnicastAddresses

const otNetifAddress * otIp6GetUnicastAddresses(
  otInstance *aInstance
)

Restituisce l'elenco di indirizzi IPv6 assegnati all'interfaccia Thread.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
Restituisce
Un puntatore al primo indirizzo dell'interfaccia di rete.

otIp6GetUnsecurePorts

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

Restituisce un puntatore all'elenco di porte non sicure.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[out] aNumEntries
Il numero di voci nell'elenco.
Restituisce
Un puntatore all'elenco di porte non sicure.

otIp6HasUnicastAddress

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

Indica se un indirizzo IPv6 unicast è assegnato all'interfaccia Thread.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aAddress
Un puntatore all'indirizzo unicast.
Valori restituiti
TRUE
Se aAddress è assegnato all'interfaccia Thread.
FALSE
Se aAddress non è assegnato all'interfaccia Thread.

otIp6IsAddressEqual

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

Verifica se due indirizzi IPv6 sono uguali.

Dettagli
Parametri
[in] aFirst
Un puntatore al primo indirizzo IPv6 da confrontare.
[in] aSecond
Un puntatore al secondo indirizzo IPv6 da confrontare.
Valori restituiti
TRUE
I due indirizzi IPv6 sono gli stessi.
FALSE
I due indirizzi IPv6 non sono uguali.

otIp6IsAddressUnspecified

bool otIp6IsAddressUnspecified(
  const otIp6Address *aAddress
)

Indica se un determinato indirizzo IPv6 è l'indirizzo non specificato.

Dettagli
Parametri
[in] aAddress
Un puntatore a un indirizzo IPv6.
Valori restituiti
TRUE
Se l'indirizzo IPv6 è un indirizzo non specificato.
FALSE
Se l'indirizzo IPv6 non è l'indirizzo non specificato.

otIp6IsEnabled

bool otIp6IsEnabled(
  otInstance *aInstance
)

Indica se l'interfaccia IPv6 è attiva o meno.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
Valori restituiti
TRUE
L'interfaccia IPv6 è attivata.
FALSE
L'interfaccia IPv6 è disabilitata.

otIp6IsMulticastPromiscuousEnabled

bool otIp6IsMulticastPromiscuousEnabled(
  otInstance *aInstance
)

Verifica se la modalità promiscuo multicast è attivata nell'interfaccia Thread.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
Vedi anche:
otIp6SetMulticastPromiscuousEnabled

otIp6IsReceiveFilterEnabled

bool otIp6IsReceiveFilterEnabled(
  otInstance *aInstance
)

Indica se il traffico di controllo Thread viene filtrato o meno durante la distribuzione di datagrammi IPv6 tramite il callback specificato in otIp6SetReceiveCallback().

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
Restituisce
TRUE se il traffico di controllo Thread viene filtrato, altrimenti FALSE.
Vedi anche:
otIp6SetReceiveCallback
otIp6SetReceiveFilterEnabled

otIp6IsSlaacEnabled

bool otIp6IsSlaacEnabled(
  otInstance *aInstance
)

Indica se il modulo SLAAC è abilitato o meno.

La funzionalità OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE in fase di build deve essere abilitata.

Dettagli
Valori restituiti
TRUE
Il modulo SLAAC è abilitato.
FALSE
Il modulo SLAAC è disabilitato.

otIp6NewMessage

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

Alloca un nuovo buffer dei messaggi per l'invio di un messaggio IPv6.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aSettings
Un puntatore alle impostazioni del messaggio oppure NULL per configurare le impostazioni predefinite.
Restituisce
Un puntatore al buffer dei messaggi o NULL se non sono disponibili buffer dei messaggi o se i parametri non sono validi.
Vedi anche:
otMessageFree

otIp6NewMessageFromBuffer

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

Alloca un nuovo buffer dei messaggi e scrivi il datagramma IPv6 nel buffer dei messaggi per inviare un messaggio IPv6.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aData
Un puntatore al buffer del datagramma IPv6.
[in] aDataLength
La dimensione del buffer del datagramma IPv6 puntato da aData.
[in] aSettings
Un puntatore alle impostazioni del messaggio oppure NULL per configurare le impostazioni predefinite.
Restituisce
Un puntatore al messaggio o NULL se l'intestazione IPv6 non è formattata correttamente o se sono disponibili buffer dei messaggi insufficienti.
Vedi anche:
otMessageFree

otIp6PrefixFromString

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

Converte una stringa di prefisso IPv6 leggibile in una rappresentazione binaria.

Il parametro aString deve essere una stringa nel formato "

/", dove
è un indirizzo IPv6 e è un prefisso.

Dettagli
Parametri
[in] aString
Un puntatore a una stringa con terminazione NULL.
[out] aPrefix
Un puntatore a un prefisso IPv6.
Valori restituiti
OT_ERROR_NONE
La stringa è stata analizzata come prefisso IPv6 e aggiornato aPrefix.
OT_ERROR_PARSE
Impossibile analizzare aString come prefisso IPv6.

otIp6PrefixMatch

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

Restituisce la lunghezza della corrispondenza del prefisso (bit) per due indirizzi IPv6.

Dettagli
Parametri
[in] aFirst
Un puntatore al primo indirizzo IPv6.
[in] aSecond
Un puntatore al secondo indirizzo IPv6.
Restituisce
La lunghezza della corrispondenza del prefisso in bit.

otIp6PrefixToString

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

Converte un determinato prefisso IPv6 in una stringa leggibile.

La stringa dell'indirizzo IPv6 è formattata come "%x:%x:%x:...[::]/plen".

Se la stringa risultante non rientra in aBuffer (all'interno dei suoi aSize caratteri), la stringa viene troncata, ma la stringa restituita è sempre con terminazione null.

Dettagli
Parametri
[in] aPrefix
Un puntatore a un prefisso IPv6 (NON DEVE essere NULL).
[out] aBuffer
Un puntatore a un array di caratteri per generare la stringa (NON DEVE essere NULL).
[in] aSize
La dimensione di aBuffer (in byte). Si consiglia di utilizzare OT_IP6_PREFIX_STRING_SIZE.

otIp6ProtoToString

const char * otIp6ProtoToString(
  uint8_t aIpProto
)

Converte un determinato numero di protocollo IP in una stringa leggibile.

Dettagli
Parametri
[in] aIpProto
Un numero di protocollo IP (enumerazione OT_IP6_PROTO_*).
Restituisce
Una stringa che rappresenta aIpProto.

otIp6RegisterMulticastListeners

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

Registra i listener multicast nel router backbone principale.

OPENTHREAD_CONFIG_TMF_PROXY_MLR_ENABLE e OPENTHREAD_CONFIG_COMMISSIONER_ENABLE devono essere attivati.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aAddresses
Un array di indirizzi multicast da registrare.
[in] aAddressNum
Il numero di indirizzi multicast da registrare (0 se aAddresses è NULL).
[in] aTimeout
Un puntatore al valore di timeout (in secondi) da includere in MLR.req. Un valore di timeout pari a 0 rimuove il listener multicast corrispondente. Se NULL, MLR.req non dispone di Timeout Tlv per impostazione predefinita.
[in] aCallback
Un puntatore alla funzione di callback.
[in] aContext
Un puntatore al contesto dell'utente.
Valori restituiti
OT_ERROR_NONE
MLR.req inviato correttamente aCallback verrà chiamato se questo metodo restituisce OT_ERROR_NONE.
OT_ERROR_BUSY
Se era in corso una registrazione precedente.
OT_ERROR_INVALID_ARGS
Se uno o più argomenti non sono validi.
OT_ERROR_INVALID_STATE
Se lo stato del dispositivo non era valido per inviare MLR.req (ad es. Commissioner non avviato, router backbone principale non trovato).
OT_ERROR_NO_BUFS
Se i buffer dei messaggi disponibili non sono sufficienti.
Vedi anche:
otIp6RegisterMulticastListenersCallback

otIp6RemoveAllUnsecurePorts

void otIp6RemoveAllUnsecurePorts(
  otInstance *aInstance
)

Rimuove tutte le porte dall'elenco delle porte non sicure consentite.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.

otIp6RemoveUnicastAddress

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

Rimuove un indirizzo interfaccia di rete dall'interfaccia Thread.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aAddress
Un puntatore a un indirizzo IP.
Valori restituiti
OT_ERROR_NONE
L'indirizzo dell'interfaccia di rete è stato rimosso.
OT_ERROR_INVALID_ARGS
L'indirizzo IP indicato da aAddress è un indirizzo interno.
OT_ERROR_NOT_FOUND
Impossibile trovare l'indirizzo IP indicato da aAddress.

otIp6RemoveUnsecurePort

otError otIp6RemoveUnsecurePort(
  otInstance *aInstance,
  uint16_t aPort
)

Rimuove una porta dall'elenco delle porte non sicure consentite.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aPort
Il valore della porta.
Valori restituiti
OT_ERROR_NONE
La porta è stata rimossa dall'elenco delle porte non sicure consentite.
OT_ERROR_INVALID_ARGS
La porta non è valida (il valore 0 è riservato per uso interno).
OT_ERROR_NOT_FOUND
Impossibile trovare la porta nell'elenco delle porte non sicure.

otIp6ResetBorderRoutingCounters

void otIp6ResetBorderRoutingCounters(
  otInstance *aInstance
)

Reimposta i contatori del routing bordo.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.

otIp6SelectSourceAddress

otError otIp6SelectSourceAddress(
  otInstance *aInstance,
  otMessageInfo *aMessageInfo
)

Esegui la selezione dell'indirizzo di origine OpenThread.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in,out] aMessageInfo
Un puntatore alle informazioni del messaggio.
Valori restituiti
OT_ERROR_NONE
È stato trovato un indirizzo di origine che è stato compilato in mSockAddr di aMessageInfo.
OT_ERROR_NOT_FOUND
Non è stato trovato alcun indirizzo di origine e il valore aMessageInfo è rimasto invariato.

otIp6Send

otError otIp6Send(
  otInstance *aInstance,
  otMessage *aMessage
)

Invia un datagramma IPv6 tramite l'interfaccia Thread.

Il chiamante trasferisce la proprietà di aMessage quando effettui questa chiamata. OpenThread libererà aMessage al termine dell'elaborazione, anche quando viene restituito un valore diverso da OT_ERROR_NONE.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aMessage
Un puntatore al buffer dei messaggi contenente il datagramma IPv6.
Valori restituiti
OT_ERROR_NONE
Messaggio elaborato correttamente.
OT_ERROR_DROP
Il formato del messaggio è corretto, ma non è stato elaborato completamente a causa delle regole di elaborazione dei pacchetti.
OT_ERROR_NO_BUFS
Impossibile allocare i buffer dei messaggi necessari durante l'elaborazione del datagramma.
OT_ERROR_NO_ROUTE
Nessun percorso all'host.
OT_ERROR_INVALID_SOURCE_ADDRESS
L'indirizzo di origine non è valido, ad esempio un indirizzo anycast o multicast.
OT_ERROR_PARSE
È stata rilevata un'intestazione non corretta durante l'elaborazione del messaggio.
OT_ERROR_INVALID_ARGS
I metadati del messaggio non sono validi, ad esempio il messaggio utilizza OT_MESSAGE_ORIGIN_THREAD_NETIF come origine.

otIp6SetAddressCallback

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

Registra un callback per notificare le modifiche all'indirizzo IPv6 interno.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aCallback
Un puntatore a una funzione che viene richiamata quando un indirizzo IPv6 interno viene aggiunto o rimosso. NULL per disattivare il callback.
[in] aCallbackContext
Un puntatore al contesto specifico dell'applicazione.

otIp6SetEnabled

otError otIp6SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Porta in alto o in basso l'interfaccia IPv6.

Richiamare questa opzione per attivare o disattivare la comunicazione IPv6.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aEnabled
TRUE per abilitare IPv6, FALSE in caso contrario.
Valori restituiti
OT_ERROR_NONE
Attivazione/disattivazione dell'interfaccia IPv6 riuscita.
OT_ERROR_INVALID_STATE
L'interfaccia IPv6 non è disponibile perché il dispositivo funziona in modalità di link non elaborati (applicabile solo quando è abilitata la funzionalità OPENTHREAD_CONFIG_LINK_RAW_ENABLE).

otIp6SetMeshLocalIid

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

Imposta l'IID locale mesh (a scopo di test).

Richiede OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aIid
Un puntatore all'IID locale mesh da impostare.
Valori restituiti
OT_ERROR_NONE
Impostazione dell'IID locale mesh riuscita.
OT_ERROR_INVALID_STATE
I protocolli Thread sono abilitati.

otIp6SetMulticastPromiscuousEnabled

void otIp6SetMulticastPromiscuousEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Attiva o disattiva la modalità promiscuo multicast nell'interfaccia Thread.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aEnabled
TRUE per abilitare la modalità promiscuo multicast, altrimenti FALSE.
Vedi anche:
otIp6IsMulticastPromiscuousEnabled

otIp6SetReceiveCallback

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

Registra un callback per fornire i datagrammi IPv6 ricevuti.

Per impostazione predefinita, questo callback non passa il traffico di controllo Thread. Vedi otIp6SetReceiveFilterEnabled() per modificare l'impostazione del filtro del traffico del controllo Thread.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aCallback
Un puntatore a una funzione chiamata quando viene ricevuto un datagramma IPv6 oppure NULL per disattivare il callback.
[in] aCallbackContext
Un puntatore al contesto specifico dell'applicazione.
Vedi anche:
otIp6IsReceiveFilterEnabled
otIp6SetReceiveFilterEnabled

otIp6SetReceiveFilterEnabled

void otIp6SetReceiveFilterEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Consente di impostare se il traffico di controllo Thread viene filtrato o meno durante la distribuzione di datagrammi IPv6 tramite il callback specificato in otIp6SetReceiveCallback().

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aEnabled
TRUE se il traffico di controllo Thread viene filtrato, altrimenti FALSE.
Vedi anche:
otIp6SetReceiveCallback
otIsRiceviIp6FilterEnabled

otIp6SetSlaacEnabled

void otIp6SetSlaacEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Attiva/disattiva il modulo SLAAC.

La funzionalità OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE in fase di build deve essere abilitata.

Quando il modulo SLAAC è abilitato, gli indirizzi SLAAC (basati sui prefissi on-mesh nei dati di rete) vengono aggiunti all'interfaccia. Quando il modulo SLAAC viene disattivato, qualsiasi indirizzo SLAAC aggiunto in precedenza viene rimosso.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aEnabled
TRUE per abilitarla, FALSE per disabilitarla.

otIp6SetSlaacPrefixFilter

void otIp6SetSlaacPrefixFilter(
  otInstance *aInstance,
  otIp6SlaacPrefixFilter aFilter
)

Imposta il gestore dei filtri del modulo SLAAC.

La funzionalità OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE in fase di build deve essere abilitata.

Il gestore dei filtri viene chiamato dal modulo SLAAC quando sta per aggiungere un indirizzo SLAAC basato su un prefisso per decidere se aggiungere o meno l'indirizzo.

Un gestore di filtri NULL disabilita i filtri e consente l'aggiunta di tutti gli indirizzi SLAAC.

Se questa funzione non viene richiamata, il filtro predefinito utilizzato dal modulo SLAAC sarà NULL (il filtro è disabilitato).

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aFilter
Un puntatore al gestore dei filtri con prefisso SLAAC oppure NULL per disattivare il filtro.

otIp6SockAddrToString

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

Converte un determinato indirizzo socket IPv6 in una stringa leggibile.

La stringa dell'indirizzo socket IPv6 ha il formato [address]:port, dove address viene mostrato come 16 valori esadecimali separati da : e port è il numero di porta in formato decimale, ad esempio "[%x:%x:...:%x]:%u".

Se la stringa risultante non rientra in aBuffer (all'interno dei suoi aSize caratteri), la stringa viene troncata, ma la stringa restituita è sempre con terminazione null.

Dettagli
Parametri
[in] aSockAddr
Un puntatore a un indirizzo socket IPv6 (NON DEVE essere NULL).
[out] aBuffer
Un puntatore a un array di caratteri per generare la stringa (NON DEVE essere NULL).
[in] aSize
La dimensione di aBuffer (in byte). Si consiglia di utilizzare OT_IP6_SOCK_ADDR_STRING_SIZE.

otIp6SubscribeMulticastAddress

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

Sottoscrive l'interfaccia Thread a un indirizzo Network Interface Multicast.

Il valore passato nell'istanza aAddress verrà copiato dall'interfaccia Thread. L'interfaccia Thread supporta solo un numero fisso di indirizzi multicast aggiunti esternamente. Leggi i OPENTHREAD_CONFIG_IP6_MAX_EXT_MCAST_ADDRS.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aAddress
Un puntatore a un indirizzo IP.
Valori restituiti
OT_ERROR_NONE
Sottoscrizione dell'indirizzo multicast interfaccia di rete eseguita correttamente.
OT_ERROR_ALREADY
L'indirizzo multicast è già iscritto.
OT_ERROR_INVALID_ARGS
L'indirizzo IP indicato da aAddress è un indirizzo multicast non valido.
OT_ERROR_REJECTED
L'indirizzo IP indicato da aAddress è un indirizzo multicast interno.
OT_ERROR_NO_BUFS
L'interfaccia di rete memorizza già il numero massimo consentito di indirizzi multicast esterni.

otIp6UnsubscribeMulticastAddress

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

Annulla l'iscrizione dell'interfaccia Thread a un indirizzo di interfaccia multicast di interfaccia di rete.

Dettagli
Parametri
[in] aInstance
Un puntatore a un'istanza OpenThread.
[in] aAddress
Un puntatore a un indirizzo IP.
Valori restituiti
OT_ERROR_NONE
Iscrizione all'indirizzo multicast interfaccia di rete annullata correttamente.
OT_ERROR_REJECTED
L'indirizzo IP indicato da aAddress è un indirizzo interno.
OT_ERROR_NOT_FOUND
Impossibile trovare l'indirizzo IP indicato da aAddress.

Macro

OT_IP6_ADDRESS_SIZE

 OT_IP6_ADDRESS_SIZE 16

Dimensioni di un indirizzo IPv6 (byte)

OT_IP6_ADDRESS_STRING_SIZE

 OT_IP6_ADDRESS_STRING_SIZE 40

Dimensione consigliata per la rappresentazione stringa di un indirizzo IPv6.

OT_IP6_HEADER_PROTO_OFFSET

 OT_IP6_HEADER_PROTO_OFFSET 6

Offset del campo proto nell'intestazione IPv6 (byte)

OT_IP6_HEADER_SIZE

 OT_IP6_HEADER_SIZE 40

Dimensioni di un'intestazione IPv6 (byte)

OT_IP6_IID_SIZE

 OT_IP6_IID_SIZE 8

Dimensioni di un identificatore di interfaccia IPv6 (byte)

OT_IP6_MAX_MLR_ADDRESSES

 OT_IP6_MAX_MLR_ADDRESSES 15

Numero massimo di indirizzi IPv6 supportati dalla registrazione del listener multicast.

OT_IP6_PREFIX_BITSIZE

 OT_IP6_PREFIX_BITSIZE (OT_IP6_PREFIX_SIZE * 8)

Dimensione di un prefisso IPv6 (bit)

OT_IP6_PREFIX_SIZE

 OT_IP6_PREFIX_SIZE 8

Dimensioni di un prefisso IPv6 (byte)

OT_IP6_PREFIX_STRING_SIZE

 OT_IP6_PREFIX_STRING_SIZE 45

Dimensione consigliata per la rappresentazione stringa di un prefisso IPv6.

OT_IP6_SOCK_ADDR_STRING_SIZE

 OT_IP6_SOCK_ADDR_STRING_SIZE 48

Dimensione consigliata per la rappresentazione stringa di un indirizzo socket IPv6.

Risorse

Gli argomenti di riferimento dell'API OpenThread provengono dal codice sorgente, disponibile su GitHub. Per saperne di più o per contribuire alla nostra documentazione, consulta la sezione Risorse.