RTI Connext C API Version 7.7.0
transport_udpv6.h
1/*
2 * (c) Copyright, Real-Time Innovations, 2006-2024.
3 * All rights reserved.
4 *
5 * No duplications, whole or partial, manual or electronic, may be made
6 * without express written permission. Any such copies, or
7 * revisions thereof, must display this notice unaltered.
8 * This code contains trade secrets of Real-Time Innovations, Inc.
9 */
10
11#ifndef transport_udpv6_h
12#define transport_udpv6_h
13
14#include "transport/transport_udp.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#if defined(RTI_VX653)
21struct in6_addr;
22#endif
23
24#define NDDS_Transport_UDPv6 NDDS_Transport_UDP
25
26#define NDDS_Transport_UDPv6_InterfaceListener \
27 NDDS_Transport_UDP_InterfaceListener
28
29/* ================================================================= */
30/* Component: UDP/IPv6 Transport Plugin */
31/* ================================================================= */
32
33/*e \dref_UDPv6TransportBuiltinGroupDocs
34 */
35
36/*i \file
37 * \ingroup NDDS_Transport_UDPv6_Plugin
38 * \brief UDPv6 Transport Plugin interfaces and definitions.
39 */
40
41/* ================================================================= */
42/* UDPv6 Transport Properties */
43/* ================================================================= */
44
45#ifdef DOXYGEN_DOCUMENTATION_ONLY
46/*e \dref_UDPv6Transport_Property_t
47 */
49 /*e \dref_UDPv6Transport_Property_t_parent */
51
52 /*e \dref_UDPv6Transport_Property_t_send_socket_buffer_size */
54
55 /*e \dref_UDPv6Transport_Property_t_recv_socket_buffer_size */
57
58 /*e \dref_UDPv6Transport_Property_t_unicast_enabled */
59 RTI_INT32 unicast_enabled;
60
61 /*e \dref_UDPv6Transport_Property_t_multicast_enabled */
63
64 /*e \dref_UDPv6Transport_Property_t_multicast_ttl */
65 RTI_INT32 multicast_ttl;
66
67 /*e \dref_UDPv6Transport_Property_t_multicast_loopback_disabled */
69
70 /*e \dref_UDPv6Transport_Property_t_ignore_loopback_interface */
72
73 /*e \dref_UDPv6Transport_Property_t_ignore_nonrunning_interfaces */
75
76 /*e \dref_UDPv6Transport_Property_t_no_zero_copy */
77 RTI_INT32 no_zero_copy;
78
79 /*e \dref_UDPv6Transport_Property_t_send_blocking */
80 RTI_INT32 send_blocking;
81
82 /*e \dref_UDPv6Transport_Property_t_enable_v4mapped */
83 RTI_INT32 enable_v4mapped;
84
85 /*e \dref_UDPv6Transport_Property_t_transport_priority_mask */
87
88 /*e \dref_UDPv6Transport_Property_t_transport_priority_mapping_low */
90
91 /*e \dref_UDPv6Transport_Property_t_transport_priority_mapping_high */
93
94 /*e \dref_UDPv6Transport_Property_t_send_ping */
95 RTI_INT32 send_ping;
96
97 /*e \dref_UDPv6Transport_Property_t_force_interface_poll_detection */
99
100 /*e \dref_UDPv6Transport_Property_t_interface_poll_period */
102
103 /*e \dref_UDPv6Transport_Property_t_reuse_multicast_receive_resource */
105
106 /*e \dref_UDPv6Transport_Property_t_protocol_overhead_max */
108
109 /*e \dref_UDPv6Transport_Property_t_disable_interface_tracking */
111
112 /*e \dref_UDPv6Transport_Property_t_join_multicast_group_timeout */
114
115 /*e \dref_UDPv6Transport_Property_t_public_address */
117
118 /*e \dref_UDPv6Transport_Property_t_port_offset */
119 RTI_INT32 port_offset;
120};
121#endif
122
123#define NDDS_Transport_UDPv6_Property_t NDDS_Transport_UDP_Property_t
124
125/*i \ingroup NDDS_Transport_UDPv6_Plugin
126 * \brief UDPv6 plugin class string name
127 */
128#define NDDS_TRANSPORT_UDPV6_CLASS_NAME "udpv6"
129
130/*i \ingroup NDDS_Transport_UDPv6_Plugin
131 * \brief UDPv6 builtin plugin alias
132 */
133#define NDDS_TRANSPORT_BUILTIN_UDPV6_ALIAS "builtin.udpv6"
134
135/*e \ingroup NDDS_Transport_UDPv6_Plugin
136 * \brief Default value of NDDS_Transport_Property_t#address_bit_count
137 */
138#define NDDS_TRANSPORT_UDPV6_ADDRESS_BIT_COUNT (128)
139
140/*e \ingroup NDDS_Transport_UDPv6_Plugin
141 * \brief Default value of NDDS_Transport_Property_t#properties_bitmap.
142 */
143#define NDDS_TRANSPORT_UDPV6_PROPERTIES_BITMAP_DEFAULT \
144 NDDS_TRANSPORT_UDP_PROPERTIES_BITMAP_DEFAULT
145
146/*e \ingroup NDDS_Transport_UDPv6_Plugin
147 * \brief Default value of
148 * NDDS_Transport_Property_t#gather_send_buffer_count_max.
149 *
150 * This is also the maximum value that can be used when instantiating the UDP
151 * transport.
152 *
153 * 16 is sufficient for NDDS, but more may improve discovery and reliable
154 * performance.
155 * Porting note: find out what the maximum gather buffer count is on your OS!
156 */
157#define NDDS_TRANSPORT_UDPV6_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT \
158 NDDS_TRANSPORT_UDP_GATHER_SEND_BUFFER_COUNT_MAX_DEFAULT
159
160/*e \dref_UDPv6Transport_SOCKET_BUFFER_SIZE_OS_MAX
161 */
162#define NDDS_TRANSPORT_UDPV6_SOCKET_BUFFER_SIZE_OS_MAX \
163 NDDS_TRANSPORT_UDP_SOCKET_BUFFER_SIZE_OS_MAX
164
165/*e \dref_UDPv6Transport_SOCKET_BUFFER_SIZE_OS_DEFAULT
166 */
167#define NDDS_TRANSPORT_UDPV6_SOCKET_BUFFER_SIZE_OS_DEFAULT \
168 NDDS_TRANSPORT_UDP_SOCKET_BUFFER_SIZE_OS_DEFAULT
169
170/*e \dref_UDPv6Transport_SEND_SOCKET_BUFFER_SIZE_DEFAULT
171 */
172#define NDDS_TRANSPORT_UDPV6_SEND_SOCKET_BUFFER_SIZE_DEFAULT \
173 NDDS_TRANSPORT_UDP_SEND_SOCKET_BUFFER_SIZE_DEFAULT
174
175/*e \dref_UDPv6Transport_RECV_SOCKET_BUFFER_SIZE_DEFAULT
176 */
177#define NDDS_TRANSPORT_UDPV6_RECV_SOCKET_BUFFER_SIZE_DEFAULT \
178 NDDS_TRANSPORT_UDP_RECV_SOCKET_BUFFER_SIZE_DEFAULT
179
180/*e \ingroup NDDS_Transport_UDPv6_Plugin
181 \brief Maximum value of NDDS_Transport_Property_t#message_size_max.
182 */
183#define NDDS_TRANSPORT_UDPV6_PAYLOAD_SIZE_MAX (65487)
184
185/*e \ingroup NDDS_Transport_UDPv6_Plugin
186 \brief Default value of NDDS_Transport_Property_t#message_size_max.
187 */
188#if defined(RTI_INTY)
189 #define NDDS_TRANSPORT_UDPV6_MESSAGE_SIZE_MAX_DEFAULT (9196)
190#else
191 #define NDDS_TRANSPORT_UDPV6_MESSAGE_SIZE_MAX_DEFAULT \
192 NDDS_TRANSPORT_UDPV6_PAYLOAD_SIZE_MAX
193#endif
194
195#define NDDS_TRANSPORT_UDPV6_DATAGRAM_LENGTH_MAX \
196 NDDS_TRANSPORT_UDP_DATAGRAM_LENGTH_MAX
197
198/*e \ingroup NDDS_Transport_UDPv6_Plugin
199 \brief Default value of NDDS_Transport_UDPv6_Property_t#multicast_ttl.
200 */
201#define NDDS_TRANSPORT_UDPV6_MULTICAST_TTL_DEFAULT \
202 NDDS_TRANSPORT_UDP_MULTICAST_TTL_DEFAULT
203
204#define NDDS_TRANSPORT_UDPV6_USE_MULTICAST_DEFAULT \
205 NDDS_TRANSPORT_UDP_USE_MULTICAST_DEFAULT
206
207
208/*e \dref_UDPv6Transport_IGNORE_LOOPBACK_DISABLED
209 */
210#define NDDS_TRANSPORT_UDPV6_IGNORE_LOOPBACK_DISABLED \
211 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_DISABLED
212
213/*e \dref_UDPv6Transport_IGNORE_LOOPBACK_ENABLED
214 */
215#define NDDS_TRANSPORT_UDPV6_IGNORE_LOOPBACK_ENABLED \
216 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_ENABLED
217
218/*e \dref_UDPv6Transport_IGNORE_LOOPBACK_AUTO
219 */
220#define NDDS_TRANSPORT_UDPV6_IGNORE_LOOPBACK_AUTO \
221 NDDS_TRANSPORT_UDP_IGNORE_LOOPBACK_AUTO
222
223
224/*e \dref_UDPv6Transport_BLOCKING_NEVER
225 */
226#define NDDS_TRANSPORT_UDPV6_BLOCKING_NEVER NDDS_TRANSPORT_UDP_BLOCKING_NEVER
227
228/*e \dref_UDPv6Transport_BLOCKING_ALWAYS
229 */
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
233
234#define NDDS_TRANSPORT_UDPV6_BLOCKING_DEFAULT \
235 NDDS_TRANSPORT_UDP_BLOCKING_DEFAULT
236
237
238#define NDDS_TRANSPORT_UDPV6_PROPERTY_DEFAULT \
239 { \
240 { \
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, \
246 NULL, \
247 0, /* allow_interfaces_list */ \
248 NULL, \
249 0, /* deny_interfaces_list */ \
250 NULL, \
251 0, /* allow_multicast_interfaces_list */ \
252 NULL, \
253 0, /* deny_multicast_interfaces_list */ \
254 NDDS_TRANSPORT_UUID_UNKNOWN, /* transport_uuid */ \
255 NULL, /* domain_participant_ptr */ \
256 NULL, /* domain_participant_forwarder */ \
257 NULL, /* thread_name_prefix */ \
258 NDDS_TRANSPORT_LENGTH_UNLIMITED, /* max_interface_count */ \
259 }, \
260 NDDS_TRANSPORT_UDPV6_SEND_SOCKET_BUFFER_SIZE_DEFAULT, \
261 NDDS_TRANSPORT_UDPV6_RECV_SOCKET_BUFFER_SIZE_DEFAULT, \
262 1, /* use \
263 unicast \
264 */ \
265 NDDS_TRANSPORT_UDPV6_USE_MULTICAST_DEFAULT, /* use multicast \
266 */ \
267 NDDS_TRANSPORT_UDPV6_MULTICAST_TTL_DEFAULT, 0, /* multicast \
268 loopback \
269 enabled */ \
270 NDDS_TRANSPORT_UDPV6_IGNORE_LOOPBACK_AUTO, /* (auto-)ignore \
271 loopback */ \
272 1, /* ignore_nonup_interfaces */ \
273 1, /* ignore_nonrunning_interfaces */ \
274 0, /* no_zero_copy */ \
275 NDDS_TRANSPORT_UDPV6_BLOCKING_DEFAULT, 0, /* enable_v4mapped \
276 */ \
277 0, /* use_checksum (no effect, udpv4 only) */ \
278 0, 0, 0xff /* no mapping to IP_TOS by default */, \
279 1, /* send_ping \
280 */ \
281 0, /* don't force polling interface tracker by default */ \
282 500, /* 500 millisecs is the default polling period*/ \
283 1, /* reuse multicast receive resource */ \
284 48, /* protocol_overhead_max (UDP(8)+IP(40)) */ \
285 0, /* disable interface tracking */ \
286 5000, /* join_multicast_group_timeout */ \
287 NULL, /* public_address */ \
288 NULL, 0, /* comm_ports_list */ \
289 NULL, /* wan_listener */ \
290 0, /* port_offset */ \
291 0, /* binding_ping_period */ \
292 0, /* binding_ping_mapping_expiration */ \
293 NULL, /* plugin_enabled_function_ptr */ \
294 RTI_FALSE, /* gather_detailed_statistics */ \
295 RTI_FALSE, /* drop_samples_by_guid_prefix */ \
296 RTI_OSAPI_RTPS_GUID_PREFIX_UNKNOWN /* guid_prefix_to_drop */ \
297 }
298
299/* ================================================================= */
300/* InterfaceListener Class */
301/* ================================================================= */
302
303#define NDDS_Transport_UDPv6_InterfaceListener \
304 NDDS_Transport_UDP_InterfaceListener
305
306
307#define NDDS_Transport_UDPv6_Interface_Filter_Fcn \
308 NDDS_Transport_UDP_Interface_Filter_Fcn
309
310/* ================================================================= */
311/* UDP/IPv6 InterfaceListener */
312/* ================================================================= */
313
314
315/*i \ingroup NDDS_Transport_UDPv6_InterfaceListenerClass
316 * \brief Default implementation of the Interface listener.
317 *
318 * The default interface listener applies the interface selection preferences
319 * specified in the NDDS_Transport_UDPv6_Property_t#parent:
320 * - NDDS_Transport_Property_t#allow_interfaces_list,
321 * - NDDS_Transport_Property_t#deny_interfaces_list,
322 * - NDDS_Transport_Property_t#allow_multicast_interfaces_list,
323 * - NDDS_Transport_Property_t#deny_multicast_interfaces_list
324 *
325 * The filter assumes that the strings passed in the address filter
326 * are in UDPv6 dot notation, possibly containing wildcards. For example:
327 * ffce:2222:*:0000
328 * 0000:*:0001
329 * 0*1 etc.
330 *
331 * 0::192.168.1.* (TODO: this form is not yet supported)
332 * etc.
333 *
334 * @see NDDS_Transport_UDPv6_Interface_Filter_Fcn
335 */
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,
341 NDDS_Transport_Interface_t *interface_in,
342 const char *interface_name_in);
343
344/*i \ingroup NDDS_Transport_UDPv6_InterfaceListenerClass
345 * \brief Default interface listener.
346 */
347extern NDDS_Transport_DllVariable struct NDDS_Transport_UDP_InterfaceListener
348 NDDS_Transport_UDPv6_g_interfaceListener;
349
350/* ================================================================= */
351/* Socket Factory Class */
352/* ================================================================= */
353/*i
354 * \defgroup NDDS_Transport_UDPv6_SocketFactoryClass
355 * NDDS_Transport_UDPv6_SocketFactory \ingroup NDDS_Transport_UDPv6_Plugin
356 * \brief Interface for IPv6 socket creation and destruction.
357 *
358 * @mtsafety See NDDS_Transport_UDPv6_public UML diagram
359 *
360 * @see NDDS_Transport_UDPv6_new
361 */
362
363#define NDDS_Transport_UDPv6_SocketFactory_Send_Socket_Create_Fcn \
364 NDDS_Transport_UDP_SocketFactory_Send_Socket_Create_Fcn
365
366#define NDDS_Transport_UDPv6_SocketFactory_Receive_Socket_Create_Fcn \
367 NDDS_Transport_UDP_SocketFactory_Receive_Socket_Create_Fcn
368
369#define NDDS_Transport_UDPv6_SocketFactory_Socket_Destroy_Fcn \
370 NDDS_Transport_UDP_SocketFactory_Socket_Destroy_Fcn
371
372#define NDDS_Transport_UDPv6_SocketFactory NDDS_Transport_UDP_SocketFactory
373
374#define NDDS_Transport_UDPv6_SocketFactory_is_valid \
375 NDDS_Transport_UDP_SocketFactory_is_valid
376
377/* ================================================================= */
378/* IP Socket Factory Class */
379/* ================================================================= */
380
381/*i \ingroup NDDS_Transport_UDPv6_SocketFactoryClass
382 * \brief Default implementation of the socket creation factory method
383 * for UDPv6 transport.
384 *
385 * @post Sending socket is not bound.
386 *
387 * @see NDDS_Transport_UDPv6_SocketFactory_Send_Socket_Create_Fcn
388 */
389extern NDDS_Transport_DllExport RTI_INT32
390NDDS_Transport_UDPv6_SocketFactory_create_send_socket(
391 struct NDDS_Transport_UDPv6_SocketFactory *me,
392 NDDS_Transport_Port_t *port_out,
393 const struct NDDS_Transport_UDPv6 *ip_in,
394 const NDDS_Transport_Address_t *interface_address_in,
395 const int *interface_index_in);
396
397/*i \ingroup NDDS_Transport_UDPv6_SocketFactoryClass
398 * \brief Default implementation of the socket creation factory method.
399 *
400 * @post socket is created and bound
401 *
402 * @see NDDS_Transport_UDPv6_SocketFactory_Receive_Socket_Create_Fcn
403 */
404extern NDDS_Transport_DllExport RTI_INT32
405NDDS_Transport_UDPv6_SocketFactory_create_receive_socket(
406 struct NDDS_Transport_UDPv6_SocketFactory *me,
407 NDDS_Transport_Port_t *port_inout,
408 const struct NDDS_Transport_UDPv6 *ip_in,
409 const NDDS_Transport_Address_t *multicast_address_in);
410
411/*i \ingroup NDDS_Transport_UDPv6_SocketFactoryClass
412 * \brief Default implementation of the socket destroy factory method
413 * @see NDDS_Transport_UDPv6_SocketFactory_Socket_Destroy_Fcn
414 */
415extern NDDS_Transport_DllExport RTI_INT32
416NDDS_Transport_UDPv6_SocketFactory_destroy_socket(
417 struct NDDS_Transport_UDPv6_SocketFactory *me,
418 RTI_INT32 s_in);
419
420/*i \ingroup NDDS_Transport_UDPv6_SocketFactoryClass
421 * \brief Used to bind a socket to the desired port
422 *
423 * @param s_in \b In. socket to be bound
424 *
425 * @param port_desired_in \b In. port number to bind to, use 0 to be
426 * assigned an ephemeral port.
427 *
428 * @return if successful, the port number bound to or 0 if
429 * unsuccessful.
430 */
431extern NDDS_Transport_DllExport NDDS_Transport_Port_t
432NDDS_Transport_UDPv6_Socket_bind(
433 RTI_INT32 s_in,
434 const NDDS_Transport_Port_t port_desired_in);
435
436/*i \ingroup NDDS_Transport_UDPv6_SocketFactoryClass
437 * \brief Used to bind a socket to the desired port with specified IP
438 *
439 * @param s_in \b In. socket to be bound
440 *
441 * @param port_desired_in \b In. port number to bind to, use 0 to be
442 * assigned an ephemeral port.
443 *
444 * @param ip_in \b In. IP to bind
445 *
446 * @return if successful, the port number bound to or 0 if
447 * unsuccessful.
448 */
449extern NDDS_Transport_DllExport NDDS_Transport_Port_t
450NDDS_Transport_UDPv6_Socket_bind_with_ip(
451 RTI_INT32 s_in,
452 const NDDS_Transport_Port_t port_desired_in,
453 const struct in6_addr *ip_in);
454
455/*i \ingroup NDDS_Transport_UDPv6_SocketFactoryClass
456 * \brief Default socket factory.
457 */
458extern NDDS_Transport_DllVariable struct NDDS_Transport_UDPv6_SocketFactory
459 NDDS_Transport_UDPv6_g_socketFactory;
460
461#define NDDS_Transport_UDPv6_get_class_name_cEA \
462 NDDS_Transport_UDP_get_class_name_cEA
463
464/*e \ingroup NDDS_Transport_UDPv6_Plugin
465 * \brief Realization of NDDS_Transport_String_To_Address_Fcn_cEA for IP
466 * transports.
467 *
468 * Converts a host name string to a IPv6 address.
469 *
470 * @param self NOT USED. May be NULL.
471 *
472 * @param address_out \st_out The corresponding numerical value in IPv6
473 * format.
475 * @param address_in \st_in The name of the IPv6 address. It can be a
476 * dot notation name or a host name. If NULL, then the IP address of
477 * the localhost will be returned.
478 *
479 * @see NDDS_Transport_String_To_Address_Fcn_cEA for complete
480 * documentation.
481 */
482#define NDDS_Transport_UDPv6_string_to_address_cEA \
483 NDDS_Transport_UDP_string_to_address_cEA
484
485/* ================================================================= */
486/* UDP/IPv6 Transport Plugin */
487/* ================================================================= */
488
489/*e \ingroup NDDS_Transport_UDPv6_Plugin
490 * \brief Create an instance of a UDPv6 Transport Plugin.
491 *
492 * An application may create and register multiple instances of this
493 * Transport Plugin with \ndds. Multiple instances of the plugin may be useful
494 * for partitioning the network interfaces across multiple \ndds domains.
495 * However, note that the underlying transport, the operating system's IP layer,
496 * is still a "singleton." For example, if a unicast transport has already
497 * bound to a port, and another unicast transport tries to bind to the same
498 * port, the second attempt will fail.
499 *
500 * The transport plugin honors the interface/multicast "white" and "black"
501 * lists specified in the NDDS_Transport_UDPv6_Property_t#parent:
502 * - NDDS_Transport_Property_t#allow_interfaces_list,
503 * - NDDS_Transport_Property_t#deny_interfaces_list,
504 * - NDDS_Transport_Property_t#allow_multicast_interfaces_list,
505 * - NDDS_Transport_Property_t#deny_multicast_interfaces_list
506 *
507 * The format of a string in these lists is assumed to be in standard IPv6
508 * dot notation, possibly containing wildcards. For example:
509 * - 10.10.30.232
510 * - 10.10.*.*
511 * - 192.168.1.*
512 * - etc.
513 * Strings not in the correct format will be ignored.
514 *
515 * @param property_in \st_in Desired behavior of this transport. May be
516 * NULL for default property.
517 *
518 * @return A UDPv6 Transport Plugin instance on success; or NULL on failure.
519 */
520extern NDDS_Transport_DllExport NDDS_Transport_Plugin *NDDS_Transport_UDPv6_new(
521 const struct NDDS_Transport_UDPv6_Property_t *property_in);
522
523/*i \ingroup NDDS_Transport_UDPv6_Plugin
524 * \brief Create an instance of a UDPv6 Transport Plugin.
525 *
526 * \copydoc NDDS_Transport_UDPv6_new
527 *
528 * @param socket_factory_in \st_in The factory that will create all the
529 * sockets to be used in the transport. May be NULL if default factory
530 * is to be used. Only used by RTI internal testing.
531 * End users should set this parameter to NULL.
532 *
533 * @param interface_filter_in \st_in A function that will be used to
534 * filter out network interfaces that this plugin can use. May be NULL if
535 * default interface listener is to be used. The default listener uses
536 * The NDDS_Transport_UDPv6_Property_t#parent's lists to select the interfaces.
537 * Only used by RTI internal testing. End users should set this
538 * parameter to NULL.
539 *
540 * @exception RTI_LOG_MALLOC_FAILURE_d RTI_LOG_CREATION_FAILURE_s
541 * RTI_LOG_PRECONDITION_FAILURE RTI_LOG_INIT_FAILURE_s
542 */
543extern NDDS_Transport_DllExport NDDS_Transport_Plugin *
544NDDS_Transport_UDPv6_newI(
545 const struct NDDS_Transport_UDPv6_Property_t *property_in,
546 struct NDDS_Transport_UDPv6_SocketFactory *socket_factory_in,
547 struct NDDS_Transport_UDPv6_InterfaceListener *interface_listener_in);
548
549#define NDDS_Transport_UDPv6_get_receive_interfaces_cEA \
550 NDDS_Transport_UDP_get_receive_interfaces_cEA
551
552#define NDDS_Transport_UDPv6_get_ignore_loopback_interface_status \
553 NDDS_Transport_UDP_get_ignore_loopback_interface_status
554
555#define NDDS_Transport_UDPv6_is_local_address \
556 NDDS_Transport_UDP_is_local_address
557
558#define NDDS_Transport_UDPv6_map_transport_priority \
559 NDDS_Transport_UDP_map_transport_priority
560
561/*i \ingroup NDDS_Transport_UDPv6_Plugin
562 * \brief Definition of local host.
563 */
564#define NDDS_TRANSPORT_UDPV6_ADDRESS_LOCALHOST \
565 { \
566 { \
567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 \
568 } \
569 }
570
571#define NDDS_TRANSPORT_UDPV6_UNBLOCK_MESSAGE_SIZE \
572 NDDS_TRANSPORT_UDP_UNBLOCK_MESSAGE_SIZE
573
574#define NDDS_Transport_UDPv6_Statistics NDDS_Transport_UDP_Statistics
575
576#define NDDS_Transport_UDPv6_get_statistics NDDS_Transport_UDP_get_statistics
577
578#define NDDS_Transport_UDPv6_get_priority_range \
579 NDDS_Transport_UDP_get_priority_range
580
581#define NDDS_Transport_UDPv6_Address_print NDDS_Transport_UDP_Address_print
582
583
584#ifdef __cplusplus
585} /* extern "C" */
586#endif
587
588#include "transport/transport_udpv6_impl.h"
589
590#endif /* transport_udpv6_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 DDS_DomainParticipant.
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