RTI Connext Modern C++ API  Version 5.3.1
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
UDPv6 Transport

Built-in transport plug-in using UDP/IPv6. More...

Classes

struct  NDDS_Transport_UDPv6_Property_t
 Configurable IPv6/UDP Transport-Plugin properties. More...
 

Macros

#define NDDS_TRANSPORT_UDPV6_ADDRESS_BIT_COUNT   (128)
 Default value of NDDS_Transport_Property_t::address_bit_count.
 
#define NDDS_TRANSPORT_UDPV6_PROPERTIES_BITMAP_DEFAULT   NDDS_TRANSPORT_UDP_PROPERTIES_BITMAP_DEFAULT
 Default value of NDDS_Transport_Property_t::properties_bitmap.
 
#define NDDS_TRANSPORT_UDPV6_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT   NDDS_TRANSPORT_UDP_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT
 Default value of NDDS_Transport_Property_t::gather_send_buffer_count_max.
 
#define NDDS_TRANSPORT_UDPV6_SOCKET_BUFFER_SIZE_OS_DEFAULT   NDDS_TRANSPORT_UDP_SOCKET_BUFFER_SIZE_OS_DEFAULT
 Used to specify that os default be used to specify socket buffer size.
 
#define NDDS_TRANSPORT_UDPV6_SEND_SOCKET_BUFFER_SIZE_DEFAULT   NDDS_TRANSPORT_UDP_SEND_SOCKET_BUFFER_SIZE_DEFAULT
 Default value of NDDS_Transport_Property_t::send_socket_buffer_size.
 
#define NDDS_TRANSPORT_UDPV6_RECV_SOCKET_BUFFER_SIZE_DEFAULT   NDDS_TRANSPORT_UDP_RECV_SOCKET_BUFFER_SIZE_DEFAULT
 Default value of NDDS_Transport_Property_t::recv_socket_buffer_size.
 
#define NDDS_TRANSPORT_UDPV6_PAYLOAD_SIZE_MAX   (65487)
 Maximum value of NDDS_Transport_Property_t::message_size_max.
 
#define NDDS_TRANSPORT_UDPV6_MESSAGE_SIZE_MAX_DEFAULT   NDDS_TRANSPORT_UDPV6_PAYLOAD_SIZE_MAX
 Default value of NDDS_Transport_Property_t::message_size_max.
 
#define NDDS_TRANSPORT_UDPV6_MULTICAST_TTL_DEFAULT   NDDS_TRANSPORT_UDP_MULTICAST_TTL_DEFAULT
 Default value of NDDS_Transport_UDPv6_Property_t::multicast_ttl.
 
#define NDDS_TRANSPORT_UDPV6_BLOCKING_NEVER
 Value for UDPv6Transport_Property_t::send_blocking to specify non-blocking sockets.
 
#define NDDS_TRANSPORT_UDPV6_BLOCKING_ALWAYS
 [default] Value for UDPv6Transport_Property_t::send_blocking to specify blocking sockets.
 
#define NDDS_TRANSPORT_UDPV6_PROPERTY_DEFAULT
 Use this to initialize a NDDS_Transport_UDP_Property_t structure.
 
#define NDDS_Transport_UDPv6_string_to_address_cEA   NDDS_Transport_UDP_string_to_address_cEA
 Realization of NDDS_Transport_String_To_Address_Fcn_cEA for IP transports.
 

Functions

NDDS_Transport_Plugin * NDDS_Transport_UDPv6_new (const struct NDDS_Transport_UDPv6_Property_t *property_in)
 Create an instance of a UDPv6 Transport Plugin.
 

Detailed Description

Built-in transport plug-in using UDP/IPv6.

This transport plugin uses UDPv6 sockets to send and receive messages. It supports both unicast and multicast communications in a single instance of the plugin. By default, this plugin will use all interfaces that it finds enabled and "UP" at instantiation time to send and receive messages.

The user can configure an instance of this plugin to only use unicast or only use multicast, see UDPv6Transport_Property_t::unicast_enabled and UDPv6Transport_Property_t::multicast_enabled.

In addition, the user can configure an instance of this plugin to selectively use the network interfaces of a node (and restrict a plugin from sending multicast messages on specific interfaces) by specifying the "white" and "black" lists in the base property's fields (Transport_Property_t::allow_interfaces_list, Transport_Property_t::deny_interfaces_list, Transport_Property_t::allow_multicast_interfaces_list, Transport_Property_t::deny_multicast_interfaces_list).

RTI Connext can implicitly create this plugin and register it with the dds::domain::DomainParticipant if this transport is specified in the rti::core::policy::TransportBuiltin.

To specify the properties of the builtin UDPv6 transport that is implicitly registered, you can either:

Note that all properties should be set before the transport is implicitly created and registered by RTI Connext. Any properties that are set after the builtin transport is registered will be ignored. See Built-in Transport Plugins for details on when a builtin transport is registered.

UDPv6 Transport Property Names in Property QoS Policy of Domain Participant

The following table lists the predefined property names that can be set in rti::core::policy::Property of a dds::domain::DomainParticipant to configure the builtin UDPv6 transport plugin.

Property Names for UDPv6 Transport Plugin
Property Name

Description

dds.transport.UDPv6.builtin.parent.address_bit_count See Transport_Property_t::address_bit_count
dds.transport.UDPv6.builtin.parent.properties_bitmap See Transport_Property_t::properties_bitmap
dds.transport.UDPv6.builtin.parent.gather_send_buffer_count_max See Transport_Property_t::gather_send_buffer_count_max
dds.transport.UDPv6.builtin.parent.message_size_max See Transport_Property_t::message_size_max
dds.transport.UDPv6.builtin.parent.allow_interfaces See Transport_Property_t::allow_interfaces_list and Transport_Property_t::allow_interfaces_list_length.
Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0
dds.transport.UDPv6.builtin.parent.deny_interfaces See Transport_Property_t::deny_interfaces_list and Transport_Property_t::deny_interfaces_list_length.
Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0
dds.transport.UDPv6.builtin.parent.allow_multicast_interfaces See Transport_Property_t::allow_multicast_interfaces_list and Transport_Property_t::allow_multicast_interfaces_list_length.
Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0
dds.transport.UDPv6.builtin.parent.deny_multicast_interfaces

See Transport_Property_t::deny_multicast_interfaces_list and Transport_Property_t::deny_multicast_interfaces_list_length. Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0

dds.transport.UDPv6.builtin.send_socket_buffer_size See UDPv6Transport_Property_t::send_socket_buffer_size
dds.transport.UDPv6.builtin.recv_socket_buffer_size See UDPv6Transport_Property_t::recv_socket_buffer_size
dds.transport.UDPv6.builtin.unicast_enabled See UDPv6Transport_Property_t::unicast_enabled
dds.transport.UDPv6.builtin.multicast_enabled See UDPv6Transport_Property_t::multicast_enabled
dds.transport.UDPv6.builtin.multicast_ttl See UDPv6Transport_Property_t::multicast_ttl
dds.transport.UDPv6.builtin.multicast_loopback_disabled See UDPv6Transport_Property_t::multicast_loopback_disabled
dds.transport.UDPv6.builtin.ignore_loopback_interface See UDPv6Transport_Property_t::ignore_loopback_interface
dds.transport.UDPv6.builtin.ignore_nonrunning_interfaces [DEPRECATED] See UDPv6Transport_Property_t::ignore_nonrunning_interfaces
dds.transport.UDPv6.builtin.no_zero_copy See UDPv6Transport_Property_t::no_zero_copy
dds.transport.UDPv6.builtin.send_blocking See UDPv6Transport_Property_t::send_blocking
dds.transport.UDPv6.builtin.enable_v4mapped See UDPv6Transport_Property_t::enable_v4mapped
dds.transport.UDPv6.builtin.transport_priority_mask See UDPv6Transport_Property_t::transport_priority_mask
dds.transport.UDPv6.builtin.transport_priority_mapping_low See UDPv6Transport_Property_t::transport_priority_mapping_low
dds.transport.UDPv6.builtin.transport_priority_mapping_high See UDPv6Transport_Property_t::transport_priority_mapping_high
dds.transport.UDPv6.builtin.send_ping See UDPv6Transport_Property_t::send_ping
dds.transport.UDPv6.builtin.interface_poll_period See UDPv6Transport_Property_t::interface_poll_period
dds.transport.UDPv6.builtin.reuse_multicast_receive_resource See UDPv6Transport_Property_t::reuse_multicast_receive_resource
dds.transport.UDPv6.builtin.protocol_overhead_max See UDPv6Transport_Property_t::protocol_overhead_max
dds.transport.UDPv6.builtin.disable_interface_tracking See UDPv6Transport_Property_t::disable_interface_tracking
dds.transport.UDPv6.builtin.public_address

See UDPv6Transport_Property_t::public_address

See Also
Transport_Support::set_builtin_transport_property()

Macro Definition Documentation

#define NDDS_TRANSPORT_UDPV6_ADDRESS_BIT_COUNT   (128)
#define NDDS_TRANSPORT_UDPV6_PROPERTIES_BITMAP_DEFAULT   NDDS_TRANSPORT_UDP_PROPERTIES_BITMAP_DEFAULT
#define NDDS_TRANSPORT_UDPV6_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT   NDDS_TRANSPORT_UDP_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT

Default value of NDDS_Transport_Property_t::gather_send_buffer_count_max.

This is also the maximum value that can be used when instantiating the udp transport.

16 is sufficient for NDDS, but more may improve discovery and reliable performance. Porting note: find out what the maximum gather buffer count is on your OS!

#define NDDS_TRANSPORT_UDPV6_SOCKET_BUFFER_SIZE_OS_DEFAULT   NDDS_TRANSPORT_UDP_SOCKET_BUFFER_SIZE_OS_DEFAULT

Used to specify that os default be used to specify socket buffer size.

#define NDDS_TRANSPORT_UDPV6_SEND_SOCKET_BUFFER_SIZE_DEFAULT   NDDS_TRANSPORT_UDP_SEND_SOCKET_BUFFER_SIZE_DEFAULT

Default value of NDDS_Transport_Property_t::send_socket_buffer_size.

#define NDDS_TRANSPORT_UDPV6_RECV_SOCKET_BUFFER_SIZE_DEFAULT   NDDS_TRANSPORT_UDP_RECV_SOCKET_BUFFER_SIZE_DEFAULT

Default value of NDDS_Transport_Property_t::recv_socket_buffer_size.

#define NDDS_TRANSPORT_UDPV6_PAYLOAD_SIZE_MAX   (65487)
#define NDDS_TRANSPORT_UDPV6_MESSAGE_SIZE_MAX_DEFAULT   NDDS_TRANSPORT_UDPV6_PAYLOAD_SIZE_MAX
#define NDDS_TRANSPORT_UDPV6_MULTICAST_TTL_DEFAULT   NDDS_TRANSPORT_UDP_MULTICAST_TTL_DEFAULT
#define NDDS_TRANSPORT_UDPV6_BLOCKING_NEVER

Value for UDPv6Transport_Property_t::send_blocking to specify non-blocking sockets.

#define NDDS_TRANSPORT_UDPV6_BLOCKING_ALWAYS

[default] Value for UDPv6Transport_Property_t::send_blocking to specify blocking sockets.

#define NDDS_TRANSPORT_UDPV6_PROPERTY_DEFAULT

Use this to initialize a NDDS_Transport_UDP_Property_t structure.

#define NDDS_Transport_UDPv6_string_to_address_cEA   NDDS_Transport_UDP_string_to_address_cEA

Realization of NDDS_Transport_String_To_Address_Fcn_cEA for IP transports.

Converts a host name string to a IPv6 address.

Parameters
selfNOT USED. May be NULL.
address_out<<out>> The corresponding numerical value in IPv6 format.
address_in<<in>> The name of the IPv6 address. It can be a dot notation name or a host name. If NULL, then the IP address of the localhost will be returned.
See Also
NDDS_Transport_String_To_Address_Fcn_cEA for complete documentation.

Function Documentation

NDDS_Transport_Plugin* NDDS_Transport_UDPv6_new ( const struct NDDS_Transport_UDPv6_Property_t property_in)

Create an instance of a UDPv6 Transport Plugin.

An application may create and register multiple instances of this Transport Plugin with RTI Connext. This may be to partition the network interfaces across multiple RTI Connext domains. However, note that the underlying transport, the operating system's IP layer, is still a "singleton". For example, if a unicast transport has already bound to a port, and another unicast transport tries to bind to the same port, the second attempt will fail.

The transport plugin honors the interface/multicast "white" and "black" lists specified in the NDDS_Transport_UDPv6_Property_t::parent:

The format of a string in these lists is assumed to be in standard IPv6 dot notation, possibly containing wildcards. For example:

  • 10.10.30.232
  • 10.10.*.*
  • 192.168.1.*
  • etc. Strings not in the correct format will be ignored.
Parameters
property_in<<in>> Desired behavior of this transport. May be NULL for default property.
Returns
A UDPv6 Transport Plugin instance on success; or NULL on failure.

RTI Connext Modern C++ API Version 5.3.1 Copyright © Mon Feb 19 2018 Real-Time Innovations, Inc