31 #ifndef netio_address_h
32 #define netio_address_h
37 #ifndef osapi_config_h
43 #ifndef reda_sequence_h
44 #include "reda/reda_sequence.h"
47 #include "db/db_api.h"
62 #define NETIO_ADDRESS_PORT_INVALID (0)
68 #define NETIO_ADDRESS_KIND_INVALID (-1)
74 #define NETIO_ADDRESS_KIND_RESERVED 0
80 #define NETIO_ADDRESS_KIND_UDPv4 1
86 #define NETIO_ADDRESS_KIND_UDPv6 2
92 #define NETIO_ADDRESS_KIND_SHMEM 0x01000000
98 #define NETIO_ADDRESS_KIND_INTRA 0x01001000
104 #define NETIO_ADDRESS_MAX_32BIT (4)
110 #define NETIO_ADDRESS_MAX_8IT (16)
115 struct NETIO_GuidPrefix
123 struct NETIO_GuidEntity
131 struct NETIO_AddressRtps
135 RTI_UINT32 instance_id;
136 RTI_UINT32 object_id;
144 struct NETIO_GuidPrefix prefix;
145 struct NETIO_GuidEntity entity;
151 struct NETIO_AddressGuidPrefix
153 RTI_UINT8 prefix[12];
161 struct NETIO_AddressIp4
167 RTI_UINT8 _unused[12];
173 struct NETIO_AddressIpv6
181 struct NETIO_AddressShem
193 struct NETIO_AddressInit
205 struct NETIO_AddressInt32
214 struct NETIO_AddressUInt32
222 union NETIO_AddressValue
224 struct NETIO_AddressRtps rtps_guid;
225 struct NETIO_Guid guid;
226 struct NETIO_AddressGuidPrefix guid_prefix;
227 struct NETIO_AddressIp4 ipv4;
228 struct NETIO_AddressIpv6 ipv6;
229 struct NETIO_AddressShem shmem;
230 struct NETIO_AddressInit init;
231 struct NETIO_AddressInt32 as_int32;
232 struct NETIO_AddressUInt32 as_uint32;
254 union NETIO_AddressValue value;
261 #define NETIO_ADDRESS_FLAG_MULTICAST (0x80000000)
267 #define NETIO_ADDRESS_FLAG_INTERNAL (0x40000000)
277 NETIO_Address_is_multicast(
const struct NETIO_Address *
const addr);
287 NETIO_Address_is_internal(
const struct NETIO_Address *
const addr);
295 NETIO_Address_set_multicast(
struct NETIO_Address *
const addr);
303 NETIO_Address_set_internal(
struct NETIO_Address *
const addr);
313 NETIO_Address_set_kind(
struct NETIO_Address *
const addr,RTI_UINT32 kind,RTI_INT32 flags);
322 NETIODllExport RTI_INT32
323 NETIO_Address_get_kind(
const struct NETIO_Address *
const addr);
332 NETIODllExport RTI_INT32
333 NETIO_Address_kind(RTI_INT32 kind);
339 #define NETIO_NETMASK_MASK_LENGTH (4)
345 #define NETIO_NETMASK_MASK_BITS_PER_UNIT ((RTI_INT32)(sizeof(RTI_INT32) * 8))
350 #define NETIO_NETMASK_MASK_MAX_BITS \
351 (NETIO_NETMASK_MASK_LENGTH * NETIO_NETMASK_MASK_BITS_PER_UNIT)
366 RTI_UINT32 mask[NETIO_NETMASK_MASK_LENGTH];
372 #define NETIO_Netmask_INITIALIZER \
382 #define T struct NETIO_Address
383 #define TSeq NETIO_AddressSeq
384 #include <reda/reda_sequence_decl.h>
386 #define T struct NETIO_Netmask
387 #define TSeq NETIO_NetmaskSeq
388 #include <reda/reda_sequence_decl.h>
394 #define NETIO_AddressSeq_INITIALIZER REDA_DEFINE_SEQUENCE_INITIALIZER(struct NETIO_Address)
400 #define NETIO_NetmaskSeq_INITIALIZER REDA_DEFINE_SEQUENCE_INITIALIZER(struct NETIO_Netmask)
407 #define NETIO_ADDRESS_GUID_UNKNOWN {{{0,0,0,0,0,0,0,0,0,0,0,0}},{{0,0,0,0}}}
423 NETIODllExport RTI_INT32
424 NETIO_Address_compare(
const struct NETIO_Address *left_addr,
425 const struct NETIO_Address *right_addr);
431 #define NETIO_Address_INITIALIZER \
433 NETIO_ADDRESS_KIND_RESERVED, \
445 NETIO_Address_init(
struct NETIO_Address *addr,RTI_INT32 kind);
455 NETIO_Address_set_ipv4(
struct NETIO_Address *addr,RTI_UINT32 port,RTI_UINT32 address);
465 NETIO_Address_set_guid(
struct NETIO_Address *addr,RTI_UINT32 port,
struct NETIO_Guid *guid);
482 NETIO_Address_set_guid_from_key(
struct NETIO_Address *addr,RTI_UINT32 port,
483 struct NETIO_AddressInt32 *key);
500 NETIO_Address_set_guid_from_int32(
struct NETIO_Address *addr,RTI_UINT32 port,
501 RTI_UINT32 int0,RTI_UINT32 int1,
502 RTI_UINT32 int2,RTI_UINT32 int3);
513 NETIO_Address_is_udpv4_multicast(
struct NETIO_Address *addr);
550 MUST_CHECK_RETURN NETIODllExport
RTI_BOOL
551 NETIO_Address_parse(
const char *name,
552 RTI_UINT32 *base_port,
553 RTI_INT32 *low_index,
554 RTI_INT32 *high_index,
555 RT_ComponentFactoryId_T *out_id,
556 char *address_string,
557 RTI_SIZE_T address_max_string);
562 #define NETIO_ADDRESS_TOKEN_MAX_SIZE 256
569 #define NETIO_PREFIX_TOKEN_MAX_SIZE (RT_MAX_FACTORY_NAME + 1)
581 NETIO_ROUTEKIND_META,
608 (*NETIO_PortCalculateFunc_T)(
void *param,NETIO_RouteKind_T kind,
609 RTI_UINT32 port_base,RTI_INT32 index,
610 struct NETIO_Address *address);