34 #ifndef osapi_config_h
43 #include "reda/reda_string.h"
46 #ifndef netio_address_h
47 #include "netio/netio_address.h"
50 #ifndef netio_interface_h
68 struct NETIO_AddressResolverProperty
73 RTI_UINT32 max_interfaces;
78 RTI_INT32 default_low_index;
83 RTI_INT32 default_high_index;
88 RTI_INT32 default_base_port;
94 #define NETIO_AddressResolverProperty_INITIALIZER \
105 typedef struct NETIO_AddressResolver
110 struct NETIO_AddressResolverProperty property;
115 DB_Table_T resolver_table;
121 } NETIO_AddressResolver_T;
123 struct NETIO_AddressResolveEntry;
136 typedef struct NETIO_AddressResolveContext
141 RTI_BOOL is_initialized;
153 RTI_INT32 high_index;
158 RTI_UINT32 base_port;
163 RTI_INT32 current_index;
168 struct NETIO_AddressResolveEntry *r_entry;
180 char out_address_string[NETIO_ADDRESS_TOKEN_MAX_SIZE];
185 RT_ComponentFactoryId_T intfid;
190 NETIO_RouteKind_T kind;
191 } NETIO_AddressResolveContext_T;
196 #define NETIO_AddressResolveContext_INITIALIZER \
212 MUST_CHECK_RETURN NETIODllExport NETIO_AddressResolver_T*
213 NETIO_AddressResolver_new(
const char *name,
215 struct NETIO_AddressResolverProperty *property);
227 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
228 NETIO_AddressResolver_delete(NETIO_AddressResolver_T *nar);
244 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
245 NETIO_AddressResolver_add_interface(NETIO_AddressResolver_T *nar,
247 NETIO_PortCalculateFunc_T port_resolve,
248 void *port_resolve_param,
249 NETIO_Interface_T *intf);
265 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
266 NETIO_AddressResolver_delete_interface(NETIO_AddressResolver_T *nar,
269 NETIO_Interface_T **intf);
284 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
285 NETIO_AddressResolver_lookup_interface(NETIO_AddressResolver_T *nar,
287 NETIO_Interface_T **intf);
310 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
311 NETIO_AddressResolver_resolve(NETIO_AddressResolver_T *nar,
313 NETIO_RouteKind_T kind,
314 const char *address_string,
315 NETIO_AddressResolveContext_T *context);
336 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
337 NETIO_AddressResolver_get_next(NETIO_AddressResolver_T *nar,
338 NETIO_Interface_T **netio_intf,
339 RT_ComponentFactoryId_T *
id,
340 struct NETIO_Address *address,
341 NETIO_AddressResolveContext_T *context,
352 NETIO_AddressResolveContext_init(NETIO_AddressResolveContext_T *c);
366 struct NETIO_RouteResolverProperty
371 RTI_SIZE_T max_routes;
378 #define NETIO_RouteResolverProperty_INITIALIZER \
383 struct NETIO_RouteResolver;
388 typedef struct NETIO_RouteResolver NETIO_RouteResolver_T;
407 MUST_CHECK_RETURN NETIODllExport NETIO_RouteResolver_T*
408 NETIO_RouteResolver_new(DB_Database_T db,NETIO_AddressResolver_T *nar,
409 const char*
const name,
410 struct NETIO_RouteResolverProperty *
const property);
426 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
427 NETIO_RouteResolver_delete(NETIO_RouteResolver_T *r_table);
449 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
450 NETIO_RouteResolver_add_interface(NETIO_RouteResolver_T *r_table,
451 NETIO_Interface_T *intf,
452 struct NETIO_Address *address,
453 struct NETIO_Netmask *netmask,
465 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
466 NETIO_RouteResolver_lookup_interface(NETIO_RouteResolver_T *
const r_table,
467 const struct NETIO_Address *
const address);
487 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
488 NETIO_RouteResolver_delete_interface(NETIO_RouteResolver_T *r_table,
489 NETIO_Interface_T *intf,
490 struct NETIO_Address *address,
491 struct NETIO_Netmask *netmask,
519 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
520 NETIO_RouteResolver_add_route(NETIO_RouteResolver_T *r_table,
521 NETIO_Interface_T *src_intf,
522 struct NETIO_Address *dst_reader,
523 struct NETIO_Address *via_address,
524 struct NETIORouteProperty *property,
525 RTI_BOOL *route_existed,
526 RTI_BOOL *found_route);
543 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
544 NETIO_RouteResolver_delete_route(NETIO_RouteResolver_T *r_table,
545 NETIO_Interface_T *src_intf,
546 struct NETIO_Address *dst_reader,
547 struct NETIO_Address *via_address,
548 RTI_BOOL *route_existed,
549 RTI_BOOL *found_route);
579 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
580 NETIO_RouteResolver_add_peer(NETIO_RouteResolver_T *r_table,
581 NETIO_Interface_T *src_intf,
582 struct NETIO_Address *dst_reader,
583 NETIO_RouteKind_T peer_kind,
584 const char *peer_address,
585 struct NETIORouteProperty *property,
586 RTI_BOOL *route_existed,
587 RTI_BOOL *found_route);
617 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
618 NETIO_RouteResolver_delete_peer(NETIO_RouteResolver_T *r_table,
619 NETIO_Interface_T *src_intf,
620 struct NETIO_Address *dst_reader,
621 NETIO_RouteKind_T peer_kind,
622 const char *peer_address,
623 RTI_BOOL *route_existed,
624 RTI_BOOL *found_route);
639 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
640 NETIO_RouteResolver_lookup_route(NETIO_RouteResolver_T *r_table,
641 NETIO_Interface_T *src_intf,
642 struct NETIO_Address *dst_reader,
643 struct NETIO_Address *via_address,
644 RTI_BOOL *route_entry);
653 struct NETIO_BindResolver;
658 typedef struct NETIO_BindResolver NETIO_BindResolver_T;
663 struct NETIO_BindResolverProperty
668 RTI_SIZE_T max_routes;
675 #define NETIO_BindResolverProperty_INITIALIZER \
698 MUST_CHECK_RETURN NETIODllExport NETIO_BindResolver_T*
699 NETIO_BindResolver_new(DB_Database_T db,NETIO_AddressResolver_T *nar,
700 const char*
const name,
701 struct NETIO_BindResolverProperty *
const property);
717 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
718 NETIO_BindResolver_delete(NETIO_BindResolver_T* r_table);
739 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
740 NETIO_BindResolver_add_route(NETIO_BindResolver_T *r_table,
741 NETIO_RouteKind_T kind,
742 RT_ComponentFactoryId_T *
id,
743 struct NETIO_Address *address,
744 NETIO_Interface_T *intf,
764 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
765 NETIO_BindResolver_delete_route(NETIO_BindResolver_T *r_table,
766 NETIO_RouteKind_T kind,
767 RT_ComponentFactoryId_T *
id,
768 struct NETIO_Address *address,
793 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
794 NETIO_BindResolver_lookup_by_name(NETIO_BindResolver_T *r_table,
795 NETIO_RouteKind_T kind,
797 const char *
const name,
798 RT_ComponentFactoryId_T *
id,
799 NETIO_Interface_T **intf,
800 struct NETIO_AddressSeq *resolved);
821 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
822 NETIO_BindResolver_lookup_by_address(NETIO_BindResolver_T *r_table,
823 NETIO_RouteKind_T kind,
824 RT_ComponentFactoryId_T *
id,
825 struct NETIO_Address *address,
826 NETIO_Interface_T **intf);
844 SHOULD_CHECK_RETURN NETIODllExport RTI_BOOL
845 NETIO_BindResolver_release_addresses(NETIO_BindResolver_T* r_table,
846 struct REDA_StringSeq *transport,
847 NETIO_RouteKind_T kind,
848 struct NETIO_AddressSeq *locator_seq);
872 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
873 NETIO_BindResolver_reserve_addresses(NETIO_BindResolver_T* r_table,
875 struct REDA_StringSeq *transport,
876 NETIO_RouteKind_T kind,
877 struct NETIO_AddressSeq *mc_locator_seq,
878 struct NETIO_AddressSeq *uc_locator_seq);
900 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
901 NETIO_BindResolver_unbind(NETIO_BindResolver_T* r_table,
902 struct REDA_StringSeq *transport,
903 NETIO_RouteKind_T kind,
904 struct NETIO_Address *from_address,
905 NETIO_Interface_T *to_intf,
906 struct NETIO_Address *to_address,
907 RTI_BOOL *route_existed,
908 RTI_BOOL *found_route);
930 MUST_CHECK_RETURN NETIODllExport RTI_BOOL
931 NETIO_BindResolver_bind(NETIO_BindResolver_T* r_table,
932 struct REDA_StringSeq *transport,
933 NETIO_RouteKind_T kind,
934 struct NETIO_Address *from_address,
935 NETIO_Interface_T *to_intf,
936 struct NETIO_Address *to_address,
937 RTI_BOOL *route_existed,
938 RTI_BOOL *found_route);