11#ifndef transport_udpv6_h
12#define transport_udpv6_h
14#include "transport/transport_udp.h"
24#define NDDS_Transport_UDPv6 NDDS_Transport_UDP
26#define NDDS_Transport_UDPv6_InterfaceListener \
27 NDDS_Transport_UDP_InterfaceListener
45#ifdef DOXYGEN_DOCUMENTATION_ONLY
123#define NDDS_Transport_UDPv6_Property_t NDDS_Transport_UDP_Property_t
128#define NDDS_TRANSPORT_UDPV6_CLASS_NAME "udpv6"
133#define NDDS_TRANSPORT_BUILTIN_UDPV6_ALIAS "builtin.udpv6"
138#define NDDS_TRANSPORT_UDPV6_ADDRESS_BIT_COUNT (128)
143#define NDDS_TRANSPORT_UDPV6_PROPERTIES_BITMAP_DEFAULT \
144 NDDS_TRANSPORT_UDP_PROPERTIES_BITMAP_DEFAULT
157#define NDDS_TRANSPORT_UDPV6_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT \
158 NDDS_TRANSPORT_UDP_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT
162#define NDDS_TRANSPORT_UDPV6_SOCKET_BUFFER_SIZE_OS_MAX \
163 NDDS_TRANSPORT_UDP_SOCKET_BUFFER_SIZE_OS_MAX
167#define NDDS_TRANSPORT_UDPV6_SOCKET_BUFFER_SIZE_OS_DEFAULT \
168 NDDS_TRANSPORT_UDP_SOCKET_BUFFER_SIZE_OS_DEFAULT
172#define NDDS_TRANSPORT_UDPV6_SEND_SOCKET_BUFFER_SIZE_DEFAULT \
173 NDDS_TRANSPORT_UDP_SEND_SOCKET_BUFFER_SIZE_DEFAULT
177#define NDDS_TRANSPORT_UDPV6_RECV_SOCKET_BUFFER_SIZE_DEFAULT \
178 NDDS_TRANSPORT_UDP_RECV_SOCKET_BUFFER_SIZE_DEFAULT
183#define NDDS_TRANSPORT_UDPV6_PAYLOAD_SIZE_MAX (65487)
189 #define NDDS_TRANSPORT_UDPV6_MESSAGE_SIZE_MAX_DEFAULT (9196)
191 #define NDDS_TRANSPORT_UDPV6_MESSAGE_SIZE_MAX_DEFAULT \
192 NDDS_TRANSPORT_UDPV6_PAYLOAD_SIZE_MAX
195#define NDDS_TRANSPORT_UDPV6_DATAGRAM_LENGTH_MAX \
196 NDDS_TRANSPORT_UDP_DATAGRAM_LENGTH_MAX
201#define NDDS_TRANSPORT_UDPV6_MULTICAST_TTL_DEFAULT \
202 NDDS_TRANSPORT_UDP_MULTICAST_TTL_DEFAULT
204#define NDDS_TRANSPORT_UDPV6_USE_MULTICAST_DEFAULT \
205 NDDS_TRANSPORT_UDP_USE_MULTICAST_DEFAULT
210#define NDDS_TRANSPORT_UDPV6_IGNORE_LOOPBACK_DISABLED \
211 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_DISABLED
215#define NDDS_TRANSPORT_UDPV6_IGNORE_LOOPBACK_ENABLED \
216 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_ENABLED
220#define NDDS_TRANSPORT_UDPV6_IGNORE_LOOPBACK_AUTO \
221 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_AUTO
226#define NDDS_TRANSPORT_UDPV6_BLOCKING_NEVER NDDS_TRANSPORT_UDP_BLOCKING_NEVER
230#define NDDS_TRANSPORT_UDPV6_BLOCKING_ALWAYS NDDS_TRANSPORT_UDP_BLOCKING_ALWAYS
231#define NDDS_TRANSPORT_UDPV6_BLOCKING_UNICAST_ONLY \
232 NDDS_TRANSPORT_UDP_BLOCKING_UNICAST_ONLY
234#define NDDS_TRANSPORT_UDPV6_BLOCKING_DEFAULT \
235 NDDS_TRANSPORT_UDP_BLOCKING_DEFAULT
238#define NDDS_TRANSPORT_UDPV6_PROPERTY_DEFAULT \
241 NDDS_TRANSPORT_CLASSID_UDPv6, \
242 NDDS_TRANSPORT_UDPV6_ADDRESS_BIT_COUNT, \
243 NDDS_TRANSPORT_UDPV6_PROPERTIES_BITMAP_DEFAULT, \
244 NDDS_TRANSPORT_UDPV6_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT, \
245 NDDS_TRANSPORT_UDPV6_MESSAGE_SIZE_MAX_DEFAULT, \
254 NDDS_TRANSPORT_UUID_UNKNOWN, \
258 NDDS_TRANSPORT_LENGTH_UNLIMITED, \
260 NDDS_TRANSPORT_UDPV6_SEND_SOCKET_BUFFER_SIZE_DEFAULT, \
261 NDDS_TRANSPORT_UDPV6_RECV_SOCKET_BUFFER_SIZE_DEFAULT, \
265 NDDS_TRANSPORT_UDPV6_USE_MULTICAST_DEFAULT,
267 NDDS_TRANSPORT_UDPV6_MULTICAST_TTL_DEFAULT, 0,
270 NDDS_TRANSPORT_UDPV6_IGNORE_LOOPBACK_AUTO,
275 NDDS_TRANSPORT_UDPV6_BLOCKING_DEFAULT, 0,
296 RTI_OSAPI_RTPS_GUID_PREFIX_UNKNOWN \
303#define NDDS_Transport_UDPv6_InterfaceListener \
304 NDDS_Transport_UDP_InterfaceListener
307#define NDDS_Transport_UDPv6_Interface_Filter_Fcn \
308 NDDS_Transport_UDP_Interface_Filter_Fcn
336extern NDDS_Transport_DllExport RTI_INT32
337NDDS_Transport_UDPv6_InterfaceListener_onInterface(
338 struct NDDS_Transport_UDPv6_InterfaceListener *self,
339 struct NDDS_Transport_UDPv6 *plugin,
340 RTI_INT32 *multicast_enabled_out,
342 const char *interface_name_in);
347extern NDDS_Transport_DllVariable
struct NDDS_Transport_UDP_InterfaceListener
348 NDDS_Transport_UDPv6_g_interfaceListener;
363#define NDDS_Transport_UDPv6_SocketFactory_Send_Socket_Create_Fcn \
364 NDDS_Transport_UDP_SocketFactory_Send_Socket_Create_Fcn
366#define NDDS_Transport_UDPv6_SocketFactory_Receive_Socket_Create_Fcn \
367 NDDS_Transport_UDP_SocketFactory_Receive_Socket_Create_Fcn
369#define NDDS_Transport_UDPv6_SocketFactory_Socket_Destroy_Fcn \
370 NDDS_Transport_UDP_SocketFactory_Socket_Destroy_Fcn
372#define NDDS_Transport_UDPv6_SocketFactory NDDS_Transport_UDP_SocketFactory
374#define NDDS_Transport_UDPv6_SocketFactory_is_valid \
375 NDDS_Transport_UDP_SocketFactory_is_valid
389extern NDDS_Transport_DllExport RTI_INT32
390NDDS_Transport_UDPv6_SocketFactory_create_send_socket(
391 struct NDDS_Transport_UDPv6_SocketFactory *me,
393 const struct NDDS_Transport_UDPv6 *ip_in,
395 const int *interface_index_in);
404extern NDDS_Transport_DllExport RTI_INT32
405NDDS_Transport_UDPv6_SocketFactory_create_receive_socket(
406 struct NDDS_Transport_UDPv6_SocketFactory *me,
408 const struct NDDS_Transport_UDPv6 *ip_in,
415extern NDDS_Transport_DllExport RTI_INT32
416NDDS_Transport_UDPv6_SocketFactory_destroy_socket(
417 struct NDDS_Transport_UDPv6_SocketFactory *me,
432NDDS_Transport_UDPv6_Socket_bind(
450NDDS_Transport_UDPv6_Socket_bind_with_ip(
453 const struct in6_addr *ip_in);
458extern NDDS_Transport_DllVariable
struct NDDS_Transport_UDPv6_SocketFactory
459 NDDS_Transport_UDPv6_g_socketFactory;
461#define NDDS_Transport_UDPv6_get_class_name_cEA \
462 NDDS_Transport_UDP_get_class_name_cEA
482#define NDDS_Transport_UDPv6_string_to_address_cEA \
483 NDDS_Transport_UDP_string_to_address_cEA
543extern NDDS_Transport_DllExport NDDS_Transport_Plugin *
544NDDS_Transport_UDPv6_newI(
546 struct NDDS_Transport_UDPv6_SocketFactory *socket_factory_in,
547 struct NDDS_Transport_UDPv6_InterfaceListener *interface_listener_in);
549#define NDDS_Transport_UDPv6_get_receive_interfaces_cEA \
550 NDDS_Transport_UDP_get_receive_interfaces_cEA
552#define NDDS_Transport_UDPv6_get_ignore_loopback_interface_status \
553 NDDS_Transport_UDP_get_ignore_loopback_interface_status
555#define NDDS_Transport_UDPv6_is_local_address \
556 NDDS_Transport_UDP_is_local_address
558#define NDDS_Transport_UDPv6_map_transport_priority \
559 NDDS_Transport_UDP_map_transport_priority
564#define NDDS_TRANSPORT_UDPV6_ADDRESS_LOCALHOST \
567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 \
571#define NDDS_TRANSPORT_UDPV6_UNBLOCK_MESSAGE_SIZE \
572 NDDS_TRANSPORT_UDP_UNBLOCK_MESSAGE_SIZE
574#define NDDS_Transport_UDPv6_Statistics NDDS_Transport_UDP_Statistics
576#define NDDS_Transport_UDPv6_get_statistics NDDS_Transport_UDP_get_statistics
578#define NDDS_Transport_UDPv6_get_priority_range \
579 NDDS_Transport_UDP_get_priority_range
581#define NDDS_Transport_UDPv6_Address_print NDDS_Transport_UDP_Address_print
588#include "transport/transport_udpv6_impl.h"
RTI_UINT32 NDDS_Transport_Port_t
Type for storing RTI Connext RTPS ports.
Definition: transport_common.h:92
NDDS_Transport_Plugin * NDDS_Transport_UDPv6_new(const struct NDDS_Transport_UDPv6_Property_t *property_in)
Create an instance of a UDPv6 Transport Plugin.
Addresses are stored individually as network-ordered bytes.
Definition: transport_common_user.h:384
Storage for the description of a network interface used by a Transport Plugin.
Definition: transport_common.h:204
Base configuration structure that must be inherited by derived Transport Plugin classes.
Definition: transport_interface_user.h:38
Configurable IPv6/UDP Transport-Plugin properties.
Definition: transport_udpv6.h:48
RTI_INT32 recv_socket_buffer_size
Size in bytes of the receive buffer of a socket used for receiving.
Definition: transport_udpv6.h:56
RTI_INT32 ignore_loopback_interface
Prevents the transport plugin from using the IP loopback interface.
Definition: transport_udpv6.h:71
RTI_INT32 force_interface_poll_detection
Forces the interface tracker to use a polling mechanism to detect changes on the UDPv6 interfaces.
Definition: transport_udpv6.h:98
RTI_INT32 multicast_loopback_disabled
Prevents the transport plugin from putting multicast packets onto the loopback interface.
Definition: transport_udpv6.h:68
RTI_UINT32 transport_priority_mask
Set mask for use of transport priority field.
Definition: transport_udpv6.h:86
RTI_INT32 unicast_enabled
Allows the transport plugin to use unicast for sending and receiving.
Definition: transport_udpv6.h:59
RTI_UINT32 join_multicast_group_timeout
[Windows only] Defines how much time (milliseconds) to wait to join a multicast group address when a ...
Definition: transport_udpv6.h:113
RTI_INT32 transport_priority_mapping_high
Set high value of output range to IPv6 TCLASS.
Definition: transport_udpv6.h:92
struct NDDS_Transport_Property_t parent
Generic properties of all transport plugins.
Definition: transport_udpv6.h:50
RTI_INT32 send_socket_buffer_size
Size in bytes of the send buffer of a socket used for sending.
Definition: transport_udpv6.h:53
RTI_UINT32 interface_poll_period
Specifies the period in milliseconds to query for changes in the state of all the interfaces.
Definition: transport_udpv6.h:101
RTI_INT32 port_offset
Port offset to allow multiple instances of UDPv6 transports in the same DDSDomainParticipant.
Definition: transport_udpv6.h:119
char * public_address
Public IP address associated with the transport instantiation.
Definition: transport_udpv6.h:116
RTI_INT32 multicast_enabled
Allows the transport plugin to use multicast for sending and receiving.
Definition: transport_udpv6.h:62
RTI_INT32 protocol_overhead_max
Maximum size in bytes of protocol overhead, including headers.
Definition: transport_udpv6.h:107
RTI_INT32 transport_priority_mapping_low
Set low value of output range to IPv6 TCLASS.
Definition: transport_udpv6.h:89
RTI_INT32 send_blocking
Control blocking behavior of send sockets. CHANGING THIS FROM THE DEFAULT CAN CAUSE SIGNIFICANT PERFO...
Definition: transport_udpv6.h:80
RTI_INT32 enable_v4mapped
Specify whether UDPv6 transport will process IPv4 addresses.
Definition: transport_udpv6.h:83
RTI_INT32 multicast_ttl
Value for the time-to-live parameter for all multicast sends using this plugin.
Definition: transport_udpv6.h:65
RTI_INT32 no_zero_copy
[DEPRECATED] Prevents the transport plugin from doing zero copy.
Definition: transport_udpv6.h:77
RTI_INT32 send_ping
Configures whether to send PING messages.
Definition: transport_udpv6.h:95
RTI_INT32 reuse_multicast_receive_resource
Controls whether or not to reuse multicast receive resources.
Definition: transport_udpv6.h:104
RTI_INT32 disable_interface_tracking
Disables detection of network interface changes.
Definition: transport_udpv6.h:110
RTI_INT32 ignore_nonrunning_interfaces
Prevents the transport plugin from using a network interface that is not reported as RUNNING by the o...
Definition: transport_udpv6.h:74