RTI Connext Micro C++ API Version 4.3.0
Loading...
Searching...
No Matches
UDP_InterfaceFactoryProperty Struct Reference

<<eXtension>> Properties for the UDP Transport. More...

#include <netio_udp.h>

Public Attributes

struct REDA_StringSeq allow_interface
 Sequence of allowed interface names.
 
struct REDA_StringSeq deny_interface
 Sequence of denied interface names. This list is checked after the allow_interface list.
 
RTI_INT32 max_send_buffer_size
 The size of the send socket buffer.
 
RTI_INT32 max_receive_buffer_size
 The size of the receive socket buffer.
 
RTI_INT32 max_message_size
 The maximum size of the message which can be sent or received.
 
RTI_INT32 max_send_message_size
 The maximum size of the message which can be sent. This is only a hint and not enforced.
 
RTI_INT32 multicast_ttl
 The maximum TTL.
 
struct UDP_NatEntrySeq nat
 Configure network address translation (NAT).
 
struct UDP_InterfaceTableEntrySeq if_table
 The interface table if interfaces are added manually.
 
REDA_String_T multicast_interface
 The network interface to use to send to multicast.
 
RTI_BOOL is_default_interface
 If this should be considered the default UDP interface if no other UDP interface is found to handle a route.
 
RTI_BOOL disable_auto_interface_config
 Disable reading of available network interfaces using system information and instead rely on the manually configured interface table.
 
RTI_BOOL multicast_loopback_disabled
 Prevents the transport plugin from putting multicast packets onto the loopback interface.
 
struct OSAPI_ThreadProperty recv_thread
 Thread properties for each receive thread created by this NETIO interface.
 
RTI_BOOL enable_interface_bind
 Bind receive sockets to specific interfaces.
 
RTI_BOOL disable_multicast_bind
 Disable a multicast receive socket binding to a multicast address.
 
RTI_BOOL disable_multicast_interface_select
 Do not select outgoing interfaces when sending to multicast groups.
 
struct UDP_TransformRuleSeq source_rules
 Rules for how to transform received UDP payloads based on the source address.
 
struct UDP_TransformRuleSeq destination_rules
 Rules for how to transform sent UDP payloads based on the destination address.
 
UDP_TransformUdpMode_T transform_udp_mode
 Determines how regular UDP is supported when transformations are supported.
 
RTI_INT32 transform_locator_kind
 The locator to use for locators that have transformations.
 
RTI_INT32 transport_priority_mapping_low
 Set low value of output range to IPv4 TOS.
 
RTI_INT32 transport_priority_mapping_high
 Highest transport priority value for DSCP mapping.
 
RTI_UINT32 transport_priority_mask
 Set mask for use of transport priority field.
 
RTI_UINT32 max_unicast_send_sockets
 The number of unicast send sockets to create per transport instance.
 

Detailed Description

<<eXtension>> Properties for the UDP Transport.

NOTE: some default values (or entire data fields) may not be used on certain platforms. Refer to the Platform Notes in the User's Manual for more details.

Member Data Documentation

◆ allow_interface

struct REDA_StringSeq UDP_InterfaceFactoryProperty::allow_interface

Sequence of allowed interface names.

◆ deny_interface

struct REDA_StringSeq UDP_InterfaceFactoryProperty::deny_interface

Sequence of denied interface names. This list is checked after the allow_interface list.

◆ max_send_buffer_size

RTI_INT32 UDP_InterfaceFactoryProperty::max_send_buffer_size

The size of the send socket buffer.

[default] 256 * 1024, 65535 for QNX (note)

◆ max_receive_buffer_size

RTI_INT32 UDP_InterfaceFactoryProperty::max_receive_buffer_size

The size of the receive socket buffer.

[default] 256 * 1024, 65535 for QNX (note)

◆ max_message_size

RTI_INT32 UDP_InterfaceFactoryProperty::max_message_size

The maximum size of the message which can be sent or received.

[default] 8 * 1024 (note) [range] 1 - UDP_MAX_PACKET_SIZE (65507) (note)

◆ max_send_message_size

RTI_INT32 UDP_InterfaceFactoryProperty::max_send_message_size

The maximum size of the message which can be sent. This is only a hint and not enforced.

This parameters is useful to UDP transformation functions which must allocate a buffer to put the result in.

[default] -1, but note that this is a place holder for UDP_MAX_MESSAGE_SIZE_UNLIMITED (note)

◆ multicast_ttl

RTI_INT32 UDP_InterfaceFactoryProperty::multicast_ttl

The maximum TTL.

[default] 1 (note)

◆ nat

struct UDP_NatEntrySeq UDP_InterfaceFactoryProperty::nat

Configure network address translation (NAT).

Configure network address translation (NAT). This feature only supports translation between a private and public IP address; UDP ports are not translated. Does not support any hole punching technique or WAN server, thus is only useful when the private and public address mapping is static. Please refer to UDP_NatEntrySeq for the definition of the sequence element.

◆ if_table

struct UDP_InterfaceTableEntrySeq UDP_InterfaceFactoryProperty::if_table

The interface table if interfaces are added manually.

◆ multicast_interface

REDA_String_T UDP_InterfaceFactoryProperty::multicast_interface

The network interface to use to send to multicast.

◆ is_default_interface

RTI_BOOL UDP_InterfaceFactoryProperty::is_default_interface

If this should be considered the default UDP interface if no other UDP interface is found to handle a route.

[default] 1 (RTI_TRUE) (note)

◆ disable_auto_interface_config

RTI_BOOL UDP_InterfaceFactoryProperty::disable_auto_interface_config

Disable reading of available network interfaces using system information and instead rely on the manually configured interface table.

[default] 0 (RTI_FALSE) (note)

◆ multicast_loopback_disabled

RTI_BOOL UDP_InterfaceFactoryProperty::multicast_loopback_disabled

Prevents the transport plugin from putting multicast packets onto the loopback interface.

If multicast loopback is disabled (this value is set to 1), then when sending multicast packets, RTI Connext DDS Micro will not put a copy of the packets on the loopback interface. This prevents applications on the same node (including itself) from receiving those packets.

This value is set to 0 by default, meaning multicast loopback is enabled.

Disabling multicast loopback (setting this value to 1) may result in minor performance gains when using multicast.

[default] 0 (RTI_FALSE) (note)

◆ recv_thread

struct OSAPI_ThreadProperty UDP_InterfaceFactoryProperty::recv_thread

Thread properties for each receive thread created by this NETIO interface.

[default] See ::DDS_UDP_THREAD_PROPERTY_DEFAULT for more detail (note)

◆ enable_interface_bind

RTI_BOOL UDP_InterfaceFactoryProperty::enable_interface_bind

Bind receive sockets to specific interfaces.

When this is set to 1, the UDP transport binds each receive port to a specific interface when the allow_interface/deny_interface lists are non-empty.

[default] 0 (note)

◆ disable_multicast_bind

RTI_BOOL UDP_InterfaceFactoryProperty::disable_multicast_bind

Disable a multicast receive socket binding to a multicast address.

NOTE: This option has no effect on Windows. On Windows a multicast socket is only bound to the UDP port.

The default value is 0, meaning that a multicast socket is bound to both the UDP port and multicast address.

When this is set to 1, the UDP transport binds a multicast receive socket only to the UDP port.

[default] 0 (note)

◆ disable_multicast_interface_select

RTI_BOOL UDP_InterfaceFactoryProperty::disable_multicast_interface_select

Do not select outgoing interfaces when sending to multicast groups.

The default value is 0 and RTI Connext DDS Micro will select the outgoing interfaces when sending to multicast either using the allow_interface and deny_interface properties, or the multicast_interface property.

When this is set to 1, RTI Connext DDS Micro will not select the outgoing interface when sending to multicast groups. This may be useful if the OS has fine grained control to select which interface should be used to send to multicast.

[default] 0 (note)

◆ source_rules

struct UDP_TransformRuleSeq UDP_InterfaceFactoryProperty::source_rules

Rules for how to transform received UDP payloads based on the source address.

◆ destination_rules

struct UDP_TransformRuleSeq UDP_InterfaceFactoryProperty::destination_rules

Rules for how to transform sent UDP payloads based on the destination address.

◆ transform_udp_mode

UDP_TransformUdpMode_T UDP_InterfaceFactoryProperty::transform_udp_mode

Determines how regular UDP is supported when transformations are supported.

[default] UDP_TRANSFORM_UDP_MODE_DISABLED (note)

◆ transform_locator_kind

RTI_INT32 UDP_InterfaceFactoryProperty::transform_locator_kind

The locator to use for locators that have transformations.

When transformation rules have been enabled, they are announced as a vendor-specific locator. This property overrides this value.

NOTE: Changing this value may prevent communication.

NOTE: Must be greater or equal than NETIO_ADDRESS_KIND_USER and not equal to NETIO_ADDRESS_KIND_SHMEM or NETIO_ADDRESS_KIND_INTRA.

[default] NETIO_ADDRESS_KIND_TUDPv4 (note)

◆ transport_priority_mapping_low

RTI_INT32 UDP_InterfaceFactoryProperty::transport_priority_mapping_low

Set low value of output range to IPv4 TOS.

This is used in conjunction with transport_priority_mask and transport_priority_mapping_high to define the mapping from the DDS transport priority to the IPv4 TOS field. Defines the low value of the output range for scaling.

Note that IPv4 TOS is generally an 8-bit value. The default value is 0.

◆ transport_priority_mapping_high

RTI_INT32 UDP_InterfaceFactoryProperty::transport_priority_mapping_high

Highest transport priority value for DSCP mapping.

When transport_priority_mask is non-zero, this value defines the highest transport priority value that will be mapped to DSCP. Transport priority values higher than this value will be mapped to DSCP 63.

The default value is 255.

◆ transport_priority_mask

RTI_UINT32 UDP_InterfaceFactoryProperty::transport_priority_mask

Set mask for use of transport priority field.

This is used in conjunction with transport_priority_mapping_low and transport_priority_mapping_high to define the mapping from the DDS transport priority to the IPv4 TOS field. Defines a contiguous region of bits in the 32-bit transport priority value that is used to generate values for the IPv4 TOS field on an outgoing socket. For example, the value 0x0000ff00 causes bits 9-16 (8 bits) to be used in the mapping. The value will be scaled from the mask range (0x0000 - 0xff00 in this case) to the range specified by low and high. If the mask is set to zero, then the transport will not set IPv4 TOS for send sockets.

◆ max_unicast_send_sockets

RTI_UINT32 UDP_InterfaceFactoryProperty::max_unicast_send_sockets

The number of unicast send sockets to create per transport instance.

By default, the transport uses a single socket per instance for outgoing unicast communication.

When this value is greater than 1, the transport creates the specified number of send sockets per instance for outgoing communication.

This setting is particularly useful when used with the TRANSPORT_PRIORITY QoS policy. When the transport creates multiple sockets, it maintains an internal priority-to-socket mapping. For each outgoing message, the transport computes the effective priority (after applying the configured priority mask and mapping range) and selects a preferred socket based on this mapping.

If the selected socket is already configured with the required priority, the transport sends the message immediately. Otherwise, the transport updates the socket’s IP_TOS value before transmission. Increasing the number of sockets therefore reduces the likelihood of runtime priority reconfiguration and can improve performance in systems that use multiple distinct priorities.

You can configure the value to match the total number of distinct effective priorities assigned to all DDSDataWriter and DDSDataReader instances using the interface. When the number of sockets is greater than or equal to the number of distinct effective priorities, each priority can be associated with a dedicated socket, eliminating the need for priority updates at runtime.

If the number of sockets is smaller than the number of distinct effective priorities, multiple priorities will share sockets. In this case, the transport distributes priorities evenly across the available sockets. However, because priorities are numeric values, certain structured priority sets (for example, DSCP codepoints that are spaced at regular intervals) may cluster onto the same socket depending on the configured socket count. For best distribution, avoid choosing a socket count that shares common divisors with typical priority spacing (for example, powers of 2 when using DSCP values that are multiples of 8).

NOTE: Increasing the number of sockets increases memory usage and file descriptor consumption. You should balance performance benefits against memory and resource overhead when selecting an appropriate value. [default] 1 (note)