11#ifndef transport_udpv4_h
12#define transport_udpv4_h
14#include "transport/transport_udp.h"
20#define NDDS_Transport_UDPv4 NDDS_Transport_UDP
22#define NDDS_Transport_UDPv4_InterfaceListener \
23 NDDS_Transport_UDP_InterfaceListener
41#ifdef DOXYGEN_DOCUMENTATION_ONLY
137#ifdef DOXYGEN_DOCUMENTATION_ONLY
209#define NDDS_Transport_UDPv4_Property_t NDDS_Transport_UDP_Property_t
210#define NDDS_Transport_UDPv4_WAN_Property_t NDDS_Transport_UDP_Property_t
215#define NDDS_TRANSPORT_UDPV4_CLASS_NAME "udpv4"
220#define NDDS_TRANSPORT_UDPV4_WAN_CLASS_NAME "udpv4_wan"
225#define NDDS_TRANSPORT_BUILTIN_UDPV4_ALIAS "builtin.udpv4"
230#define NDDS_TRANSPORT_BUILTIN_UDPV4_WAN_ALIAS "builtin.udpv4_wan"
235#define NDDS_TRANSPORT_UDPV4_ADDRESS_BIT_COUNT (32)
241#define NDDS_TRANSPORT_UDPV4_WAN_ADDRESS_BIT_COUNT (128)
246#define NDDS_TRANSPORT_UDPV4_PROPERTIES_BITMAP_DEFAULT \
247 NDDS_TRANSPORT_UDP_PROPERTIES_BITMAP_DEFAULT
260#define NDDS_TRANSPORT_UDPV4_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT \
261 NDDS_TRANSPORT_UDP_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT
265#define NDDS_TRANSPORT_UDPV4_SOCKET_BUFFER_SIZE_OS_MAX \
266 NDDS_TRANSPORT_UDP_SOCKET_BUFFER_SIZE_OS_MAX
270#define NDDS_TRANSPORT_UDPV4_SOCKET_BUFFER_SIZE_OS_DEFAULT \
271 NDDS_TRANSPORT_UDP_SOCKET_BUFFER_SIZE_OS_DEFAULT
275#define NDDS_TRANSPORT_UDPV4_SEND_SOCKET_BUFFER_SIZE_DEFAULT \
276 NDDS_TRANSPORT_UDP_SEND_SOCKET_BUFFER_SIZE_DEFAULT
280#define NDDS_TRANSPORT_UDPV4_RECV_SOCKET_BUFFER_SIZE_DEFAULT \
281 NDDS_TRANSPORT_UDP_RECV_SOCKET_BUFFER_SIZE_DEFAULT
286#define NDDS_TRANSPORT_UDPV4_PAYLOAD_SIZE_MAX (65507)
292 #define NDDS_TRANSPORT_UDPV4_MESSAGE_SIZE_MAX_DEFAULT (9216)
294 #define NDDS_TRANSPORT_UDPV4_MESSAGE_SIZE_MAX_DEFAULT \
295 NDDS_TRANSPORT_UDPV4_PAYLOAD_SIZE_MAX
301#define NDDS_TRANSPORT_UDPV4_WAN_MESSAGE_SIZE_MAX_DEFAULT (1400)
303#define NDDS_TRANSPORT_UDPV4_DATAGRAM_LENGTH_MAX \
304 NDDS_TRANSPORT_UDP_DATAGRAM_LENGTH_MAX
309#define NDDS_TRANSPORT_UDPV4_MULTICAST_TTL_DEFAULT \
310 NDDS_TRANSPORT_UDP_MULTICAST_TTL_DEFAULT
313#define NDDS_TRANSPORT_UDPV4_USE_MULTICAST_DEFAULT \
314 NDDS_TRANSPORT_UDP_USE_MULTICAST_DEFAULT
319#define NDDS_TRANSPORT_UDPV4_IGNORE_LOOPBACK_DISABLED \
320 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_DISABLED
324#define NDDS_TRANSPORT_UDPV4_IGNORE_LOOPBACK_ENABLED \
325 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_ENABLED
329#define NDDS_TRANSPORT_UDPV4_IGNORE_LOOPBACK_AUTO \
330 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_AUTO
335#define NDDS_TRANSPORT_UDPV4_USE_CHECKSUM_DISABLED (0)
339#define NDDS_TRANSPORT_UDPV4_USE_CHECKSUM_ENABLED (1)
344#define NDDS_TRANSPORT_UDPV4_BLOCKING_NEVER NDDS_TRANSPORT_UDP_BLOCKING_NEVER
348#define NDDS_TRANSPORT_UDPV4_BLOCKING_ALWAYS NDDS_TRANSPORT_UDP_BLOCKING_ALWAYS
349#define NDDS_TRANSPORT_UDPV4_BLOCKING_UNICAST_ONLY \
350 NDDS_TRANSPORT_UDP_BLOCKING_UNICAST_ONLY
354#define NDDS_TRANSPORT_UDPV4_BLOCKING_DEFAULT \
355 NDDS_TRANSPORT_UDP_BLOCKING_DEFAULT
360#define NDDS_TRANSPORT_UDPV4_PROPERTY_DEFAULT \
363 NDDS_TRANSPORT_CLASSID_UDPv4, \
364 NDDS_TRANSPORT_UDPV4_ADDRESS_BIT_COUNT, \
365 NDDS_TRANSPORT_UDPV4_PROPERTIES_BITMAP_DEFAULT, \
366 NDDS_TRANSPORT_UDPV4_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT, \
367 NDDS_TRANSPORT_UDPV4_MESSAGE_SIZE_MAX_DEFAULT, \
376 NDDS_TRANSPORT_UUID_UNKNOWN, \
380 NDDS_TRANSPORT_LENGTH_UNLIMITED, \
382 NDDS_TRANSPORT_UDPV4_SEND_SOCKET_BUFFER_SIZE_DEFAULT, \
383 NDDS_TRANSPORT_UDPV4_RECV_SOCKET_BUFFER_SIZE_DEFAULT, \
386 NDDS_TRANSPORT_UDPV4_USE_MULTICAST_DEFAULT,
388 NDDS_TRANSPORT_UDPV4_MULTICAST_TTL_DEFAULT, 0,
391 NDDS_TRANSPORT_UDPV4_IGNORE_LOOPBACK_AUTO,
396 NDDS_TRANSPORT_UDPV4_BLOCKING_DEFAULT, 0,
398 NDDS_TRANSPORT_UDPV4_USE_CHECKSUM_ENABLED, \
417 RTI_OSAPI_RTPS_GUID_PREFIX_UNKNOWN \
424#define NDDS_TRANSPORT_UDPV4_WAN_PROPERTY_DEFAULT \
427 NDDS_TRANSPORT_CLASSID_UDPv4_WAN, \
428 NDDS_TRANSPORT_UDPV4_WAN_ADDRESS_BIT_COUNT, \
429 NDDS_TRANSPORT_UDPV4_PROPERTIES_BITMAP_DEFAULT, \
430 NDDS_TRANSPORT_UDPV4_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT, \
431 NDDS_TRANSPORT_UDPV4_WAN_MESSAGE_SIZE_MAX_DEFAULT, \
440 NDDS_TRANSPORT_UUID_UNKNOWN, \
444 NDDS_TRANSPORT_LENGTH_UNLIMITED, \
446 NDDS_TRANSPORT_UDPV4_SEND_SOCKET_BUFFER_SIZE_DEFAULT, \
447 NDDS_TRANSPORT_UDPV4_RECV_SOCKET_BUFFER_SIZE_DEFAULT, \
451 NDDS_TRANSPORT_UDPV4_MULTICAST_TTL_DEFAULT, 0,
454 NDDS_TRANSPORT_UDPV4_IGNORE_LOOPBACK_AUTO,
459 NDDS_TRANSPORT_UDPV4_BLOCKING_DEFAULT, 0,
461 NDDS_TRANSPORT_UDPV4_USE_CHECKSUM_ENABLED, \
480 RTI_OSAPI_RTPS_GUID_PREFIX_UNKNOWN \
496#define NDDS_Transport_UDPv4_InterfaceListener \
497 NDDS_Transport_UDP_InterfaceListener
541#define NDDS_Transport_UDPv4_Interface_Filter_Fcn \
542 NDDS_Transport_UDP_Interface_Filter_Fcn
568extern NDDS_Transport_DllExport RTI_INT32
569NDDS_Transport_UDPv4_InterfaceListener_onInterface(
570 struct NDDS_Transport_UDPv4_InterfaceListener *self,
571 struct NDDS_Transport_UDPv4 *plugin,
572 RTI_INT32 *multicast_enabled_out,
574 const char *interface_name_in);
579extern NDDS_Transport_DllVariable
struct NDDS_Transport_UDP_InterfaceListener
580 NDDS_Transport_UDPv4_g_interfaceListener;
595#define NDDS_Transport_UDPv4_SocketFactory_Send_Socket_Create_Fcn \
596 NDDS_Transport_UDP_SocketFactory_Send_Socket_Create_Fcn
599#define NDDS_Transport_UDPv4_SocketFactory_Receive_Socket_Create_Fcn \
600 NDDS_Transport_UDP_SocketFactory_Receive_Socket_Create_Fcn
603#define NDDS_Transport_UDPv4_SocketFactory_Socket_Destroy_Fcn \
604 NDDS_Transport_UDP_SocketFactory_Socket_Destroy_Fcn
607#define NDDS_Transport_UDPv4_SocketFactory NDDS_Transport_UDP_SocketFactory
610#define NDDS_Transport_UDPv4_SocketFactory_is_valid \
611 NDDS_Transport_UDP_SocketFactory_is_valid
625extern NDDS_Transport_DllExport RTI_INT32
626NDDS_Transport_UDPv4_SocketFactory_create_send_socket(
627 struct NDDS_Transport_UDPv4_SocketFactory *me,
629 const struct NDDS_Transport_UDPv4 *ip_in,
631 const int *interface_index_in);
640extern NDDS_Transport_DllExport RTI_INT32
641NDDS_Transport_UDPv4_SocketFactory_create_receive_socket(
642 struct NDDS_Transport_UDPv4_SocketFactory *me,
644 const struct NDDS_Transport_UDPv4 *ip_in,
651extern NDDS_Transport_DllExport RTI_INT32
652NDDS_Transport_UDPv4_SocketFactory_destroy_socket(
653 struct NDDS_Transport_UDPv4_SocketFactory *me,
668NDDS_Transport_UDPv4_Socket_bind(
686NDDS_Transport_UDPv4_Socket_bind_with_ip(
694extern NDDS_Transport_DllVariable
struct NDDS_Transport_UDPv4_SocketFactory
695 NDDS_Transport_UDPv4_g_socketFactory;
706#define NDDS_Transport_UDPv4_get_class_name_cEA \
707 NDDS_Transport_UDP_get_class_name_cEA
727#define NDDS_Transport_UDPv4_string_to_address_cEA \
728 NDDS_Transport_UDP_string_to_address_cEA
797extern NDDS_Transport_DllExport NDDS_Transport_Plugin *
821extern NDDS_Transport_DllExport NDDS_Transport_Plugin *
822NDDS_Transport_UDPv4_newI(
824 struct NDDS_Transport_UDPv4_SocketFactory *socket_factory_in,
825 struct NDDS_Transport_UDPv4_InterfaceListener *interface_listener_in);
847extern NDDS_Transport_DllExport NDDS_Transport_Plugin *
848NDDS_Transport_UDPv4_WAN_newI(
850 struct NDDS_Transport_UDPv4_SocketFactory *socket_factory_in,
851 struct NDDS_Transport_UDPv4_InterfaceListener *interface_listener_in);
854#define NDDS_Transport_UDPv4_get_receive_interfaces_cEA \
855 NDDS_Transport_UDP_get_receive_interfaces_cEA
858#define NDDS_Transport_UDPv4_get_ignore_loopback_interface_status \
859 NDDS_Transport_UDP_get_ignore_loopback_interface_status
862#define NDDS_Transport_UDPv4_is_local_address \
863 NDDS_Transport_UDP_is_local_address
866#define NDDS_Transport_UDPv4_map_transport_priority \
867 NDDS_Transport_UDP_map_transport_priority
872#define NDDS_TRANSPORT_UDPV4_ADDRESS_LOCALHOST \
875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 1 \
880#define NDDS_TRANSPORT_UDPV4_UNBLOCK_MESSAGE_SIZE \
881 NDDS_TRANSPORT_UDP_UNBLOCK_MESSAGE_SIZE
884#define NDDS_Transport_UDPv4_Statistics NDDS_Transport_UDP_Statistics
887#define NDDS_Transport_UDPv4_get_statistics NDDS_Transport_UDP_get_statistics
890#define NDDS_Transport_UDPv4_get_priority_range \
891 NDDS_Transport_UDP_get_priority_range
893#define NDDS_Transport_UDPv4_Address_print NDDS_Transport_UDP_Address_print
895extern NDDS_Transport_DllExport RTIBool
896NDDS_Transport_UDPv4_WAN_Address_to_string(
899 size_t buffer_size_in);
901extern NDDS_Transport_DllExport
void NDDS_Transport_UDPv4_WAN_Address_print(
911#include "transport/transport_udpv4_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_UDPv4_new(const struct NDDS_Transport_UDPv4_Property_t *property_in)
Create an instance of a UDPv4 Transport Plugin.
NDDS_Transport_Plugin * NDDS_Transport_UDPv4_WAN_new(const struct NDDS_Transport_UDPv4_WAN_Property_t *property_in)
Create an instance of a UDPv4_WAN 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
Type for storing UDP WAN communication ports.
Definition: transport_udp.h:84
Configurable IPv4/UDP Transport-Plugin properties.
Definition: transport_udpv4.h:44
RTI_UINT32 transport_priority_mask
Set mask for use of transport priority field.
Definition: transport_udpv4.h:85
RTI_INT32 disable_interface_tracking
Disables detection of network interface changes.
Definition: transport_udpv4.h:109
RTI_INT32 port_offset
Port offset to allow multiple instances of UDPv4 transports in the same DDSDomainParticipant.
Definition: transport_udpv4.h:118
RTI_INT32 ignore_loopback_interface
Prevents the transport plugin from using the IP loopback interface.
Definition: transport_udpv4.h:67
RTI_INT32 send_blocking
Control blocking behavior of send sockets. CHANGING THIS FROM THE DEFAULT CAN CAUSE SIGNIFICANT PERFO...
Definition: transport_udpv4.h:79
struct NDDS_Transport_Property_t parent
Generic properties of all transport plugins.
Definition: transport_udpv4.h:46
RTI_INT32 transport_priority_mapping_high
Set high value of output range to IPv4 TOS.
Definition: transport_udpv4.h:91
RTI_INT32 send_ping
Configures whether to send PING messages.
Definition: transport_udpv4.h:94
RTI_INT32 multicast_ttl
Value for the time-to-live parameter for all multicast sends using this plugin.
Definition: transport_udpv4.h:61
RTI_INT32 multicast_enabled
Allows the transport plugin to use multicast for sending and receiving.
Definition: transport_udpv4.h:58
RTI_INT32 force_interface_poll_detection
Forces the interface tracker to use a polling mechanism to detect changes on the UDPv4 interfaces.
Definition: transport_udpv4.h:97
char * public_address
Public IP address associated with the transport instantiation.
Definition: transport_udpv4.h:115
RTI_INT32 multicast_loopback_disabled
Prevents the transport plugin from putting multicast packets onto the loopback interface.
Definition: transport_udpv4.h:64
RTI_INT32 no_zero_copy
[DEPRECATED] Prevents the transport plugin from doing a zero copy.
Definition: transport_udpv4.h:76
RTI_UINT32 interface_poll_period
Specifies the period in milliseconds to query for changes in the state of all the interfaces.
Definition: transport_udpv4.h:100
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_udpv4.h:73
RTI_INT32 send_socket_buffer_size
Size in bytes of the send buffer of a socket used for sending.
Definition: transport_udpv4.h:49
RTI_INT32 protocol_overhead_max
Maximum size in bytes of protocol overhead, including headers.
Definition: transport_udpv4.h:106
RTI_INT32 ignore_nonup_interfaces
[DEPRECATED] Prevents the transport plugin from using a network interface that is not reported as UP ...
Definition: transport_udpv4.h:70
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_udpv4.h:112
RTI_INT32 transport_priority_mapping_low
Set low value of output range to IPv4 TOS.
Definition: transport_udpv4.h:88
RTI_INT32 use_checksum
Configures whether to send UDP checksum.
Definition: transport_udpv4.h:82
RTI_INT32 reuse_multicast_receive_resource
Controls whether or not to reuse multicast receive resources.
Definition: transport_udpv4.h:103
RTI_INT32 recv_socket_buffer_size
Size in bytes of the receive buffer of a socket used for receiving.
Definition: transport_udpv4.h:52
RTI_INT32 unicast_enabled
Allows the transport plugin to use unicast for sending and receiving.
Definition: transport_udpv4.h:55
Configurable IPv4/UDP WAN Transport-Plugin properties.
Definition: transport_udpv4.h:140
RTI_INT32 recv_socket_buffer_size
Size in bytes of the receive buffer of a socket used for receiving.
Definition: transport_udpv4.h:148
RTI_INT32 use_checksum
Configures whether to send UDP checksum.
Definition: transport_udpv4.h:166
RTI_INT32 send_blocking
Control blocking behavior of send sockets. CHANGING THIS FROM THE DEFAULT CAN CAUSE SIGNIFICANT PERFO...
Definition: transport_udpv4.h:163
RTI_UINT32 binding_ping_period
Specifies the period in milliseconds at which BINDING PINGS messages are sent to keep NAT mappings op...
Definition: transport_udpv4.h:205
RTI_INT32 no_zero_copy
[DEPRECATED] Prevents the transport plugin from doing a zero copy.
Definition: transport_udpv4.h:160
RTI_INT32 transport_priority_mapping_low
Set low value of output range to IPv4 TOS.
Definition: transport_udpv4.h:172
RTI_INT32 send_ping
Configures whether to send PING messages.
Definition: transport_udpv4.h:178
RTI_INT32 port_offset
Port offset to allow coexistence with built-in UDPv4 transport.
Definition: transport_udpv4.h:202
struct NDDS_Transport_UDP_WAN_CommPortsMappingInfo * comm_ports_list
Configures the public and private UDP ports that a transport instance uses to receive/send RTPS data.
Definition: transport_udpv4.h:196
struct NDDS_Transport_Property_t parent
Generic properties of all transport plugins.
Definition: transport_udpv4.h:142
RTI_INT32 ignore_nonup_interfaces
[DEPRECATED] Prevents the transport plugin from using a network interface that is not reported as UP ...
Definition: transport_udpv4.h:154
RTI_INT32 transport_priority_mapping_high
Set high value of output range to IPv4 TOS.
Definition: transport_udpv4.h:175
char * public_address
Public IP address associated with the transport instantiation.
Definition: transport_udpv4.h:193
RTI_INT32 send_socket_buffer_size
Size in bytes of the send buffer of a socket used for sending.
Definition: transport_udpv4.h:145
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_udpv4.h:157
RTI_INT32 comm_ports_list_length
Number of elements in the NDDS_Transport_UDPv4_WAN_Property_t::comm_ports_list.
Definition: transport_udpv4.h:199
RTI_UINT32 transport_priority_mask
Set mask for use of transport priority field.
Definition: transport_udpv4.h:169
RTI_INT32 disable_interface_tracking
Disables detection of network interface changes.
Definition: transport_udpv4.h:190
RTI_UINT32 interface_poll_period
Specifies the period in milliseconds to query for changes in the state of all the interfaces.
Definition: transport_udpv4.h:184
RTI_INT32 ignore_loopback_interface
Prevents the transport plugin from using the IP loopback interface.
Definition: transport_udpv4.h:151
RTI_INT32 force_interface_poll_detection
Forces the interface tracker to use a polling mechanism to detect changes on the UDPv4 interfaces.
Definition: transport_udpv4.h:181
RTI_INT32 protocol_overhead_max
Maximum size in bytes of protocol overhead, including headers.
Definition: transport_udpv4.h:187