RTI Connext DDS Micro C API  Version 4.1.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
NETIO DGRAM API

NETIO DGRAM Interface. More...

Data Structures

struct  NETIO_DGRAM_InterfaceMultiCastGroup
 <<eXtension>> <<cert>> . More...
struct  NETIO_DGRAM_InterfaceTableEntry
 <<eXtension>> <<cert>> . More...
struct  NETIO_DGRAM_InterfaceRouteEntry
 <<eXtension>> <<cert>> . More...
struct  NETIO_DGRAM_InterfaceTableEntrySeq
 A sequence of NETIO_DGRAMInterfaceTableEntry elements. More...
struct  NETIO_DGRAM_InterfaceI
 <<eXtension>> <<cert>> . More...

Macros

#define NETIO_DGRAM_INTERFACE_SHARED_PORT_FLAG   (0x1U)
 Flag that indicates that an interface uses shared ports.
#define NETIO_DGRAM_INTERFACE_MAX_INTERFACES   (8)
 The maximum number of network interfaces a NETIO_DGRAM Transport instance can manage.
#define NETIO_DGRAM_INTERFACE_MAX_ADDRESSES   (8)
 The maximum number of addresses which can be returned in an address reservation request.
#define NETIO_DGRAM_InterfaceMultiCastGroup_INITIALIZER
 Constant to initialize a NETIO_DGRAM_InterfaceMultiCastGroup attribute as empty.
#define NETIO_DGRAM_InterfaceMultiCastGroup_Invalid
 Constant to initialize a NETIO_DGRAM_InterfaceMultiCastGroup attribute as invalid.
#define NETIO_DGRAM_InterfaceMultiCastGroup_UDPv4
 Constant to initialize a NETIO_DGRAM_InterfaceMultiCastGroup attribute as a UDPv4.
#define NETIO_DGRAM_InterfaceMultiCastGroup_UDPv6
 Constant to initialize a NETIO_DGRAM_InterfaceMultiCastGroup attribute as a UDPv6 multicast group.
#define NETIO_DGRAM_InterfaceTableEntry_INITIALIZER
 Constant to initialize an NETIO_DGRAM_InterfaceTableEntry attribute as an empty entry.
#define NETIO_DGRAM_InterfaceTableEntrySeq_INITIALIZER   REDA_DEFINE_SEQUENCE_INITIALIZER(struct NETIO_DGRAM_InterfaceTableEntry)
 Constant to initialize a NETIO_DGRAM_InterfaceTableEntry as empty.

Typedefs

typedef NETIO_Interface_T *(* NETIO_DGRAM_Interface_createFunc )(NETIO_Interface_T *upstream, void *property)
 The NETIO_DGRAM create interface function required by NETIO_DGRAM_InterfaceI.
typedef RTI_BOOL(* NETIO_DGRAMUserInterface_get_interface_listFunc )(NETIO_Interface_T *user_intf, struct NETIO_DGRAM_InterfaceTableEntrySeq *if_table)
 NETIO_DGRAM get interface list function required by NETIO_DGRAM_InterfaceI.
typedef RTI_BOOL(* NETIO_DGRAMUserInterface_resolve_addressFunc )(NETIO_Interface_T *netio_intf, const struct NETIO_DGRAM_InterfaceTableEntry *if_entry, const char *address_string, struct NETIO_Address *address_value, RTI_BOOL *is_invalid)
 NETIO_DGRAM address resolve function.
typedef RTI_BOOL(* NETIO_DGRAMUserInterface_bind_addressFunc )(NETIO_Interface_T *user_intf, struct NETIO_Address *source)
 NETIO_DGRAM bind address function. by NETIO_DGRAM_InterfaceI.
typedef void(* NETIO_DGRAMUserInterface_deleteFunc )(NETIO_Interface_T *user_intf)
 The NETIO_DGRAM delete interface function. NOT in CERT.
typedef struct
NETIO_DGRAM_InterfaceI 
NETIO_DGRAM_InterfaceI
 <<eXtension>> <<cert>> .

Functions

NETIO_DGRAMDllExport RTI_BOOL NETIO_DGRAM_InterfaceFactory_register (RT_Registry_T *registry, const char *name, NETIO_DGRAM_InterfaceI *user_intf, void *user_property)
 Register the DGRAM interface.
NETIO_DGRAMDllExport RTI_BOOL NETIO_DGRAM_InterfaceFactory_unregister (RT_Registry_T *registry, const char *name)
 Unregister the DGRAM interface.
NETIO_DGRAMDllExport RTI_BOOL NETIO_DGRAM_Interface_add_route_to_seq (struct NETIO_AddressSeq *address_seq, struct NETIO_NetmaskSeq *netmask_seq, const struct NETIO_Address *address, const struct NETIO_Netmask *netmask)
 Adds the address and netmask to the respective sequences.
NETIO_DGRAMDllExport RTI_BOOL NETIO_DGRAM_Interface_add_route_entry_to_seq (struct NETIO_AddressSeq *address_seq, struct NETIO_NetmaskSeq *netmask_seq, const struct NETIO_DGRAM_InterfaceRouteEntry *entry)
 Add a route entry to address and netmask sequence.

Variables

struct
NETIO_DGRAM_InterfaceRouteEntry 
NETIO_ADDRESS_UDPv4_ANY_UNICAST_ROUTE
 Constant to initialize a UDPv4 unicast route.
struct
NETIO_DGRAM_InterfaceRouteEntry 
NETIO_ADDRESS_UDPv4_ANY_MULTICAST_ROUTE
 Constant to initialize UDPv4 multicast route.
struct
NETIO_DGRAM_InterfaceRouteEntry 
NETIO_ADDRESS_UDPv6_ANY_UNICAST_ROUTE
 Constant to initialize a UDPv6 unicast route.
struct
NETIO_DGRAM_InterfaceRouteEntry 
NETIO_ADDRESS_UDPv6_ANY_MULTICAST_ROUTE
 Constant to initialize UDPv6 multicast route.

Detailed Description

NETIO DGRAM Interface.

<<eXtension>> <<cert>> The NETIO DGRAM implements the RTI Connext DDS Micro NETIO interface and exposes a subset of the interface enabling users to write an integration with concrete network interface.


Macro Definition Documentation

#define NETIO_DGRAM_INTERFACE_SHARED_PORT_FLAG   (0x1U)

Flag that indicates that an interface uses shared ports.

RTI Connext DDS Micro uses Locators to specify transport addresses to send and receive data. A Locator consists of a kind, port, and a transport address. The kind indicates the type of transport, such as UDPv4, the port is used to reach a DDS DomainParticipant, and the address is used to reach the destination transport. RTI Connext DDS Micro can work with two different types of transports, one that uses shared ports and one that does not.

When a transport uses shared ports, it does not matter which transport address a message was received on; only the port matters. For example, if a computer has two network interfaces A and B and is listening for messages on port P, it does not matter if the message is received on A or B. That is, as long as the message is received on any network interface capable of receiving on port P, the message is accepted.

When a transport does not use shared ports it means it does matter which transport address a message was received on. For example, if a computer has two network interfaces A and B and is listening for messages on port P, but has only specified that the A should receive on port P, then messages received on interface B and port P are ignored.

RTI Connext DDS Micro support this flag on per RTI Connext DDS Micro transport basis.

It is important to note that when a message is accepted, it is routed to all relevant DDS datareaders and datawriters. Thus, this feature cannot be used to control that some DDS topics should only be accepted when received on a specific transport interface. However, this feature could be useful to allow different DDS DomainParticipants to use the same port, but with different network interfaces.

#define NETIO_DGRAM_INTERFACE_MAX_INTERFACES   (8)

The maximum number of network interfaces a NETIO_DGRAM Transport instance can manage.

Each NETIO_DGRAM Transport instance is associated with network interface as returned by the NETIO_DGRAM_InterfaceTableEntrySeq. The maximum number of interfaces that can be managed by NETIO_DGRAM is NETIO_DGRAMINTERFACE_MAX_INTERFACES.

#define NETIO_DGRAM_INTERFACE_MAX_ADDRESSES   (8)

The maximum number of addresses which can be returned in an address reservation request.

Each NETIO_DGRAM Transport instance receives address reservation requests to reserve addresses to receive discovery and user data based on. The maximum number of addresses that can be reserved in a single request is NETIO_DGRAM_INTERFACE_MAX_ADDRESSES.

#define NETIO_DGRAM_InterfaceMultiCastGroup_INITIALIZER
Value:
{\
NETIO_Address_INITIALIZER,\
NETIO_Address_INITIALIZER,\
NETIO_Netmask_INITIALIZER\
}

Constant to initialize a NETIO_DGRAM_InterfaceMultiCastGroup attribute as empty.

#define NETIO_DGRAM_InterfaceMultiCastGroup_Invalid
Value:
{\
{-1,0,{{0,0,0,0}},{0}},\
{-1,0,{{0,0,0,0}},{0}},\
{0,{0,0,0,0}} \
}

Constant to initialize a NETIO_DGRAM_InterfaceMultiCastGroup attribute as invalid.

#define NETIO_DGRAM_InterfaceMultiCastGroup_UDPv4
Value:
{\
{NETIO_ADDRESS_KIND_UDPv4,0,{{NETIO_htonl(0xe0000000),0,0,0}},{0}},\
{NETIO_ADDRESS_KIND_UDPv4,0,{{NETIO_htonl(0xefffffff),0,0,0}},{0}},\
{4,{0,0,0,0}} \
}

Constant to initialize a NETIO_DGRAM_InterfaceMultiCastGroup attribute as a UDPv4.

#define NETIO_DGRAM_InterfaceMultiCastGroup_UDPv6
Value:
{\
{NETIO_ADDRESS_KIND_UDPv6,0,{{NETIO_htonl(0xff000000),0,0,0}},{0}},\
{NETIO_ADDRESS_KIND_UDPv6,0,{{0xffffffff,0xffffffff,0xffffffff,0xffffffff}},{0}},\
{8,{0,0,0,0}} \
}

Constant to initialize a NETIO_DGRAM_InterfaceMultiCastGroup attribute as a UDPv6 multicast group.

#define NETIO_DGRAM_InterfaceTableEntry_INITIALIZER
Value:
{\
0U,\
0U,\
0U,\
NETIO_Address_INITIALIZER,\
NETIO_DGRAM_InterfaceMultiCastGroup_INITIALIZER,\
NULL\
}

Constant to initialize an NETIO_DGRAM_InterfaceTableEntry attribute as an empty entry.

#define NETIO_DGRAM_InterfaceTableEntrySeq_INITIALIZER   REDA_DEFINE_SEQUENCE_INITIALIZER(struct NETIO_DGRAM_InterfaceTableEntry)

Constant to initialize a NETIO_DGRAM_InterfaceTableEntry as empty.


Typedef Documentation

typedef NETIO_Interface_T*(* NETIO_DGRAM_Interface_createFunc)(NETIO_Interface_T *upstream, void *property)

The NETIO_DGRAM create interface function required by NETIO_DGRAM_InterfaceI.

typedef RTI_BOOL(* NETIO_DGRAMUserInterface_get_interface_listFunc)(NETIO_Interface_T *user_intf, struct NETIO_DGRAM_InterfaceTableEntrySeq *if_table)

NETIO_DGRAM get interface list function required by NETIO_DGRAM_InterfaceI.

typedef RTI_BOOL(* NETIO_DGRAMUserInterface_resolve_addressFunc)(NETIO_Interface_T *netio_intf, const struct NETIO_DGRAM_InterfaceTableEntry *if_entry, const char *address_string, struct NETIO_Address *address_value, RTI_BOOL *is_invalid)

NETIO_DGRAM address resolve function.

typedef RTI_BOOL(* NETIO_DGRAMUserInterface_bind_addressFunc)(NETIO_Interface_T *user_intf, struct NETIO_Address *source)

NETIO_DGRAM bind address function. by NETIO_DGRAM_InterfaceI.

typedef void(* NETIO_DGRAMUserInterface_deleteFunc)(NETIO_Interface_T *user_intf)

The NETIO_DGRAM delete interface function. NOT in CERT.


Function Documentation

NETIO_DGRAMDllExport RTI_BOOL NETIO_DGRAM_InterfaceFactory_register ( RT_Registry_T *  registry,
const char *  name,
NETIO_DGRAM_InterfaceI user_intf,
void *  user_property 
)

Register the DGRAM interface.

Registers the DGRAM interface component factory, sets the interface name, sets the instance's properties, and the user interface operations.

The interface operations are the supporting network layer functions that the DGRAM uses for it's routing, binding, and communication with peer NETIO.

Parameters:
[in]registryRegistry instance.
[in]nameInterface name to register.
[in]user_intfUser interface.
[in]user_propertyUser defined property.
Returns:
RTI_TRUE on success, RTI_FALSE on failure.
MT Safety:
This operation is not thread safe.
NETIO_DGRAMDllExport RTI_BOOL NETIO_DGRAM_InterfaceFactory_unregister ( RT_Registry_T *  registry,
const char *  name 
)

Unregister the DGRAM interface.

Unregister the DGRAM interface.

Parameters:
[in]registryRegistry instance.
[in]nameInterface name to unregister.
Returns:
RTI_TRUE on success, RTI_FALSE on failure.
MT Safety:
This operation is not thread safe.
NETIO_DGRAMDllExport RTI_BOOL NETIO_DGRAM_Interface_add_route_to_seq ( struct NETIO_AddressSeq address_seq,
struct NETIO_NetmaskSeq netmask_seq,
const struct NETIO_Address address,
const struct NETIO_Netmask netmask 
)

Adds the address and netmask to the respective sequences.

Sets the address and netmask to the repsective sequence.

Parameters:
[in,out]address_seqThe address sequence to add to.
[in,out]netmask_seqThe netmask sequence to add to.
[in]addressThe address to add.
[in]netmaskThe netmask to add.
Returns:
RTI_TRUE on success, RTI_FALSE on failure.
MT Safety:
UNSAFE. This operation is not thread safe. This operation does not protect the source or destination from being modified by another thread while the source is being copied to the destination.
NETIO_DGRAMDllExport RTI_BOOL NETIO_DGRAM_Interface_add_route_entry_to_seq ( struct NETIO_AddressSeq address_seq,
struct NETIO_NetmaskSeq netmask_seq,
const struct NETIO_DGRAM_InterfaceRouteEntry entry 
)

Add a route entry to address and netmask sequence.

Adds the address_value to the address and route sequence.

Parameters:
[in,out]address_seqThe address sequence to add to.
[in,out]netmask_seqThe netmask sequence to add to.
[in]entryEntry to add.
Returns:
RTI_TRUE on success, RTI_FALSE on failure.
MT Safety:
UNSAFE. This operation is not thread safe. This operation does not protect the source or destination from being modified by another thread while the source is being copied to the destination.

Variable Documentation

struct NETIO_DGRAM_InterfaceRouteEntry NETIO_ADDRESS_UDPv4_ANY_UNICAST_ROUTE

Constant to initialize a UDPv4 unicast route.

RTI Connext DDS Micro uses an internal route table to determine which RTI Connext DDS Micro transport to use to send outgoing messages on (refer to NETIO_TransportI.get_route_table for details). The NETIO_ADDRESS_UDPv4_ANY_UNICAST_ROUTE can be used to configure a transport as being able to send messages to any UDPv4 address.

struct NETIO_DGRAM_InterfaceRouteEntry NETIO_ADDRESS_UDPv4_ANY_MULTICAST_ROUTE

Constant to initialize UDPv4 multicast route.

RTI Connext DDS Micro uses an internal route table to determine which RTI Connext DDS Micro transport to use to send outgoing messages on (refer to NETIO_TransportI.get_route_table for details). The NETIO_ADDRESS_UDPv4_ANY_MULTICAST_ROUTE can be used to configure a transport as being able to send messages to any UDPv4 multicast address.

struct NETIO_DGRAM_InterfaceRouteEntry NETIO_ADDRESS_UDPv6_ANY_UNICAST_ROUTE

Constant to initialize a UDPv6 unicast route.

RTI Connext DDS Micro uses an internal route table to determine which RTI Connext DDS Micro transport to use to send outgoing messages on (refer to NETIO_TransportI.get_route_table for details). The NETIO_ADDRESS_UDPv6_ANY_UNICAST_ROUTE can be used to configure a transport as being able to send messages to any UDPv6 address.

struct NETIO_DGRAM_InterfaceRouteEntry NETIO_ADDRESS_UDPv6_ANY_MULTICAST_ROUTE

Constant to initialize UDPv6 multicast route.

RTI Connext DDS Micro uses an internal route table to determine which RTI Connext DDS Micro transport to use to send outgoing messages on (refer to NETIO_TransportI.get_route_table for details). The NETIO_ADDRESS_UDPv6_ANY_MULTICAST_ROUTE can be used to configure a transport as being able to send messages to any UDPv6 multicast address.


RTI Connext DDS Micro C API Version 4.1.0 Copyright © Sun Dec 8 2024 Real-Time Innovations, Inc