- HandlerMinelayerData: BUILD_RTI Guards für RTI-Abhängigkeiten - svcTabCommon: Export-Header-Fix via Fallback-Target - TrainingAreaBase: Stub-Header für BUILD_RTI=OFF - ddsfts: Include-Pfad und Dependency-Fixes - BUILD_RTI=OFF Compilation vollständig unterstützt Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M0JNZA586SACX1PRZ2DJAE5S
3795 lines
137 KiB
C
3795 lines
137 KiB
C
/* (c) Copyright 2003-2021, Real-Time Innovations, Inc. All rights reserved. */
|
|
/*
|
|
* @(#)pres_participant.h generated by: makeheader Tue Apr 7 17:39:30 2026
|
|
*
|
|
* built from: participant.ifc
|
|
*/
|
|
|
|
#ifndef pres_participant_h
|
|
#define pres_participant_h
|
|
|
|
|
|
#ifndef osapi_type_h
|
|
#include "osapi/osapi_type.h"
|
|
#endif
|
|
#ifndef osapi_ntptime_h
|
|
#include "osapi/osapi_ntptime.h"
|
|
#endif
|
|
#ifndef reda_sequenceNumber_h
|
|
#include "reda/reda_sequenceNumber.h"
|
|
#endif
|
|
#ifndef reda_fastBuffer_h
|
|
#include "reda/reda_fastBuffer.h"
|
|
#endif
|
|
#include "reda/reda_vector.h"
|
|
#ifndef property_propertyNames_h
|
|
#include "property/property_propertyNames.h"
|
|
#endif
|
|
#ifndef netio_common_h
|
|
#include "netio/netio_common.h"
|
|
#endif
|
|
#ifndef mig_rtps_h
|
|
#include "mig/mig_rtps.h"
|
|
#endif
|
|
#ifndef commend_activeFacade_h
|
|
#include "commend/commend_activeFacade.h"
|
|
#endif
|
|
#ifndef pres_dll_h
|
|
#include "pres/pres_dll.h"
|
|
#endif
|
|
#ifndef pres_common_h
|
|
#include "pres/pres_common.h"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* Participant table names */
|
|
#define PRES_PARTICIPANT_TABLE_NAME_REMOTE_PARTICIPANT "remoteParticipant"
|
|
|
|
/*
|
|
* A table containing remote participants that already have a record in the
|
|
* PRES_PARTICIPANT_TABLE_NAME_REMOTE_PARTICIPANT. The already-existing record
|
|
* is for a remote participant that is unauthenticated, and we assert a record
|
|
* in the REMOTE_PARTICIPANT_PENDING_AUTHENTICATION table when we rediscover
|
|
* that same participant and we want to give it a chance to actually complete
|
|
* authentication. If/when it completes authentication, we will replace the
|
|
* REMOTE_PARTICIPANT record with the REMOTE_PARTICIPANT_PENDING_AUTHENTICATION
|
|
* record and remove the REMOTE_PARTICIPANT_PENDING_AUTHENTICATION record.
|
|
*
|
|
* We will only create this table if allowUnauthenticatedParticipants is true.
|
|
*/
|
|
#define PRES_PARTICIPANT_TABLE_NAME_REMOTE_PARTICIPANT_PENDING_AUTHENTICATION \
|
|
"remoteParticipantPendingAuthentication"
|
|
|
|
#define PRES_PARTICIPANT_TABLE_NAME_REMOTE_PARTICIPANT_SECURITY "remoteParticipantSecurity"
|
|
#define PRES_PARTICIPANT_TABLE_NAME_WRR "pres writer matching remote reader"
|
|
#define PRES_PARTICIPANT_TABLE_NAME_RRW "pres reader matching remote writer"
|
|
|
|
|
|
/* This property when enabled will allow the creation of a topic multiple times
|
|
* assuming that the type name is different
|
|
*/
|
|
#define PRES_PARTICIPANT_ALLOW_DUPLICATE_TOPIC PROPERTY_NAME_DDS_PARTICIPANT_ALLOW_DUPLICATE_TOPIC
|
|
|
|
|
|
/* This property can be used to enable backward compatibility with 4.5d and
|
|
* earlier DATA_FRAG submessage alignment.
|
|
*/
|
|
#define PRES_PARTICIPANT_USE_45D_COMPATIBLE_ALIGNMENT_ENFORCEMENT_PROPERTY_NAME \
|
|
PROPERTY_NAME_DDS_PARTICIPANT_USE_45D_COMPATIBLE_ALIGNMENT_ENFORCEMENT
|
|
|
|
|
|
#define PRES_PARTICIPANT_INITIAL_AUTO_OBJECT_KEY_PROPERTY_NAME \
|
|
PROPERTY_NAME_DDS_PARTICIPANT_INITIAL_AUTO_OBJECT_ID
|
|
|
|
/*
|
|
* Properties to configure trust plugins behavior.
|
|
*/
|
|
#define PRES_PARTICIPANT_TRUST_PLUGINS_RTPS_PROTECTION_MAX_OVERHEAD_PROPERTY_NAME \
|
|
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_RTPS_PROTECTION_MAX_OVERHEAD
|
|
#define PRES_PARTICIPANT_TRUST_PLUGINS_METADATA_PROTECTION_MAX_OVERHEAD_PROPERTY_NAME \
|
|
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_METADATA_PROTECTION_MAX_OVERHEAD
|
|
|
|
#define PRES_PARTICIPANT_TRUST_PLUGINS_IS_NON_SECURE_PARTICIPANT_DISCOVERY_MUTABLE_PROPERTY_NAME \
|
|
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_IS_NON_SECURE_PARTICIPANT_DISCOVERY_MUTABLE
|
|
|
|
#define PRES_PARTICIPANT_TRUST_PLUGINS_AUTHENTICATION_TIMEOUT_SEC_PROPERTY_NAME \
|
|
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_AUTHENTICATION_TIMEOUT_SEC
|
|
#define PRES_PARTICIPANT_TRUST_PLUGINS_AUTHENTICATION_REQUEST_DELAY_SEC_PROPERTY_NAME \
|
|
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_AUTHENTICATION_REQUEST_DELAY_SEC
|
|
/*
|
|
* Currently used only for testing. This property is meant to be propagated into
|
|
* the wire. If set, remote participants will pass this version as part of the
|
|
* remote participant info.
|
|
*/
|
|
#define PRES_PARTICIPANT_TRUST_PLUGINS_COMPATIBILITY_MODE_VERSION_ID_PROPERTY_NAME \
|
|
PROPERTY_NAME_DDS_PARTICIPANT_TRUST_PLUGINS_COMPATIBILITY_MODE_VERSION_ID
|
|
|
|
|
|
/*
|
|
* Macro to check if TypeObject V1 serialization is disabled based on the
|
|
* type_object_max_serialized_length resource limit.
|
|
* Returns RTI_TRUE if the limit is 0 or PRES_LENGTH_AUTO (AUTO means no serialization).
|
|
*/
|
|
#define PRESParticipant_isTypeObjectV1SerializationDisabled(maxSerializedLength__) \
|
|
((maxSerializedLength__) == 0 || (maxSerializedLength__) == PRES_LENGTH_AUTO)
|
|
|
|
|
|
|
|
|
|
#define PRES_PARTICIPANT_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_LIMIT (MIG_RTPS_PATHNAME_LEN_MAX + 1)
|
|
|
|
|
|
struct PRES_RtpsWellKnownPorts_t {
|
|
|
|
RTI_INT32 port_base;
|
|
RTI_INT32 domain_id_gain;
|
|
RTI_INT32 participant_id_gain;
|
|
RTI_INT32 builtin_multicast_port_offset;
|
|
RTI_INT32 builtin_unicast_port_offset;
|
|
RTI_INT32 user_multicast_port_offset;
|
|
RTI_INT32 user_unicast_port_offset;
|
|
};
|
|
|
|
struct PRESParticipantDerivableQosPolicy {
|
|
/*e
|
|
* Whether the current value has been derived from the participant
|
|
*/
|
|
RTIBool isDerivedFromParticipant;
|
|
};
|
|
|
|
struct PRESLocatorDerivableQosPolicy {
|
|
/*e formalize the fact that this is derived from a derivable policy */
|
|
struct PRESParticipantDerivableQosPolicy parent;
|
|
/*e content of the policy itself */
|
|
struct PRESLocatorQosPolicy policy;
|
|
};
|
|
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
Default locator Qos policy value
|
|
*/
|
|
#define PRES_LOCATOR_DERIVABLE_QOS_POLICY_DEFAULT { \
|
|
{RTI_TRUE}, /* derived? */ \
|
|
PRES_LOCATOR_QOS_POLICY_DEFAULT \
|
|
}
|
|
|
|
struct PRESReducedLocatorDerivableQosPolicy {
|
|
/*e formalize the fact that this is derived from a derivable policy */
|
|
struct PRESParticipantDerivableQosPolicy parent;
|
|
/*e content of the locator itself */
|
|
struct RTINetioLocator locator;
|
|
};
|
|
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
* Default locator Qos policy value
|
|
*/
|
|
#define PRES_REDUCED_LOCATOR_DERIVABLE_QOS_POLICY_DEFAULT { \
|
|
{RTI_TRUE}, /* derived? */ \
|
|
RTI_NETIO_LOCATOR_INVALID \
|
|
}
|
|
|
|
struct PRESDynamicLocatorDerivableQosPolicy {
|
|
/*e formalize the fact that this is derived from a derivable policy */
|
|
struct PRESParticipantDerivableQosPolicy parent;
|
|
/*e content of the policy itself */
|
|
REDAVector policy;
|
|
};
|
|
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
* Default dynamic locator Qos policy value
|
|
*/
|
|
#define PRESDynamicLocatorDerivableQosPolicy_INITIALIZER \
|
|
{ \
|
|
{ RTI_TRUE }, /* derived? */ \
|
|
REDAVector_INITIALIZER \
|
|
}
|
|
|
|
extern PRESDllExport RTIBool PRESDynamicLocatorDerivableQosPolicy_initialize(
|
|
struct PRESDynamicLocatorDerivableQosPolicy *self,
|
|
struct REDAPluggableMemoryAllocator *allocator,
|
|
RTI_INT32 initialCapacity);
|
|
|
|
extern PRESDllExport void PRESDynamicLocatorDerivableQosPolicy_finalize(
|
|
struct PRESDynamicLocatorDerivableQosPolicy *self);
|
|
|
|
struct PRESParticipantSecurityTokens {
|
|
struct PRESDataHolder identity;
|
|
struct PRESDataHolder permissions;
|
|
};
|
|
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_TOKENS_DEFAULT { \
|
|
PRES_DATA_HOLDER_INITIALIZER, \
|
|
PRES_DATA_HOLDER_INITIALIZER \
|
|
}
|
|
|
|
extern PRESDllExport int PRESParticipantSecurityTokens_compare(
|
|
const struct PRESParticipantSecurityTokens *left,
|
|
const struct PRESParticipantSecurityTokens *right);
|
|
|
|
typedef RTICdrUnsignedLong PRESParticipantSecurityAttributesBitmask;
|
|
|
|
typedef RTICdrUnsignedLong PRESPluginParticipantSecurityAttributesBitmask;
|
|
|
|
|
|
/* axk: Authenticated participant eXchanged Key. */
|
|
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_RTPS_AXK_PROTECTED \
|
|
(0x00000001U << 0)
|
|
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_DISCOVERY_PROTECTED \
|
|
(0x00000001U << 1)
|
|
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_LIVELINESS_PROTECTED \
|
|
(0x00000001U << 2)
|
|
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_KEY_REVISION_ENABLED \
|
|
(0x00000001U << 3)
|
|
/* psk: Pre-Shared Key. */
|
|
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_RTPS_PSK_PROTECTED \
|
|
(0x00000001U << 4)
|
|
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_VALID (0x00000001U << 31)
|
|
|
|
/*
|
|
* Vendor participant protection info flags. These flags (defining the bits
|
|
* within securityVendorProtectionInfo) are understood by both core and the
|
|
* security plugins. The definitions here must match those defined in
|
|
* the security plugins (security_access_control.h)
|
|
*/
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_SERVICE_REQUEST_PROTECTED \
|
|
(0x00000001 << 0U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_SERVICE_REQUEST_ENCRYPTED \
|
|
(0x00000001 << 1U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_SERVICE_REQUEST_ORIGIN_AUTHENTICATED \
|
|
(0x00000001 << 2U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_INSTANCE_STATE_PROTECTED \
|
|
(0x00000001 << 3U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_INSTANCE_STATE_ENCRYPTED \
|
|
(0x00000001 << 4U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_INSTANCE_STATE_ORIGIN_AUTHENTICATED \
|
|
(0x00000001 << 5U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_METRICS_PROTECTED \
|
|
(0x00000001 << 6U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_METRICS_ENCRYPTED \
|
|
(0x00000001 << 7U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_METRICS_ORIGIN_AUTHENTICATED \
|
|
(0x00000001 << 8U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_LOGGING_PROTECTED \
|
|
(0x00000001 << 9U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_LOGGING_ENCRYPTED \
|
|
(0x00000001 << 10U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_MONITORING_LOGGING_ORIGIN_AUTHENTICATED \
|
|
(0x00000001 << 11U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_TYPE_LOOKUP_SERVICE_PROTECTED \
|
|
(0x00000001U << 12U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_TYPE_LOOKUP_SERVICE_ENCRYPTED \
|
|
(0x00000001U << 13U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_TYPE_LOOKUP_SERVICE_ORIGIN_AUTHENTICATED \
|
|
(0x00000001U << 14U)
|
|
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_VALID \
|
|
(0x00000001 << 31U)
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_BITMASK_DEFAULT 0
|
|
#define PRES_PLUGIN_PARTICIPANT_SECURITY_ATTRIBUTES_BITMASK_DEFAULT 0
|
|
#define PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_BITMASK_DEFAULT 0
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_isRtpsProtected(att) \
|
|
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_RTPS_AXK_PROTECTED) != 0)
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_isRtpsProtectedWithPresharedKey(att) \
|
|
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_RTPS_PSK_PROTECTED) != 0)
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_isDiscoveryProtected(att) \
|
|
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_DISCOVERY_PROTECTED) != 0)
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_isLivelinessProtected(att) \
|
|
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_LIVELINESS_PROTECTED) != 0)
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_isMonitoringMetricsProtected(att) \
|
|
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_MONITORING_METRICS_PROTECTED) != 0)
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_isMonitoringLoggingProtected(att) \
|
|
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_MONITORING_LOGGING_PROTECTED) != 0)
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_isKeyRevisionEnabled(att) \
|
|
(((att) \
|
|
& PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_KEY_REVISION_ENABLED) \
|
|
!= 0)
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_isValid(att) \
|
|
(((att) & PRES_PARTICIPANT_SECURITY_ATTRIBUTES_FLAG_IS_VALID) != 0)
|
|
|
|
#define PRESParticipantSecurityAttributesBitmask_compare(left, right) \
|
|
(!PRESParticipantSecurityAttributesBitmask_isValid(left) \
|
|
&& !PRESParticipantSecurityAttributesBitmask_isValid(right) ? 0 : \
|
|
REDAOrderedDataType_compareInt(&(left), &(right)))
|
|
|
|
/*
|
|
* This macro is used for discovery, to ensure that the local and remote
|
|
* participants are configured with compatible security.
|
|
*/
|
|
#define PRESParticipantSecurityProtectionInfo_compare(left, right) \
|
|
(PRESParticipantSecurityAttributesBitmask_compare( \
|
|
(left)->bitmask, \
|
|
(right)->bitmask) != 0 \
|
|
? PRESParticipantSecurityAttributesBitmask_compare( \
|
|
(left)->bitmask, \
|
|
(right)->bitmask) \
|
|
: PRESParticipantSecurityAttributesBitmask_compare( \
|
|
(left)->pluginBitmask, \
|
|
(right)->pluginBitmask))
|
|
|
|
#define PRESParticipantSecurityVendorProtectionInfoBitmask_isValid(att) \
|
|
(((att) & PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_VALID) != 0)
|
|
|
|
#define PRESParticipantSecurityVendorProtectionInfo_isServiceRequestProtected(info__) \
|
|
(((info__)->bitmask & \
|
|
PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_SERVICE_REQUEST_PROTECTED) != 0)
|
|
|
|
#define PRESParticipantSecurityVendorProtectionInfo_isInstanceStateConsistencyProtected(info__) \
|
|
(((info__)->bitmask & \
|
|
PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_FLAG_IS_INSTANCE_STATE_PROTECTED) != 0)
|
|
|
|
#define PRESParticipantSecurityVendorProtectionInfo_needsSerialization(info__) \
|
|
(((info__)->nonDerivedBitmask) != 0)
|
|
|
|
/* Digital signature algorithms */
|
|
#define PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT \
|
|
(PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_RSASSA_PKCS1V15_2048_SHA256 \
|
|
| PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_RSASSA_PSS_MGF1SHA256_2048_SHA256 \
|
|
| PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_ECDSA_P256_SHA256)
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT \
|
|
PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_ECDSA_P256_SHA256
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT \
|
|
(PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_RSASSA_PSS_MGF1SHA256_2048_SHA256 \
|
|
| PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_ECDSA_P256_SHA256)
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT \
|
|
PRES_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_BIT_ECDSA_P256_SHA256
|
|
|
|
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_INITIALIZER_NOSEC { \
|
|
{0, 0}, \
|
|
{0, 0} \
|
|
}
|
|
|
|
/*
|
|
* The default digital signature algorithms set - this is the supported mask
|
|
* when a DP does not propagate their mask. This is defined in DDS Security 1.2
|
|
* specification (section 7.3.11.2) and the values were selected to maintain backward
|
|
* interoperability with releases pre-7.0.0, where we do not propagate the
|
|
* supported and required algorithms.
|
|
*/
|
|
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_INITIALIZER_SEC12 { \
|
|
{PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT,\
|
|
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT}, \
|
|
{PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT, \
|
|
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT} \
|
|
}
|
|
|
|
struct PRESParticipantSecurityDigitalSignatureAlgorithmInfo {
|
|
PRESSecurityCryptoAlgorithmRequirements trustChain;
|
|
PRESSecurityCryptoAlgorithmRequirements messageAuth;
|
|
};
|
|
|
|
|
|
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_isDefaultNoSec(signatureAlg__) \
|
|
(((signatureAlg__).trustChain.supportedMask == 0) \
|
|
&& ((signatureAlg__).trustChain.requiredMask == 0) \
|
|
&& ((signatureAlg__).messageAuth.supportedMask == 0) \
|
|
&& ((signatureAlg__).messageAuth.requiredMask == 0))
|
|
|
|
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_isDefaultSec12(signatureAlg__) \
|
|
(((signatureAlg__).trustChain.supportedMask \
|
|
== PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT) \
|
|
&& ((signatureAlg__).trustChain.requiredMask \
|
|
== PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT) \
|
|
&& ((signatureAlg__).messageAuth.supportedMask \
|
|
== PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT) \
|
|
&& ((signatureAlg__).messageAuth.requiredMask \
|
|
== PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT))
|
|
|
|
#define PRESParticipantSecurityDigitalSignatureAlgorithmInfo_areCompatible( \
|
|
left__, \
|
|
right__, \
|
|
isNonRtiVendor__) \
|
|
(PRESSecurityCryptoAlgorithmRequirements_isPairCompatible( \
|
|
(left__).trustChain, \
|
|
(right__).trustChain, \
|
|
(isNonRtiVendor__)) \
|
|
&& PRESSecurityCryptoAlgorithmRequirements_isPairCompatible( \
|
|
(left__).messageAuth, \
|
|
(right__).messageAuth, \
|
|
(isNonRtiVendor__)))
|
|
|
|
/* key establishment algorithms */
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT \
|
|
(PRES_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_BIT_DHE_MODP_2048_256 \
|
|
| PRES_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_BIT_ECDHE_CEUM_P256)
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT \
|
|
PRES_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_BIT_ECDHE_CEUM_P256
|
|
|
|
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_INITIALIZER_NOSEC \
|
|
{ \
|
|
{0, 0} \
|
|
}
|
|
|
|
/*
|
|
* The default key establishment algorithms set - this is the supported mask
|
|
* when a DP does not propagate their mask. This is defined in DDS Security 1.2
|
|
* specification (section 7.3.12.2) and the values were selected to maintain backward
|
|
* interoperability with releases pre-7.0.0, where we do not propagate the
|
|
* supported and required algorithms.
|
|
*/
|
|
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_INITIALIZER_SEC12 \
|
|
{ \
|
|
{PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT,\
|
|
PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT} \
|
|
}
|
|
|
|
struct PRESParticipantSecurityKeyEstablishmentAlgorithmInfo {
|
|
PRESSecurityCryptoAlgorithmRequirements sharedSecret;
|
|
};
|
|
|
|
|
|
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_isDefaultNoSec(keyEstablishment__) \
|
|
((((keyEstablishment__).sharedSecret.supportedMask) == 0) \
|
|
&& (((keyEstablishment__).sharedSecret.requiredMask) == 0))
|
|
|
|
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_isDefaultSec12(keyEstablishment__) \
|
|
((((keyEstablishment__).sharedSecret.supportedMask) \
|
|
== PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT) \
|
|
&& (((keyEstablishment__).sharedSecret.requiredMask) \
|
|
== PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT))
|
|
|
|
#define PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_areCompatible( \
|
|
left__, \
|
|
right__, \
|
|
isNonRtiVendor__) \
|
|
PRESSecurityCryptoAlgorithmRequirements_isPairCompatible( \
|
|
(left__).sharedSecret, \
|
|
(right__).sharedSecret, \
|
|
(isNonRtiVendor__))
|
|
|
|
/* symmetric cipher algorithms */
|
|
#define PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT \
|
|
(PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES128_GCM \
|
|
| PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES256_GCM)
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT \
|
|
PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES256_GCM
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT \
|
|
PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES256_GCM
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT \
|
|
PRES_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BIT_AES256_GCM
|
|
|
|
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_INITIALIZER_NOSEC \
|
|
{ \
|
|
0, \
|
|
0, \
|
|
0, \
|
|
0 \
|
|
}
|
|
|
|
/*
|
|
* The default symmetric cipher algorithms set - this is the supported mask
|
|
* when a DP does not propagate their mask. This is defined in DDS Security 1.2
|
|
* specification (section 7.3.13.2) and the values were selected to maintain backward
|
|
* interoperability with releases pre-7.0.0, where we do not propagate the
|
|
* supported and required algorithms.
|
|
*/
|
|
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_INITIALIZER_SEC12 \
|
|
{ \
|
|
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT, \
|
|
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT, \
|
|
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT, \
|
|
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT \
|
|
}
|
|
|
|
|
|
struct PRESParticipantSecuritySymmetricCipherAlgorithmInfo {
|
|
PRESSecurityCryptoAlgorithmSet supportedMask;
|
|
PRESSecurityCryptoAlgorithmSet builtinEndpointsRequiredMask;
|
|
PRESSecurityCryptoAlgorithmSet builtinKeyExchangeEndpointsRequiredMask;
|
|
PRESSecurityCryptoAlgorithmSet userEndpointsDefaultRequiredMask;
|
|
};
|
|
|
|
|
|
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_isDefaultNoSec(cipherAlg__) \
|
|
(((cipherAlg__).supportedMask == 0) \
|
|
&& ((cipherAlg__).builtinEndpointsRequiredMask == 0) \
|
|
&& ((cipherAlg__).builtinKeyExchangeEndpointsRequiredMask == 0) \
|
|
&& ((cipherAlg__).userEndpointsDefaultRequiredMask == 0))
|
|
|
|
|
|
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_isDefaultSec12(cipherAlg__) \
|
|
(((cipherAlg__).supportedMask \
|
|
== PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT) \
|
|
&& ((cipherAlg__).builtinEndpointsRequiredMask \
|
|
== PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT) \
|
|
&& ((cipherAlg__).builtinKeyExchangeEndpointsRequiredMask \
|
|
== PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT) \
|
|
&& ((cipherAlg__).userEndpointsDefaultRequiredMask \
|
|
== PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT))
|
|
|
|
/*
|
|
* Note that we don't check that user_endpoints_default_required_mask has
|
|
* supported values. This is because we don't want to fail matching with a
|
|
* DomainParticipant due to the default values of the mask. We will only fail
|
|
* upon matching of the endpoint.
|
|
*/
|
|
#define PRESParticipantSecuritySymmetricCipherAlgorithmInfo_areCompatible( \
|
|
left__, \
|
|
right__, \
|
|
isNonRtiVendor__) \
|
|
(PRESSecurityCryptoAlgorithmSet_isPairCompatible( \
|
|
(left__).supportedMask, \
|
|
(left__).builtinEndpointsRequiredMask, \
|
|
(right__).supportedMask, \
|
|
(right__).builtinEndpointsRequiredMask, \
|
|
(isNonRtiVendor__)) \
|
|
&& PRESSecurityCryptoAlgorithmSet_isPairCompatible( \
|
|
(left__).supportedMask, \
|
|
(left__).builtinKeyExchangeEndpointsRequiredMask, \
|
|
(right__).supportedMask, \
|
|
(right__).builtinKeyExchangeEndpointsRequiredMask, \
|
|
(isNonRtiVendor__)))
|
|
|
|
/* participant security algorithms */
|
|
|
|
#define PRESParticipantSecurityAlgorithmInfo_INITIALIZER_NOSEC \
|
|
{ \
|
|
PRESParticipantSecurityDigitalSignatureAlgorithmInfo_INITIALIZER_NOSEC, \
|
|
PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_INITIALIZER_NOSEC, \
|
|
PRESParticipantSecuritySymmetricCipherAlgorithmInfo_INITIALIZER_NOSEC \
|
|
}
|
|
|
|
|
|
#define PRESParticipantSecurityAlgorithmInfo_INITIALIZER_SEC12 \
|
|
{ \
|
|
PRESParticipantSecurityDigitalSignatureAlgorithmInfo_INITIALIZER_SEC12, \
|
|
PRESParticipantSecurityKeyEstablishmentAlgorithmInfo_INITIALIZER_SEC12, \
|
|
PRESParticipantSecuritySymmetricCipherAlgorithmInfo_INITIALIZER_SEC12 \
|
|
}
|
|
|
|
struct PRESParticipantSecurityAlgorithmInfo {
|
|
struct PRESParticipantSecurityDigitalSignatureAlgorithmInfo digitalSignature;
|
|
struct PRESParticipantSecurityKeyEstablishmentAlgorithmInfo keyEstablishment;
|
|
struct PRESParticipantSecuritySymmetricCipherAlgorithmInfo symmetricCipher;
|
|
};
|
|
|
|
|
|
|
|
typedef RTICdrUnsignedLong PRESVendorParticipantSecurityProtectionInfoMask;
|
|
|
|
|
|
|
|
struct PRESParticipantSecurityVendorProtectionInfo {
|
|
/*
|
|
* The bitmask describing the participant vendor protection info. This
|
|
* bitmask always contains the actual protection info in use.
|
|
* The whole bitmask is serialized if nonDerivedBitmask contains at least
|
|
* one set bit.
|
|
*/
|
|
PRESVendorParticipantSecurityProtectionInfoMask bitmask;
|
|
/*
|
|
* The protection info contained in "bitmask" can either be set explicitly
|
|
* by the user, or derived from other protection kinds (e.g., the protection
|
|
* kind of the service request channel is derived from discovery if left
|
|
* unset). This bitmask contains the bits that do not match their corresponding
|
|
* derived value from other protection kinds (i.e., it is an XOR of the
|
|
* actual protection kind and the derived protection kind). We use this
|
|
* nonDerivedBitmask to see if it is required to serialize bitmask or not.
|
|
* The nonDerivedBitmask is not serialized.
|
|
*/
|
|
PRESVendorParticipantSecurityProtectionInfoMask nonDerivedBitmask;
|
|
};
|
|
|
|
|
|
#define PRESParticipantSecurityVendorProtectionInfo_INITIALIZER \
|
|
{ \
|
|
PRES_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO_BITMASK_DEFAULT, /* bitmask */ \
|
|
0 /* nonDerivedBitmask */ \
|
|
}
|
|
|
|
|
|
extern PRESDllExport
|
|
int PRESParticipantSecurityAlgorithmInfo_compare(
|
|
const struct PRESParticipantSecurityAlgorithmInfo *left,
|
|
const struct PRESParticipantSecurityAlgorithmInfo *right);
|
|
|
|
extern PRESDllExport
|
|
int PRESParticipantSecurityVendorProtectionInfo_compare(
|
|
const struct PRESParticipantSecurityVendorProtectionInfo *left,
|
|
const struct PRESParticipantSecurityVendorProtectionInfo *right);
|
|
|
|
struct PRESParticipantSecurityProtectionInfo {
|
|
/*
|
|
* The attribute bitmask that is understood by core and propagated in
|
|
* discovery.
|
|
*/
|
|
PRESParticipantSecurityAttributesBitmask bitmask;
|
|
/*
|
|
* The attribute bitmask that is only understood by the plugins and is
|
|
* propagated in discovery.
|
|
*/
|
|
PRESPluginParticipantSecurityAttributesBitmask pluginBitmask;
|
|
};
|
|
|
|
|
|
#define PRESParticipantSecurityProtectionInfo_INITIALIZER \
|
|
{ \
|
|
PRES_PARTICIPANT_SECURITY_ATTRIBUTES_BITMASK_DEFAULT, \
|
|
PRES_PLUGIN_PARTICIPANT_SECURITY_ATTRIBUTES_BITMASK_DEFAULT \
|
|
}
|
|
|
|
/* Mappings to avoid security nomenclature in dds_c.1.0 */
|
|
#define PRESParticipantTrustProtectionInfo_INITIALIZER \
|
|
PRESParticipantSecurityProtectionInfo_INITIALIZER
|
|
|
|
#define PRES_PARTICIPANT_TRUST_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_SUPPORTED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_TRUST_CHAIN_REQUIRED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_SUPPORTED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGORITHM_INFO_MESSAGE_AUTH_REQUIRED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGORITHM_INFO_REQUIRED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_INTERCEPTOR_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_SUPPORTED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_INTERCEPTOR_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_REQUIRED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_INTERCEPTOR_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_BUILTIN_ENDPOINTS_KEY_EXCHANGE_REQUIRED_MASK_DEFAULT
|
|
|
|
#define PRES_PARTICIPANT_TRUST_INTERCEPTOR_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT \
|
|
PRES_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGORITHM_INFO_USER_ENDPOINTS_DEFAULT_REQUIRED_MASK_DEFAULT
|
|
|
|
|
|
/*
|
|
* The PRESRequirementKind type (and its values) must match
|
|
* the dds-level DDS_RequirementKind type.
|
|
*/
|
|
typedef enum {
|
|
PRES_REQUIREMENT_KIND_INVALID,
|
|
PRES_REQUIREMENT_KIND_REQUIRED,
|
|
PRES_REQUIREMENT_KIND_AUTO,
|
|
PRES_REQUIREMENT_KIND_IGNORED
|
|
} PRESRequirementKind;
|
|
|
|
|
|
#define PRES_REQUIREMENT_KIND_OCSP_DEFAULT PRES_REQUIREMENT_KIND_AUTO
|
|
|
|
struct PRESParticipantSecurityAttributes {
|
|
RTIBool allowUnauthenticatedParticipants;
|
|
RTIBool isAccessProtected;
|
|
RTIBool isNonSecureParticipantDiscoveryMutable;
|
|
/*
|
|
* Determines if the security plugins support endpoint preunregistering.
|
|
* This feature allows the participant to increase the concurrency of the
|
|
* submessage decoding: when supported, we don't need to take the match
|
|
* table EA (participant EA) to call preprocess and decode submessage APIs.
|
|
*
|
|
* This is possible because we use preunregister+unregister in
|
|
* combination with REDA tables recordRemoval+recordFinalization to
|
|
* provide high concurrent (and thread safe) endpoint handle access.
|
|
*/
|
|
RTIBool isPreUnregisteringEndpointsSupported;
|
|
struct PRESParticipantSecurityProtectionInfo protectionInfo;
|
|
struct PRESParticipantSecurityAlgorithmInfo algorithmInfo;
|
|
struct PRESParticipantSecurityVendorProtectionInfo securityVendorProtectionInfo;
|
|
PRESRequirementKind ocspRequirementKind;
|
|
/*
|
|
* ROS interoperability mode of the participant. Allows for ROS names to be
|
|
* evaluated for permissions when creating topics and checking permissions
|
|
* for remote endpoints.
|
|
*/
|
|
PRESSecurityRosInteroperabilityMode rosInteroperabilityMode;
|
|
};
|
|
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_ATTRIBUTES_DEFAULT { \
|
|
RTI_FALSE, /* allowUnauthenticatedParticipants */ \
|
|
RTI_FALSE, /* isAccessProtected */ \
|
|
RTI_FALSE, /* isNonSecureParticipantDiscoveryMutable */ \
|
|
RTI_FALSE, /* isPreUnregisteringEndpointsSupported */ \
|
|
PRESParticipantSecurityProtectionInfo_INITIALIZER, /* protectionInfo */ \
|
|
PRESParticipantSecurityAlgorithmInfo_INITIALIZER_NOSEC, /* algorithmInfo */ \
|
|
PRESParticipantSecurityVendorProtectionInfo_INITIALIZER, /* securityVendorProtectionInfo */ \
|
|
PRES_REQUIREMENT_KIND_OCSP_DEFAULT, /* ocspRequirementKind */ \
|
|
PRES_SECURITY_ROS_NO_INTEROPERABILITY /* rosInteroperabilityMode */ \
|
|
}
|
|
|
|
#define PRES_PARTICIPANT_SERVICE_QOS_POLICY_DEFAULT { \
|
|
PRES_NO_SERVICE_QOS \
|
|
}
|
|
|
|
struct PRESParticipantParameter {
|
|
/***********************
|
|
* IMMUTABLE FIELDS
|
|
***********************/
|
|
/*e immutable */
|
|
MIGRtpsProtocolVersion protocolVersion;
|
|
/*e immutable */
|
|
MIGRtpsVendorId vendorId;
|
|
/*e @brief The length of time a participant declaration should be
|
|
* considered valid.
|
|
*
|
|
* This value is immutable.
|
|
*
|
|
* @default Infinite. Not all users of this structure will supply a lease
|
|
* duration value; in that case, the record is valid
|
|
* indefinitely.
|
|
*/
|
|
RTINtpTime leaseDuration;
|
|
|
|
/*e immutable */
|
|
struct PRESProductVersion productVersion;
|
|
/*e immutable */
|
|
PRESBuiltinEndpointMask builtinEndpointMask;
|
|
/*e immutable */
|
|
PRESBuiltinEndpointMask builtinEndpointExtMask;
|
|
/*e immutable */
|
|
PRESBuiltinEndpointQos_t builtinEndpointQosMask;
|
|
/*e immutable */
|
|
int domainId;
|
|
/*e
|
|
* immutable
|
|
*
|
|
* domainTag can point to different things depending on where the parameter
|
|
* is being used. It can be:
|
|
* - a pointer to a buffer from a pool (when coming from discovery)
|
|
* - a pointer to the PRES_PARTICIPANT_TABLE_NAME_STRING (when used in
|
|
* certain shallow-copy operations)
|
|
* - a pointer to the property list (when interacting with higher-level
|
|
* APIs)
|
|
*
|
|
* Immutability is enforce both at local participant level
|
|
* and at discovery level, as we will not assert remote participant updates
|
|
* containing a domainTag that is different to the one we expect.
|
|
*/
|
|
MIGRtpsDomainTag domainTag;
|
|
/*e immutable */
|
|
struct PRESSequenceTransportInfo transportInfoSeq;
|
|
/*e immutable */
|
|
RTINtpTime reachabilityLeaseDuration; /* CORE-7077 */
|
|
/*e immutable */
|
|
PRESBuiltinEndpointMask vendorBuiltinEndpointMask;
|
|
/*e immutable */
|
|
struct PRESParticipantSecurityTokens securityTokens;
|
|
/*e immutable */
|
|
struct PRESParticipantSecurityProtectionInfo securityProtectionInfo;
|
|
/*e immutable */
|
|
struct PRESParticipantSecurityVendorProtectionInfo securityVendorProtectionInfo;
|
|
/*e immutable */
|
|
struct PRESServiceQosPolicy serviceQosPolicy;
|
|
/*e immutable */
|
|
struct PRESParticipantSecurityAlgorithmInfo securityAlgorithmInfo;
|
|
|
|
/***********************
|
|
* MUTABLE FIELDS
|
|
***********************/
|
|
/*e mutable */
|
|
struct PRESLocatorQosPolicy metatrafficUnicastLocator;
|
|
/*e mutable */
|
|
struct PRESReducedLocatorQosPolicy metatrafficMulticastLocator;
|
|
/*e mutable */
|
|
struct PRESLocatorQosPolicy defaultUnicastLocator;
|
|
/*e mutable */
|
|
struct PRESReducedLocatorQosPolicy defaultMulticastLocator;
|
|
|
|
/*e mutable */
|
|
struct PRESUserDataQosPolicy userData;
|
|
/*e mutable */
|
|
struct PRESPropertyQosPolicy propertyList;
|
|
/*e mutable */
|
|
struct PRESEntityNameQosPolicy participantName;
|
|
/*e mutable */
|
|
struct PRESPartitionQosPolicy partitionQosPolicy;
|
|
};
|
|
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
Default participant parameter value.
|
|
|
|
The RTPS protocol version is defaulted to the latest (2.1) as implemented.
|
|
*/
|
|
#define PRES_PARTICIPANT_PARAMETER_DEFAULT { \
|
|
MIG_RTPS_PROTOCOL_VERSION, /* protocolVersion */ \
|
|
MIG_RTPS_VENDOR_ID_UNKNOWN, /* vendorId */ \
|
|
PRES_PARTICIPANT_LEASE_DURATION_DEFAULT, /* leaseDuration */ \
|
|
PRESProductVersion_INITIALIZER, /* productVersion */ \
|
|
PRES_BUILTIN_ENDPOINT_NONE, /*builtinEndpointMask */ \
|
|
PRES_BUILTIN_ENDPOINT_NONE, /*builtinEndpointExtMask */ \
|
|
PRES_BUILTIN_ENDPOINT_QOS_NONE, /*builtinEndpointQosMask*/ \
|
|
MIG_RTPS_DOMAIN_DEFAULT, /* domainId */ \
|
|
MIG_RTPS_DOMAIN_TAG_DEFAULT, /* domainTag */ \
|
|
{0, 0, NULL}, /* transportInfoSeq */ \
|
|
PRES_PARTICIPANT_REACHABILITY_LEASE_DURATION_DEFAULT, /* reachabilityLeaseDuration */ \
|
|
PRES_BUILTIN_ENDPOINT_NONE, /* vendorBuiltinEndpointMask */ \
|
|
PRES_PARTICIPANT_SECURITY_TOKENS_DEFAULT, /* securityTokens */ \
|
|
PRESParticipantSecurityProtectionInfo_INITIALIZER, /* securityProtectionInfo */ \
|
|
PRESParticipantSecurityVendorProtectionInfo_INITIALIZER, /* securityVendorProtectionInfo */ \
|
|
PRES_PARTICIPANT_SERVICE_QOS_POLICY_DEFAULT, /* serviceQosPolicy */ \
|
|
PRESParticipantSecurityAlgorithmInfo_INITIALIZER_NOSEC, /* securityAlgorithmInfo */ \
|
|
PRES_LOCATOR_QOS_POLICY_DEFAULT, /* metatrafficUnicastLocator */ \
|
|
PRES_REDUCED_LOCATOR_QOS_POLICY_DEFAULT, /* metatrafficMulticastLocator */ \
|
|
PRES_LOCATOR_QOS_POLICY_DEFAULT, /* defaultUnicastLocator */ \
|
|
PRES_REDUCED_LOCATOR_QOS_POLICY_DEFAULT, /* defaultMulticastLocator */ \
|
|
{{0, 0, NULL}}, /* userData */ \
|
|
PRES_PROPERTY_QOS_POLICY_DEFAULT, /* propertyList */ \
|
|
PRES_ENTITY_NAME_QOS_POLICY_DEFAULT, /* participantName */ \
|
|
PRES_PARTITION_QOS_POLICY_DEFAULT /* partition */ \
|
|
}
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
Participant parameter value for the local participant.
|
|
|
|
The RTPS protocol version is defaulted to the latest version (2.1)
|
|
*/
|
|
#define PRES_PARTICIPANT_PARAMETER_LOCAL_DEFAULT { \
|
|
MIG_RTPS_PROTOCOL_VERSION, /* protocolVersion */ \
|
|
MIG_RTPS_VENDOR_ID_RTI, /* vendorId */ \
|
|
PRES_PARTICIPANT_LEASE_DURATION_DEFAULT, /* leaseDuration */ \
|
|
PRESProductVersion_INITIALIZER, /* productVersion */ \
|
|
PRES_BUILTIN_ENDPOINT_NONE, /*builtinEndpointMask */\
|
|
PRES_BUILTIN_ENDPOINT_NONE, /*builtinEndpointExtMask */ \
|
|
PRES_BUILTIN_ENDPOINT_QOS_NONE, /*builtinEndpointQosMask*/ \
|
|
0, /* domainId */ \
|
|
MIG_RTPS_DOMAIN_TAG_DEFAULT, /* domainTag */ \
|
|
{0, 0, NULL}, /* transportInfoSeq */ \
|
|
PRES_PARTICIPANT_REACHABILITY_LEASE_DURATION_DEFAULT, /* reachabilityLeaseDuration */ \
|
|
PRES_BUILTIN_ENDPOINT_NONE, /* vendorBuiltinEndpointMask */ \
|
|
PRES_PARTICIPANT_SECURITY_TOKENS_DEFAULT, /* securityTokens */ \
|
|
PRESParticipantSecurityProtectionInfo_INITIALIZER, /* securityProtectionInfo */ \
|
|
PRESParticipantSecurityVendorProtectionInfo_INITIALIZER, /* securityVendorProtectionInfo */ \
|
|
PRES_PARTICIPANT_SERVICE_QOS_POLICY_DEFAULT, /* serviceQosPolicy */ \
|
|
PRESParticipantSecurityAlgorithmInfo_INITIALIZER_NOSEC, /* securityAlgorithmInfo */ \
|
|
PRES_LOCATOR_QOS_POLICY_DEFAULT, /* metatrafficUnicastLocator */ \
|
|
PRES_REDUCED_LOCATOR_QOS_POLICY_DEFAULT, /* metatrafficMulticastLocator */ \
|
|
PRES_LOCATOR_QOS_POLICY_DEFAULT, /* defaultUnicastLocator */ \
|
|
PRES_REDUCED_LOCATOR_QOS_POLICY_DEFAULT, /* defaultMulticastLocator */ \
|
|
{{0, 0, NULL}}, /* userData */ \
|
|
PRES_PROPERTY_QOS_POLICY_DEFAULT, /* propertyList */ \
|
|
PRES_ENTITY_NAME_QOS_POLICY_DEFAULT, /* participantName */ \
|
|
PRES_PARTITION_QOS_POLICY_DEFAULT /* partition */ \
|
|
}
|
|
|
|
|
|
#define PRES_PARTICIPANT_USER_DATA_MAXIMUM (256)
|
|
|
|
|
|
#define PRES_PARTICIPANT_TOPIC_DATA_MAXIMUM (256)
|
|
|
|
|
|
#define PRES_PARTICIPANT_PROPERTY_LIST_MAXIMUM (32)
|
|
|
|
|
|
#define PRES_PARTICIPANT_PROPERTY_STRING_MAXIMUM (1024)
|
|
|
|
|
|
#define PRES_TRANSPORT_INFO_LIST_MAX_LENGTH (12)
|
|
|
|
|
|
#define PRES_SHMEM_REF_TRANSFER_MODE_MAX_SEGMENTS (500)
|
|
|
|
|
|
#define PRES_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_DEFAULT (0)
|
|
|
|
|
|
#define PRES_CONSTRAINT_VALUE_NONE (0) /* Must be set to zero */
|
|
#define PRES_CONSTRAINT_INDEX_dp (0)
|
|
#define PRES_CONSTRAINT_INDEX_dr (1)
|
|
#define PRES_CONSTRAINT_INDEX_dw (2)
|
|
#define PRES_CONSTRAINT_INDEX_di (3)
|
|
#define PRES_CONSTRAINT_INDEX_offFeatures (4)
|
|
#define PRES_CONSTRAINT_PARAM_COUNT (5)
|
|
|
|
typedef enum {
|
|
PRES_LICENSE_OFF_FEATURE_NONE = 0, /* 0 */
|
|
PRES_LICENSE_OFF_FEATURE_SECURITY = (1 << 0), /* 1 */
|
|
PRES_LICENSE_OFF_FEATURE_REAL_TIME_WAN = (1 << 1), /* 2 */
|
|
PRES_LICENSE_OFF_FEATURE_CLOUD_DISCOVERY = (1 << 2), /* 4 */
|
|
} PRESLicenseOffFeatureCode;
|
|
|
|
|
|
#define PRES_LICENSE_INFO_FIELD_MAX_LENGTH (32)
|
|
|
|
struct PRESLicenseInformation {
|
|
RTIBool isTrialExpired;
|
|
int constraintParam[PRES_CONSTRAINT_PARAM_COUNT];
|
|
char licenseType[PRES_LICENSE_INFO_FIELD_MAX_LENGTH + 1];
|
|
char expirationDate[PRES_LICENSE_INFO_FIELD_MAX_LENGTH + 1];
|
|
char trialEndDate[PRES_LICENSE_INFO_FIELD_MAX_LENGTH + 1];
|
|
char licenseHash[PRES_LICENSE_INFO_FIELD_MAX_LENGTH + 1];
|
|
};
|
|
|
|
|
|
#define PRES_LICENSE_INFORMATION_INITIALIZER \
|
|
{ \
|
|
RTI_FALSE, /* isTrialExpired */ \
|
|
{ PRES_CONSTRAINT_VALUE_NONE, \
|
|
PRES_CONSTRAINT_VALUE_NONE, \
|
|
PRES_CONSTRAINT_VALUE_NONE, \
|
|
PRES_CONSTRAINT_VALUE_NONE, \
|
|
PRES_CONSTRAINT_VALUE_NONE }, /* constraintParam */ \
|
|
{ '\0' }, /* licenseType */ \
|
|
{ '\0' }, /* expirationDate */ \
|
|
{ '\0' }, /* trialEndDate */ \
|
|
{ '\0' } /* licenseHash */ \
|
|
}
|
|
|
|
extern PRESDllExport RTIBool PRESLicenseInformation_copy(
|
|
struct PRESLicenseInformation *dst,
|
|
const struct PRESLicenseInformation *src);
|
|
|
|
|
|
/**
|
|
* @ingroup PRESParticipantModule
|
|
*
|
|
* @brief Determines if the specified service kind is exempt from RTI Connext
|
|
* Express Edition license constraints.
|
|
*
|
|
* Exempt RTI products are not limited by the license constraints of RTI
|
|
* Connext Express Edition, such as the maximum number of participants or
|
|
* endpoints. However, after the trial license expires, exempt products cannot
|
|
* discover non-RTI entities.
|
|
*
|
|
* To add a new exempt product, update the ServiceQosPolicy enum, include
|
|
* the new value in this macro, ensure the product is whitelisted, and add a
|
|
* corresponding test in LicenseTester.c (see
|
|
* DDSCLicenseTester_testTrialExcludedProduct).
|
|
*/
|
|
#define PRESLicense_isTrialExcludedRtiProduct(participant__) \
|
|
((participant__)->_property.parameter.serviceQosPolicy.kind \
|
|
== PRES_ADMIN_CONSOLE_SERVICE_QOS)
|
|
|
|
typedef enum {
|
|
PRES_DIRECTED_WRITE_AUTO_SERIALIZATION,
|
|
PRES_DIRECTED_WRITE_NEW_SERIALIZATION,
|
|
PRES_DIRECTED_WRITE_OLD_SERIALIZATION
|
|
} PRESDirectedWriteSerializationKind;
|
|
|
|
struct PRESParticipant; /* forward declare to appease the compile */
|
|
|
|
struct PRESParticipantProperty {
|
|
/* for single threaded applications */
|
|
RTIBool isPassive;
|
|
|
|
/*e property that is common to both local and remote participant */
|
|
struct PRESParticipantParameter parameter;
|
|
|
|
/*e
|
|
* @brief Whether or not unregistered remote participants that have
|
|
* lost their liveliness should be removed from the database.
|
|
*
|
|
* If a previously-discovered remote participant has been unregistered
|
|
* (PRESParticipant_unregisterRemoteParticipant) and has outlived its
|
|
* declared liveliness lease duration, it will be removed from the
|
|
* database if this flag is set to true. It will be left in place if
|
|
* this flag is false.
|
|
*
|
|
* @default RTI_TRUE
|
|
*/
|
|
RTIBool purgeNotAliveParticipants;
|
|
|
|
/*e
|
|
* @brief The maximum amount of time before this participant detects
|
|
* the loss of liveliness of a remote participant.
|
|
*
|
|
* This value must be finite, but it will be ignored if
|
|
* purgeNotAliveParticipants is false.
|
|
*
|
|
* @default 100 seconds
|
|
*/
|
|
struct RTINtpTime maxParticipantLivelinessLossDetectionPeriod;
|
|
|
|
/*e property for active facade */
|
|
struct COMMENDActiveFacadeProperty facadeProperty;
|
|
|
|
/*e mutable */
|
|
struct PRESEntityFactoryQosPolicy entityFactory;
|
|
|
|
/*e string tables stores all the topic and typeName strings. */
|
|
struct REDATableProperty stringTable;
|
|
|
|
/*e flow controller stores all locally flow controllers. */
|
|
struct REDATableProperty flowControllerTable;
|
|
|
|
/*e type object table. It is unlimited because this resource
|
|
is already bounded by other limits (remote endpoints, local topics) */
|
|
struct REDATableProperty typeObjectTable;
|
|
|
|
/*e local type table stores all locally created type. */
|
|
struct REDATableProperty localTypeTable;
|
|
|
|
/*e local topic table stores all locally created topic.
|
|
This is the number of entries that is created in the table when it
|
|
runs out of space */
|
|
struct REDATableProperty localTopicTable;
|
|
|
|
/*e topic type table stores all locally and remotely discovered topic
|
|
and type pair. */
|
|
struct REDATableProperty topicTypeTable;
|
|
|
|
/*e content filtered table stored all content filters. */
|
|
struct REDATableProperty contentFilteredTopicTable;
|
|
|
|
/*e content filter type table stores all content filter types. */
|
|
struct REDATableProperty contentFilterTable;
|
|
|
|
/*e remote participant table stores all asserted remote participants. */
|
|
struct REDATableProperty remoteParticipantTable;
|
|
|
|
/*e remote participant table stores all asserted remote participants. */
|
|
struct REDATableProperty remoteParticipantSecurityTable;
|
|
|
|
/*e table of ignored entities. */
|
|
struct REDATableProperty ignoredEntityTable;
|
|
|
|
/*e table of ignored entities. */
|
|
struct REDATableProperty ignoredLocatorTable;
|
|
|
|
/*e replacement policy for the records in the table of ignored entities. */
|
|
PRESIgnoredEntityReplacementPolicy ignoredEntityReplacementPolicy;
|
|
|
|
/*e Maximum length for participant userData */
|
|
int participantUserDataMaximumLength;
|
|
/*e Maximum length for topicData */
|
|
int topicDataMaximumLength;
|
|
|
|
/*e Size of user object to be stored in particpiant */
|
|
int participantUserObjectSize;
|
|
/*e Alignment user object to be stored in particpiant */
|
|
int participantUserObjectAlignment;
|
|
/*e Size of user object to be stored in flow controller */
|
|
int flowControllerUserObjectSize;
|
|
/*e Alignment of user object to be stored in flow controller */
|
|
int flowControllerUserObjectAlignment;
|
|
/*e Size of user object to be stored in topic */
|
|
int topicUserObjectSize;
|
|
/*e Alignment of user object to be stored in topic */
|
|
int topicUserObjectAlignment;
|
|
/*e Size of user object to be stored in content filtered topic */
|
|
int contentFilteredTopicUserObjectSize;
|
|
/*e Alignment of user object to be stored in content filtered topic */
|
|
int contentFilteredTopicUserObjectAlignment;
|
|
/*e Type code max serialized size*/
|
|
int typeCodeMaxSerializedLength;
|
|
/*e Type object max serialized size*/
|
|
int typeObjectMaxSerializedLength;
|
|
/*e Serialized type object dynamic allocation threshold*/
|
|
int serializedTypeObjectDynamicAllocationThreshold;
|
|
/*e Type object max deserialized size*/
|
|
int typeObjectMaxDeserializedLength;
|
|
/*e Deserialized type object dynamic allocation threshold*/
|
|
int deserializedTypeObjectDynamicAllocationThreshold;
|
|
/*e Content filter property max size*/
|
|
int contentFilterPropertyMaxLength;
|
|
/*e Maximum length for participant property list */
|
|
int participantPropertyListMaximumLength;
|
|
/*e Maximum size of string area in property buffer */
|
|
int participantPropertyStringMaximumLength;
|
|
/* Maximum length of Locator Filter Sequence */
|
|
int locatorFilterSeqMaxLength;
|
|
/* Maximum length of Locator Filter Expression */
|
|
int locatorFilterExpressionMaxLength;
|
|
/* Maximum length of Transport Info Sequence */
|
|
int transportInfoListMaxLength;
|
|
RTIBool enableSecurity;
|
|
PRESBuiltinEndpointMask enabledBuiltinChannels;
|
|
|
|
/* Determines if 5.3.0 shmem locator matching should be used. */
|
|
RTIBool shmemUse530LocatorMatching;
|
|
|
|
RTI_UINT32 shmemRefTransferModeMaxSegments;
|
|
|
|
struct PRESTypeSupportQosPolicy typeSupport;
|
|
|
|
/*
|
|
* Time-based logging authentication time threshold.
|
|
* Default: INFINITE
|
|
*/
|
|
RTINtpTime authenticationTimeThreshold;
|
|
|
|
/*
|
|
* CORE-10122: Property to control serialization of the GUID in directed
|
|
* samples
|
|
*/
|
|
PRESDirectedWriteSerializationKind directedWriteGuidSerializationKind;
|
|
|
|
/*e partition table setup
|
|
Maximum cumulative length of all the partition name strings,
|
|
including comma and terminating null.
|
|
This value cannot be greater then
|
|
PRES_PS_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_LIMIT */
|
|
RTI_UINT32 partitionMaximumCumulativeLength;
|
|
|
|
/*e Determine if the default partition element is treated as a special
|
|
value that matches any partition */
|
|
RTIBool defaultPartitionMatchAll;
|
|
|
|
/*e Determine if it is allowed for an entity to not belonging to any
|
|
physical partition */
|
|
RTIBool allowNoPartition;
|
|
|
|
/* License information */
|
|
struct PRESLicenseInformation licenseInfo;
|
|
|
|
/* Indicates whether this participant is whitelisted */
|
|
RTIBool isExpressWhitelisted;
|
|
|
|
/*
|
|
* If non-NULL and a remote endpoint is discovered with a topic that matches
|
|
* this pattern AND the type is not fully resolved, we will request the
|
|
* unresolved types at the time of endpoint discovery (rather than at
|
|
* the time of matching). If NULL or the topic does not match, we will
|
|
* only request unresolved types at the time of endpoint matching (this
|
|
* requires a compatible local endpoint to exist)
|
|
*/
|
|
char *typeLookupServiceRequestTypesFilter;
|
|
};
|
|
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
Default participant property value.
|
|
*/
|
|
/* clang-format off */
|
|
#define PRES_PARTICIPANT_PROPERTY_DEFAULT { \
|
|
RTI_FALSE, /* isPasive */ \
|
|
PRES_PARTICIPANT_PARAMETER_LOCAL_DEFAULT, \
|
|
RTI_TRUE, /* purgeNotAliveParticipants */ \
|
|
{100/*sec*/,0/*frac*/}, /*maxParticipantLivelinessLossDetectionPeriod*/\
|
|
COMMEND_ACTIVE_FACADE_PROPERTY_DEFAULT, /* facadeProperty */ \
|
|
{RTI_TRUE}, /* entityFactory: autoEnable == TRUE */ \
|
|
/* stringTable */ \
|
|
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
/* flowControllerTable */ \
|
|
{{4,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
/* typeObjectTable */ \
|
|
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
/* localTypeTable */ \
|
|
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
{{8, 1024, REDA_FAST_BUFFER_POOL_UNLIMITED}, 1}, /* localTopicTable */ \
|
|
/* topicTypeTable */ \
|
|
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
/* contentFilteredTopicTable */ \
|
|
{{4,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
/* contentFilterTable */ \
|
|
{{4,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
{{8, 4096,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1}, /*remoteParticipantTable*/\
|
|
{{0, 4096*3, 2}, 1}, /* remoteParticipantSecurityTable */\
|
|
/* ignoredEntityTable */ \
|
|
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
/* ignoredLocatorTable */ \
|
|
{{8,REDA_FAST_BUFFER_POOL_UNLIMITED,REDA_FAST_BUFFER_POOL_UNLIMITED}, 1},\
|
|
PRES_NO_REPLACEMENT_IGNORED_ENTITY_REPLACEMENT, /* ignoredEntityReplacementPolicy */\
|
|
PRES_PARTICIPANT_USER_DATA_MAXIMUM, /* participantUserDataMaximumLength */\
|
|
PRES_PARTICIPANT_TOPIC_DATA_MAXIMUM, /* topicDataMaximumLength */ \
|
|
0, /* flowControllerUserObjectSize */ \
|
|
0, /* flowControllerUserObjectAlignment */ \
|
|
0, /* particpiantUserObjectSize */ \
|
|
0, /* particpiantUserObjectAlignment */ \
|
|
0, /* topicUserObjectSize */ \
|
|
0, /* topicUserObjectAlignment */ \
|
|
0, /* contentFilteredTopicUserObjectSize */ \
|
|
0, /* contentFilteredTopicUserObjectAlignment */ \
|
|
1024, /* typeCodeMaxSerializedLength */\
|
|
1024, /* typeObjectMaxSerializedLength */\
|
|
1024, /* serializedTypeObjectDynamicAllocationThreshold */\
|
|
1024, /* typeObjectMaxDeserializedLength */\
|
|
1024, /* deserializedTypeObjectDynamicAllocationThreshold */\
|
|
PRES_CONTENT_FILTER_PROPERTY_LEN_MAX, /* content filter property max length */\
|
|
PRES_PARTICIPANT_PROPERTY_LIST_MAXIMUM, /* participantPropertyListMaximumLength */\
|
|
PRES_PARTICIPANT_PROPERTY_STRING_MAXIMUM, /* participantPropertyStringMaximumLength */\
|
|
PRES_LOCATOR_FILTER_DEFAULT_SEQ_LEN_MAX, \
|
|
PRES_LOCATOR_FILTER_DEFAULT_EXPRESSION_LEN_MAX, \
|
|
PRES_TRANSPORT_INFO_LIST_MAX_LENGTH, /* transportInfoListMaxLength */ \
|
|
RTI_FALSE, /* enableSecurity */ \
|
|
3, /* enabledBuiltinChannels */ \
|
|
RTI_FALSE, /* shmemUse530LocatorMatching */ \
|
|
PRES_SHMEM_REF_TRANSFER_MODE_MAX_SEGMENTS, /* shmemRefTransferModeMaxSegments */ \
|
|
PRES_TYPE_SUPPORT_QOS_POLICY_DEFAULT, /* typeSupport */ \
|
|
{RTI_NTP_TIME_SEC_MAX, RTI_NTP_TIME_FRAC_AUTO}, /* authenticationTimeThreshold */ \
|
|
PRES_DIRECTED_WRITE_AUTO_SERIALIZATION, /* directedWriteGuidSerializationKind */ \
|
|
PRES_PARTITION_MAXIMUM_CUMULATIVE_LENGTH_DEFAULT, /* partitionMaximumCumulativeLength */ \
|
|
RTI_FALSE, /* defaultPartitionMatchAll */ \
|
|
RTI_FALSE, /* allowNoPartition */ \
|
|
PRES_LICENSE_INFORMATION_INITIALIZER, /* licenseInfo */ \
|
|
RTI_FALSE, /* isExpressWhitelisted */ \
|
|
NULL /* typeLookupServiceRequestTypesFilter */ \
|
|
}
|
|
/* clang-format on */
|
|
|
|
/*
|
|
* The default KRMHD if
|
|
* PRESParticipantSecurityAttributesBitmask_isKeyRevisionEnabled is true. If
|
|
* it is false, then the default KRMHD is 0.
|
|
*/
|
|
#define PRES_PARTICIPANT_KEY_REVISION_MAX_HISTORY_DEPTH_DEFAULT 14
|
|
|
|
/* The max key revision ID before the revision overflows back to 1. */
|
|
#define PRES_PARTICIPANT_KEY_REVISION_MAX 0xffffff
|
|
|
|
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT_SEC 60
|
|
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT_FRAC 0
|
|
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT \
|
|
{PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT_SEC, \
|
|
PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_DEFAULT_FRAC}
|
|
|
|
/*
|
|
* These are the (documented) minimum and maximum values of the
|
|
* dds.participant.trust_plugins.certificate_status_advance_update_duration
|
|
* property.
|
|
*
|
|
* The minimum value is 20 seconds so that, in case of failures contacting the
|
|
* responder, we trigger at least a couple of events (the minimum time between
|
|
* notifyInvalidLocalIdentityByStatusAdvanceUpdate events is 10 seconds).
|
|
*
|
|
* The maximum value corresponds to the number of seconds in 31 days. This is a
|
|
* quite large safe limit that we may decide to lower in the future.
|
|
*/
|
|
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_MIN_SEC 20
|
|
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_DURATION_MAX_SEC 2678400
|
|
|
|
#define PRES_PARTICIPANT_ADVANCE_NOTICE_UPDATE_STATUS_EVENT_MINIMUM_INTERVAL_SEC 10
|
|
|
|
struct PRESRemoteParticipantProperty {
|
|
/*e derived from participant parameter */
|
|
struct PRESParticipantParameter parameter;
|
|
/*e counter that indicates if there is a change to the entities in the
|
|
remote participant */
|
|
struct REDASequenceNumber lastSn;
|
|
};
|
|
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
Default value for remote participant property.
|
|
*/
|
|
#define PRES_REMOTE_PARTICIPANT_PROPERTY_DEFAULT { \
|
|
PRES_PARTICIPANT_PARAMETER_DEFAULT, \
|
|
REDA_SEQUENCE_NUMBER_UNKNOWN }
|
|
|
|
typedef enum {
|
|
/*************************************************************************/
|
|
/*
|
|
* GROUP A: Kinds associated with specific use cases: records of the
|
|
* following kinds should not be used to perform general purpose
|
|
* security related operations (decoding, encoding, access control checking,
|
|
* etc.).
|
|
*
|
|
* PRESParticipant_gotoRemoteParticipantSecurityRecord will never reach
|
|
* records of these kinds: instead, records associated with any of these
|
|
* kinds should be reached either by weak reference, or by explicitly
|
|
* looking for their full key.
|
|
*/
|
|
/*************************************************************************/
|
|
/*i
|
|
* Secondary record of the remote participant security state. Used to do a
|
|
* secondary authentication while keeping the original one active. If
|
|
* the secondary authentication succeeds, remote participant endpoints will
|
|
* be removed and re-asserted so we send new crypto tokens.
|
|
*/
|
|
PRES_REMOTE_PARTICIPANT_SECURITY_RECORD_REAUTHENTICATION,
|
|
|
|
/*************************************************************************/
|
|
/*
|
|
* GROUP B: Kinds associated with most of the remote participant security
|
|
* related operations (decoding, encoding, access control checking,
|
|
* etc.).
|
|
*
|
|
* PRESParticipant_gotoRemoteParticipantSecurityRecord will look first for
|
|
* the MAIN record, and fallback to PENDING_FOR_REMOVAL if MAIN is not
|
|
* available.
|
|
*/
|
|
/*i
|
|
* Primary record of the remote participant security state. This identifies
|
|
* the main record used to save the current security state of a remote
|
|
* participant.
|
|
*/
|
|
PRES_REMOTE_PARTICIPANT_SECURITY_RECORD_MAIN,
|
|
/*i
|
|
* Any record with this kind contains the security state of a removed remote
|
|
* participant. We keep this security state so we are able to decode/encode
|
|
* samples from/to that participant after the remote participant has been
|
|
* locally unmatched. This is useful when removing a remote participants due
|
|
* to a local partition change, in which case we want to keep the
|
|
* participant config channel open until the remote participant acks the new
|
|
* partition configuration.
|
|
*
|
|
* WARNING! This element must be after the MAIN kind. When decoding messages
|
|
* we would look for a key larger or equal based on the participant guid. By
|
|
* setting the MAIN first it's guaranteed that if we rediscover the removed
|
|
* participant, the new state will always have priority over the obsolete
|
|
* PENDING_FOR_REMOVAL state.
|
|
*/
|
|
PRES_REMOTE_PARTICIPANT_SECURITY_RECORD_PENDING_FOR_REMOVAL,
|
|
/*
|
|
* Constant that identifies the total number of the different kinds in
|
|
* this enum. MUST ALWAYS BE THE LAST ELEMENT.
|
|
*/
|
|
PRES_REMOTE_PARTICIPANT_SECURITY_RECORD_TOTAL_NUMBER_OF_KINDS
|
|
} PRESRemoteParticipantSecurityRecordKind;
|
|
|
|
typedef enum {
|
|
AUTHENTICATION_UNINITIATED,
|
|
AUTHENTICATION_INITIALIZATION_FAILED,
|
|
AUTHENTICATION_IN_PROGRESS,
|
|
AUTHENTICATION_FAILED,
|
|
AUTHENTICATION_COMPLETED,
|
|
AUTHENTICATION_UNAUTHENTICATED,
|
|
AUTHORIZATION_FAILED,
|
|
AUTHORIZATION_FAILED_SUBJECT_NAME_WHITELIST,
|
|
AUTHORIZATION_COMPLETED
|
|
} PRESRemoteParticipantSecurityStatus;
|
|
|
|
struct REDAWorker;
|
|
|
|
struct PRESTopic;
|
|
|
|
struct PRESTopicListener;
|
|
|
|
typedef void
|
|
(*PRESTopicListenerOnInconsistentTopicCallback)(
|
|
const struct PRESTopicListener *listener, struct PRESTopic *topic,
|
|
const struct PRESInconsistentTopicStatus *status,
|
|
struct REDAWorker *worker);
|
|
|
|
struct PRESTopicListener {
|
|
PRESTopicListenerOnInconsistentTopicCallback onInconsistentTopic;
|
|
};
|
|
|
|
struct PRESInvalidLocalAdvanceNoticeStatus {
|
|
/*e
|
|
* Absolute time at which the credential will expire
|
|
*/
|
|
struct RTINtpTime expirationTime;
|
|
|
|
/*e
|
|
* The reason for the credential to expire (identity, permissions, etc.)
|
|
*/
|
|
RTI_UINT32 expirationCode;
|
|
|
|
/*e
|
|
* A descriptive message for the expiration reason integer code.
|
|
*/
|
|
const char *expirationMessage;
|
|
};
|
|
|
|
|
|
|
|
/*i
|
|
* Initializer for the expiration message. This value should never be provided
|
|
* to the user. The implementation must populate the expiration message field
|
|
* with the right value before the call to
|
|
* onInvalidLocalStatusAdvanceNotice.
|
|
*/
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_INITIALIZER NULL
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_INITIALIZER 0
|
|
|
|
/*i
|
|
* The DomainParticipant's Identity Certificate is closer to expiration than
|
|
* the expiration_advance_notice_duration property value.
|
|
* Notify the user so that they can take action and renew the certificate.
|
|
*/
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_IDENTITY_BY_CREDENTIAL \
|
|
"The DomainParticipant's Identity is about to expire."
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_IDENTITY_BY_CREDENTIAL 1
|
|
|
|
/*i
|
|
* An update of the Certificate Revocation List revoked the local
|
|
* DomainParticipant's Identity Certificate.
|
|
*/
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_IDENTITY_BY_CONTEXT \
|
|
"The DomainParticipant's Identity Certificate was revoked by the Certificate Revocation List."
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_IDENTITY_BY_STATUS 2
|
|
|
|
/*i
|
|
* The DomainParticipant's Identity Status Token (OCSP) is invalid.
|
|
* Note that we don't notify the user if the Identity Status Token is close to
|
|
* expiration. This is because the middleware will handle querying the OCSP
|
|
* responder for a new status token. Only if the update fails and the token
|
|
* expires, we notify the user.
|
|
*/
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_IDENTITY_BY_STATUS \
|
|
"The DomainParticipant's Identity Status Token (OCSP) is invalid."
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_REASON_IDENTITY_BY_STATUS 3
|
|
|
|
/*i
|
|
* The DomainParticipant's Permissions Document is closer to expiration than
|
|
* the expiration_advance_notice_duration property value.
|
|
* Notify the user so that they can take action and renew their Permissions
|
|
* Document.
|
|
*/
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_PERMISSIONS_BY_CREDENTIAL \
|
|
"The DomainParticipant's Permissions are about to expire."
|
|
#define PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_PERMISSIONS_BY_CREDENTIAL 4
|
|
|
|
#define PRESInvalidLocalAdvanceNoticeStatus_INITIALIZER { \
|
|
RTI_NTP_TIME_ZERO, /* expirationTime */ \
|
|
PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_CODE_INITIALIZER, /* ExpirationCode */ \
|
|
PRES_INVALID_LOCAL_ADVANCE_NOTICE_STATUS_EXPIRATION_MESSAGE_INITIALIZER /* ExpirationMessage */ \
|
|
}
|
|
|
|
typedef void
|
|
(*PRESParticipantListenerOnInvalidLocalStatusAdvanceNoticeCallback)(
|
|
struct PRESParticipant *participant,
|
|
const struct PRESInvalidLocalAdvanceNoticeStatus *invalidLocalCredentialStatus,
|
|
struct REDAWorker *worker);
|
|
|
|
struct PRESParticipantListener {
|
|
PRESParticipantListenerOnInvalidLocalStatusAdvanceNoticeCallback
|
|
onInvalidLocalStatusAdvanceNotice;
|
|
struct PRESTopicListener topicListener;
|
|
};
|
|
|
|
struct PRESLocalParticipantConfigListener;
|
|
|
|
typedef void
|
|
(*PRESLocalParticipantConfigListenerOnAfterLocalParticipantEnabledCallback)(
|
|
const struct PRESLocalParticipantConfigListener *me,
|
|
const struct MIGRtpsGuid *guid,
|
|
const struct PRESParticipantProperty *property,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef void
|
|
(*PRESLocalParticipantConfigListenerOnAfterLocalParticipantPropertyChangedCallback)(
|
|
const struct PRESLocalParticipantConfigListener *me,
|
|
struct REDASequenceNumber *latestSn,
|
|
const struct MIGRtpsGuid *guid,
|
|
const struct PRESParticipantProperty *newProp,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef void
|
|
(*PRESLocalParticipantConfigListenerOnBeforeLocalParticipantDestructionCallback)(
|
|
const struct PRESLocalParticipantConfigListener *me,
|
|
const struct MIGRtpsGuid *guid,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef void
|
|
(*PRESLocalParticipantConfigListenerOnAfterLocalParticipantDestructionCallback)(
|
|
const struct PRESLocalParticipantConfigListener *me,
|
|
const struct MIGRtpsGuid *guid,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef void
|
|
(*PRESLocalParticipantConfigListenerOnBeforeRemoteParticipantIgnoredCallback)(
|
|
const struct PRESLocalParticipantConfigListener *me,
|
|
const struct MIGRtpsGuid *guid,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef void (
|
|
*PRESLocalParticipantConfigListenerOnBeforeRemoteParticipantRemovedCallback)(
|
|
const struct PRESLocalParticipantConfigListener *me,
|
|
const struct MIGRtpsGuid *guid,
|
|
const struct PRESLocatorQosPolicy *metatrafficMulticastLocator,
|
|
const struct PRESLocatorQosPolicy *metatrafficUnicastLocator,
|
|
RTIBool configComplete,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESLocalParticipantConfigListenerOnAfterRemoteParticipantAuthenticatedCallback)(
|
|
const struct PRESLocalParticipantConfigListener *me,
|
|
const struct MIGRtpsGuid *guid,
|
|
const struct PRESRemoteParticipantProperty *property,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef void (
|
|
*PRESLocalParticipantConfigListenerOnBeforeReauthenticatedRemoteParticipantConfigWriterRemovedCallback)(
|
|
const struct PRESLocalParticipantConfigListener *me,
|
|
const MIGRtpsParticipantId *remoteParticipantId,
|
|
struct REDAWorker *worker);
|
|
|
|
struct PRESLocalParticipantConfigListener {
|
|
PRESLocalParticipantConfigListenerOnAfterLocalParticipantEnabledCallback
|
|
onAfterLocalParticipantEnabled;
|
|
PRESLocalParticipantConfigListenerOnAfterLocalParticipantPropertyChangedCallback
|
|
onAfterLocalParticipantPropertyChanged;
|
|
PRESLocalParticipantConfigListenerOnBeforeLocalParticipantDestructionCallback
|
|
onBeforeLocalParticipantDestruction;
|
|
PRESLocalParticipantConfigListenerOnAfterLocalParticipantDestructionCallback
|
|
onAfterLocalParticipantDestruction;
|
|
PRESLocalParticipantConfigListenerOnBeforeRemoteParticipantIgnoredCallback
|
|
onBeforeRemoteParticipantIgnored;
|
|
PRESLocalParticipantConfigListenerOnBeforeRemoteParticipantRemovedCallback
|
|
onBeforeRemoteParticipantRemoved;
|
|
|
|
/* Security-related callbacks */
|
|
PRESLocalParticipantConfigListenerOnAfterRemoteParticipantAuthenticatedCallback
|
|
onAfterRemoteParticipantAuthenticated;
|
|
|
|
PRESLocalParticipantConfigListenerOnBeforeReauthenticatedRemoteParticipantConfigWriterRemovedCallback
|
|
onBeforeReauthenticatedRemoteParticipantConfigWriterRemoved;
|
|
};
|
|
|
|
|
|
#define PRES_PARTICIPANT_BUILTIN_TOPIC_NAME "DISCParticipant"
|
|
#define PRES_PARTICIPANT_BUILTIN_BOOTSTRAP_TOPIC_NAME "DISCParticipantBootstrap"
|
|
#define PRES_SERVICE_ID_PARTICIPANT_BUILTIN_TOPIC 1
|
|
|
|
|
|
struct PRESParticipantBuiltinChannelDiscoveryForwarder {
|
|
PRESBuiltinChannelForwarderTransformCdrFromPresFunction transformSampleToCdr;
|
|
};
|
|
|
|
struct PRESParticipantEntityFinalizeListener;
|
|
|
|
typedef void
|
|
(*PRESParticipantEntityFinalizeListenerOnBeforeTopicFinalizeFnc)(
|
|
void* topicFinalizeParam,
|
|
void* userObject, struct REDAWorker *worker);
|
|
|
|
typedef void
|
|
(*PRESParticipantEntityFinalizeListenerOnBeforeContentFilteredTopicFinalizeFnc)(
|
|
void* contentFilteredTopicFinalizeParam,
|
|
void* userObject, struct REDAWorker *worker);
|
|
|
|
typedef void
|
|
(*PRESParticipantEntityFinalizeListenerOnBeforeFlowControllerFinalizeFnc)(
|
|
void* flowControllerFinalizeParam,
|
|
void* userObject, struct REDAWorker *worker);
|
|
|
|
struct PRESParticipantEntityFinalizeListener {
|
|
PRESParticipantEntityFinalizeListenerOnBeforeTopicFinalizeFnc
|
|
onBeforeTopicFinalizeFnc;
|
|
void* topicFinalizeParam;
|
|
|
|
PRESParticipantEntityFinalizeListenerOnBeforeContentFilteredTopicFinalizeFnc
|
|
onBeforeContentFilteredTopicFinalizeFnc;
|
|
void* contentFilteredTopicFinalizeParam;
|
|
|
|
PRESParticipantEntityFinalizeListenerOnBeforeFlowControllerFinalizeFnc
|
|
onBeforeFlowControllerFinalizeFnc;
|
|
void* flowControllerFinalizeParam;
|
|
};
|
|
|
|
struct PRESPsPublicationParameter;
|
|
|
|
struct PRESPsSubscriptionParameter;
|
|
|
|
typedef enum {
|
|
PRES_AUTHENTICATION_VALIDATION_OK,
|
|
PRES_AUTHENTICATION_VALIDATION_FAILED,
|
|
PRES_AUTHENTICATION_VALIDATION_PENDING_RETRY,
|
|
PRES_AUTHENTICATION_VALIDATION_PENDING_HANDSHAKE_REQUEST,
|
|
PRES_AUTHENTICATION_VALIDATION_PENDING_HANDSHAKE_MESSAGE,
|
|
PRES_AUTHENTICATION_VALIDATION_OK_FINAL_MESSAGE,
|
|
/* for internal usage only (not exposed in DDS_ValidationResult_t) */
|
|
PRES_AUTHENTICATION_VALIDATION_UNSUPPORTED
|
|
} PRESParticipantAuthenticationValidationResult;
|
|
|
|
typedef enum {
|
|
PRES_ACCESS_CONTROL_VALIDATION_OK,
|
|
PRES_ACCESS_CONTROL_VALIDATION_FAILED,
|
|
/* for internal usage only (not exposed in DDS_ValidationResult_t) */
|
|
PRES_ACCESS_CONTROL_VALIDATION_UNSUPPORTED
|
|
} PRESParticipantAccessControlValidationResult;
|
|
|
|
typedef enum {
|
|
/*
|
|
* Update of the IdentityCredentialToken (Identity Certificate and,
|
|
* optionally, the OCSP token).
|
|
*/
|
|
PRES_AUTH_STATUS_KIND_IDENTITY_CREDENTIAL,
|
|
/* Update of the Certificate Revocation List (CRL). */
|
|
PRES_AUTH_STATUS_KIND_IDENTITY_VALIDATION_CONTEXT,
|
|
/* Update of the IdentityStatusToken (OCSP token). */
|
|
PRES_AUTH_STATUS_KIND_IDENTITY_STATUS,
|
|
/*
|
|
* Any artifact related to the secure Identity of a DomainParticipant may
|
|
* have changed. Re-evaluate the validity for all of them (Identity
|
|
* Certificate, OCSP token, CRL).
|
|
*/
|
|
PRES_AUTH_STATUS_KIND_ALL
|
|
} PRESAuthStatusKind;
|
|
|
|
typedef enum {
|
|
/* Update of the Permissions Document. */
|
|
PRES_ACCESS_CONTROL_STATUS_KIND_PERMISSIONS_CREDENTIAL
|
|
} PRESAccessControlStatusKind;
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_LogFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inputs */
|
|
RTI_INT32 logLevel,
|
|
const char *pluginClass,
|
|
const char *pluginMethod,
|
|
const char *message,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef PRESParticipantAuthenticationValidationResult
|
|
(*PRESParticipant_GetPreAuthenticatedRemoteParticipantSecurityStateFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* outputs */
|
|
void **remoteIdentityHandle,
|
|
void **handshakeHandle,
|
|
void **authRequestMessage,
|
|
void *handshakeMessage,
|
|
/* inputs */
|
|
const void *remoteAuthRequestMessage,
|
|
const void *localIdentityHandle,
|
|
const struct PRESDataHolder *remoteIdentityToken,
|
|
const MIGRtpsParticipantId *remoteParticipantKey,
|
|
const struct REDABuffer *localSerializedParticipantBuiltinTopicData,
|
|
const PRESTrustedParticipantInfo *trustedParticipantInfo,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef PRESParticipantAuthenticationValidationResult
|
|
(*PRESParticipant_BeginHandshakeReplyFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* outputs */
|
|
void **handshakeHandle,
|
|
void *handshakeMessageOut,
|
|
/* input */
|
|
const void *handshakeMessageIn,
|
|
/* inout */
|
|
void *initiatorIdentityHandle,
|
|
/* inputs */
|
|
const void *replierIdentityHandle,
|
|
const MIGRtpsParticipantId *remoteParticipantKey,
|
|
const struct REDABuffer *serializedParticipantBuiltinTopicData,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef PRESParticipantAuthenticationValidationResult
|
|
(*PRESParticipant_ProcessHandshakeFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* outputs */
|
|
void *handshakeMessageOut,
|
|
/* input */
|
|
const void *handshakeMessageIn,
|
|
/* inout */
|
|
void *handshakeHandle,
|
|
/* input */
|
|
const MIGRtpsParticipantId *remoteParticipantKey,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_ReturnObjectFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inputs */
|
|
void *object,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_GetAuthenticatedRemoteParticipantSecurityStateFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* outputs */
|
|
void **remotePermissionsHandle,
|
|
void **sharedSecretHandle,
|
|
void **remoteInterceptorHandle,
|
|
void **interceptorState,
|
|
/* inputs */
|
|
void *handshakeHandle,
|
|
void *remoteIdentityHandle,
|
|
void *localPermissionsHandle,
|
|
const struct PRESParticipantParameter *participantParameter,
|
|
void *localIdentityHandle,
|
|
void *localInterceptorHandle,
|
|
struct PRESParticipantSecurityAttributes *attributes,
|
|
const struct PRESDataHolder *remotePermissionsToken,
|
|
const MIGRtpsParticipantId *remoteParticipantKey,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool (
|
|
*PRESParticipant_CheckUpdatedRemoteParticipantAccessFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inputs */
|
|
void *remotePermissionsHandle,
|
|
const MIGRtpsParticipantId *remoteParticipantKey,
|
|
const struct PRESParticipantSecurityAttributes *attributes,
|
|
const struct PRESParticipantParameter *participantParameter,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool (*PRESParticipant_populateTrustedTokenFunction)(
|
|
struct PRESParticipant *participant,
|
|
void *sample, /* in/out */
|
|
struct REDAFastBufferPool *dataHolderPool,
|
|
RTIBool initializeSample,
|
|
int serviceId,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool (*PRESParticipant_SetLocalParticipantTrustedStateFunction)(
|
|
struct PRESParticipant *participant,
|
|
void *localIdentityHandle,
|
|
const PRESTrustedState *trustedState,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool (*PRESParticipant_VerifyRemoteParticipantTrustedStateFunction)(
|
|
struct PRESParticipant *participant,
|
|
const void *remoteIdentityHandle,
|
|
void *handshakeHandle,
|
|
const PRESTrustedState *trustedState,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef PRESParticipantAuthenticationValidationResult (
|
|
*PRESParticipant_ValidateIdentityStatusFunction)(
|
|
struct PRESParticipant *participant,
|
|
struct RTINtpTime *nextEventTime,
|
|
void *identityHandle,
|
|
PRESAuthStatusKind statusKind,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef PRESParticipantAccessControlValidationResult (
|
|
*PRESParticipant_ValidatePermissionsStatusFunction)(
|
|
struct PRESParticipant *participant,
|
|
struct RTINtpTime *nextEventTime,
|
|
void *permissionsHandle,
|
|
PRESAccessControlStatusKind statusKind,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef int (*PRESParticipant_GetMaxPrivateSignatureSizeFunction)(
|
|
struct PRESParticipant *participant,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool (*PRESParticipant_PrivateSignFunction)(
|
|
struct PRESParticipant *participant,
|
|
struct REDABuffer *signature, /* out */
|
|
const struct REDABuffer *dataToSign,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool (*PRESParticipant_VerifyPrivateSignatureFunction)(
|
|
struct PRESParticipant *participant,
|
|
const struct REDABuffer *signedData,
|
|
const struct REDABuffer *signature,
|
|
const void *remoteIdentityHandle,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTI_INT32 (*PRESParticipant_GetSubjectNameStringFunction)(
|
|
struct PRESParticipant *participant,
|
|
char *subjectName,
|
|
RTI_UINT32 *subjectNameSize,
|
|
const void *identityHandle,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool (*PRESParticipant_GetTopicAttributesFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* output */
|
|
struct PRESTopicSecurityAttributes *attributes,
|
|
/* inputs */
|
|
void *permissionsHandle,
|
|
const char *topicName,
|
|
const struct PRESSequenceString *topicAliasNames,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool (*PRESParticipant_GetEndpointAttributesFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* output */
|
|
struct PRESEndpointSecurityAttributes *attributes,
|
|
/* inputs */
|
|
const struct PRESParticipantSecuritySymmetricCipherAlgorithmInfo *symmetricCipherAlgorithms,
|
|
void *permissionsHandle,
|
|
const char *topicName,
|
|
const struct PRESSequenceString *topicAliasNames,
|
|
MIGRtpsObjectId objectId,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool (*PRESParticipant_ReturnEndpointAttributesFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inout */
|
|
struct PRESEndpointSecurityAttributes *attributes,
|
|
/* input */
|
|
MIGRtpsRWType endpointType,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef void *
|
|
(*PRESParticipant_RegisterLocalEndpointFunction)(
|
|
struct PRESParticipant *participant,
|
|
struct PRESEndpointSecurityAlgorithmInfo *adjustedAlgorithmInfo,
|
|
/* inputs */
|
|
void *participantInterceptorHandle,
|
|
struct PRESPropertyQosPolicy *endpointProperties,
|
|
const struct PRESEndpointSecurityAttributes *endpointSecurityAttributes,
|
|
const struct MIGRtpsGuid *endpointGuid,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_CheckRemoteDataWriterFunction)(
|
|
struct PRESParticipant *participant,
|
|
RTIBool *allowProxy,
|
|
/* inputs */
|
|
void *permissionsHandle,
|
|
const struct PRESPsPublicationParameter *publicationData,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_CheckRemoteDataReaderFunction)(
|
|
struct PRESParticipant *participant,
|
|
RTIBool *allowProxy,
|
|
/* inputs */
|
|
void *permissionsHandle,
|
|
const struct PRESPsSubscriptionParameter *subscriptionData,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef void *
|
|
(*PRESParticipant_RegisterMatchedRemoteEndpointFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inputs */
|
|
void *localEndpointHandle,
|
|
void *remoteParticipantInterceptorHandle,
|
|
const void *matchedLocalEndpointHandle,
|
|
void *sharedSecret,
|
|
MIGRtpsRWType remoteEndpointType,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_CheckMatchPermissionsFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inputs */
|
|
void *localEndpointPermissionsHandle,
|
|
void *remoteEndpointPermissionsHandle,
|
|
MIGRtpsRWType remoteEndpointType,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_AssertLocalEntityInterceptorStateFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* output */
|
|
void *state,
|
|
/* inputs */
|
|
void *localHandle,
|
|
void *remoteHandle,
|
|
const struct MIGRtpsGuid *localGuid,
|
|
const struct MIGRtpsGuid *remoteGuid,
|
|
RTI_UINT32 revisionId,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_SetRemoteInterceptorStateFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* output */
|
|
void *remoteInterceptorHandle,
|
|
/* inputs */
|
|
const void *localInterceptorHandle,
|
|
const void *interceptorState,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_TransformOutgoingMetaDataFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* output */
|
|
struct REDABuffer *transformedMetaData,
|
|
/* inputs */
|
|
const struct REDABuffer *outgoingMetaDataBuffers,
|
|
int outgoingMetaDataBufferCount,
|
|
void *senderHandle,
|
|
const struct REDAInlineList *receiverHandleList,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_TransformOutgoingRtpsMessageFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* output */
|
|
struct REDABuffer *transformedMetaData,
|
|
/* in/out */
|
|
RTI_INT32 *receiverHandleListIndex,
|
|
/* inputs */
|
|
const struct REDABuffer *outgoingMetaDataBuffers,
|
|
int outgoingMetaDataBufferCount,
|
|
void *senderHandle,
|
|
const struct REDAInlineList *receiverHandleList,
|
|
RTIBool encodeWithPresharedKey,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_TransformIncomingContentFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* output */
|
|
struct REDABuffer *transformedData,
|
|
/* inputs */
|
|
const struct REDABuffer *incomingData,
|
|
void *receiverHandle,
|
|
void *senderHandle,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_PreprocessInterceptorSubmsgFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* outputs */
|
|
MIGRtpsRWType *interceptorSubmessageCategory,
|
|
void **dataWriterHandle,
|
|
void **dataReaderHandle,
|
|
/* inputs */
|
|
const struct REDABuffer *incomingSubmessage,
|
|
void *receivingParticipantHandle,
|
|
void *sendingParticipantHandle,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef unsigned int
|
|
(*PRESParticipant_GetTransformedOutgoingSerializedSampleSizeFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* input */
|
|
unsigned int serializedSampleSize);
|
|
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_TransformOutgoingSerializedDataFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* output */
|
|
struct REDABuffer *transformedSerializedData,
|
|
/* inputs */
|
|
const struct REDABuffer *outgoingSerializedDataBuffers,
|
|
int outgoingSerializedDataBufferCount,
|
|
void *senderHandle,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_SetLocalInterceptorStateFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inputs */
|
|
void *localEntityHandle,
|
|
void *interceptorState,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_TransformInterceptorStateFunction)(
|
|
struct PRESParticipant *participant,
|
|
struct REDABuffer *serializedInterceptorState,
|
|
void *interceptorState,
|
|
const struct REDABuffer *transformationKey,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_CreateLocalKeyRevisionFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* outputs */
|
|
RTI_UINT32 *revisionId,
|
|
|
|
/* sent to all participants upon key regeneration */
|
|
void **localLatestKeyRevisionToken,
|
|
|
|
/* sent to individual late-joiner participants when they join */
|
|
void **localAllKeyRevisionTokens,
|
|
|
|
/*
|
|
* The maximum number of elements that localAllKeyRevisionTokens should
|
|
* contain.
|
|
*/
|
|
RTI_UINT32 maxAllKeyRevisionTokens,
|
|
|
|
/* in/out: updated with new key revision and refreshed key material */
|
|
void *interceptorHandle,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_SetRemoteKeyRevisionTokensFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* in/out: updated with new key revision and refreshed key material */
|
|
void *interceptorHandle,
|
|
/* input */
|
|
const void *remoteKeyRevisionTokens, /* received from a remote participant */
|
|
struct REDAWorker *worker);
|
|
|
|
typedef enum {
|
|
PRES_PARTICIPANT_CREDENTIAL_KIND_IDENTITY,
|
|
PRES_PARTICIPANT_CREDENTIAL_KIND_IDENTITY_VALIDATION_CONTEXT,
|
|
PRES_PARTICIPANT_CREDENTIAL_KIND_IDENTITY_STATUS,
|
|
PRES_PARTICIPANT_CREDENTIAL_KIND_PERMISSIONS
|
|
} PRESParticipantCredentialKind;
|
|
|
|
typedef enum {
|
|
PRES_PARTICIPANT_CREDENTIAL_ACTION_VALIDATE,
|
|
PRES_PARTICIPANT_CREDENTIAL_ACTION_PROPAGATE
|
|
} PRESParticipantCredentialAction;
|
|
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_SetRemoteTrustedTokenFunction)(
|
|
struct PRESParticipant *participant,
|
|
void *handle, /* identity or permisssions. */
|
|
const void *token,
|
|
PRESParticipantCredentialKind tokenKind,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_ActivateLocalKeyRevisionFunction)(
|
|
struct PRESParticipant *participant,
|
|
void *interceptorHandle,
|
|
RTI_UINT32 revisionId,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_RetransformOutgoingSerializedDataFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inouts */
|
|
struct REDABuffer *transformedSerializedData,
|
|
void *interceptorHandle,
|
|
struct REDABuffer *retransformScratchBuffer,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_RetransformOutgoingSerializedDataFromDurableWriterHistoryFunction)(
|
|
struct PRESParticipant *participant,
|
|
/* inouts */
|
|
struct REDABuffer *transformedSerializedData,
|
|
void *interceptorHandle,
|
|
struct REDABuffer *retransformScratchBuffer,
|
|
/* inputs */
|
|
const void *historicalKeyRevisionInterceptorState,
|
|
RTIBool keyRevisionsPreviouslyEnabled,
|
|
struct REDAWorker *worker);
|
|
|
|
typedef RTIBool
|
|
(*PRESParticipant_GetAdjustedLocalParticipantKeyFunction)(
|
|
struct PRESParticipant *participant,
|
|
struct MIGRtpsGuid *adjustedKey,
|
|
const struct MIGRtpsGuid *candidateKey,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
struct PRESParticipantSecurityForwarder {
|
|
PRESParticipant_ReturnObjectFunction returnIdentityHandle;
|
|
PRESParticipant_ReturnObjectFunction returnIdentityToken;
|
|
PRESParticipant_ReturnObjectFunction returnPermissionsHandle;
|
|
PRESParticipant_ReturnObjectFunction returnPermissionsToken;
|
|
PRESParticipant_ReturnObjectFunction unregisterParticipant;
|
|
PRESParticipant_LogFunction log;
|
|
PRESParticipant_GetPreAuthenticatedRemoteParticipantSecurityStateFunction
|
|
getPreAuthenticatedRemoteParticipantSecurityState;
|
|
PRESParticipant_ReturnObjectFunction returnHandshakeHandle;
|
|
PRESParticipant_GetAuthenticatedRemoteParticipantSecurityStateFunction
|
|
getAuthenticatedRemoteParticipantSecurityState;
|
|
PRESParticipant_CheckUpdatedRemoteParticipantAccessFunction
|
|
checkUpdatedRemoteParticipantAccess;
|
|
PRESParticipant_populateTrustedTokenFunction populateTrustedToken;
|
|
PRESParticipant_ReturnObjectFunction returnSharedSecretHandle;
|
|
|
|
PRESParticipant_SetLocalParticipantTrustedStateFunction
|
|
setLocalParticipantTrustedState;
|
|
PRESParticipant_VerifyRemoteParticipantTrustedStateFunction
|
|
verifyRemoteParticipantTrustedState;
|
|
|
|
PRESParticipant_ValidateIdentityStatusFunction validateIdentityStatus;
|
|
PRESParticipant_ValidatePermissionsStatusFunction validatePermissionsStatus;
|
|
|
|
PRESParticipant_GetMaxPrivateSignatureSizeFunction
|
|
getMaxPrivateSignatureSize;
|
|
PRESParticipant_PrivateSignFunction privateSign;
|
|
PRESParticipant_VerifyPrivateSignatureFunction verifyPrivateSignature;
|
|
|
|
PRESParticipant_GetSubjectNameStringFunction getSubjectNameString;
|
|
|
|
PRESParticipant_GetTopicAttributesFunction getTopicAttributes;
|
|
PRESParticipant_GetEndpointAttributesFunction getEndpointAttributes;
|
|
PRESParticipant_ReturnEndpointAttributesFunction returnEndpointAttributes;
|
|
|
|
PRESParticipant_ReturnObjectFunction preUnregisterDataReader;
|
|
PRESParticipant_ReturnObjectFunction preUnregisterDataWriter;
|
|
PRESParticipant_ReturnObjectFunction unregisterDataReader;
|
|
PRESParticipant_ReturnObjectFunction unregisterDataWriter;
|
|
|
|
PRESParticipant_CheckRemoteDataReaderFunction checkRemoteDataReader;
|
|
PRESParticipant_CheckRemoteDataWriterFunction checkRemoteDataWriter;
|
|
PRESParticipant_BeginHandshakeReplyFunction beginHandshakeReply;
|
|
PRESParticipant_ProcessHandshakeFunction processHandshake;
|
|
PRESParticipant_RegisterLocalEndpointFunction registerLocalDataReader;
|
|
PRESParticipant_RegisterLocalEndpointFunction registerLocalDataWriter;
|
|
PRESParticipant_RegisterMatchedRemoteEndpointFunction
|
|
registerMatchedRemoteEndpoint;
|
|
PRESParticipant_CheckMatchPermissionsFunction checkMatchPermissions;
|
|
PRESParticipant_SetRemoteInterceptorStateFunction
|
|
setRemoteParticipantInterceptorState;
|
|
PRESParticipant_SetRemoteInterceptorStateFunction
|
|
setRemoteDataWriterInterceptorState;
|
|
PRESParticipant_SetRemoteInterceptorStateFunction
|
|
setRemoteDataReaderInterceptorState;
|
|
PRESParticipant_AssertLocalEntityInterceptorStateFunction
|
|
assertLocalEntityInterceptorState;
|
|
PRESParticipant_TransformOutgoingMetaDataFunction
|
|
transformOutgoingDataWriterSubmessage;
|
|
PRESParticipant_TransformOutgoingMetaDataFunction
|
|
transformOutgoingDataReaderSubmessage;
|
|
PRESParticipant_TransformOutgoingRtpsMessageFunction
|
|
transformOutgoingRtpsMessage;
|
|
PRESParticipant_TransformIncomingContentFunction
|
|
transformIncomingRtpsMessage;
|
|
PRESParticipant_PreprocessInterceptorSubmsgFunction
|
|
preprocessInterceptorSubmsg;
|
|
PRESParticipant_TransformIncomingContentFunction
|
|
transformIncomingDataWriterSubmessage;
|
|
PRESParticipant_TransformIncomingContentFunction
|
|
transformIncomingDataReaderSubmessage;
|
|
|
|
/*** serialized data forwarders ***/
|
|
PRESParticipant_GetTransformedOutgoingSerializedSampleSizeFunction
|
|
getTransformedOutgoingSerializedSampleSize;
|
|
PRESParticipant_TransformOutgoingSerializedDataFunction
|
|
transformOutgoingSerializedData;
|
|
PRESParticipant_TransformIncomingContentFunction
|
|
transformIncomingSerializedData;
|
|
|
|
/*** persistent crypto tokens forwarders ***/
|
|
PRESParticipant_SetLocalInterceptorStateFunction
|
|
setLocalDataWriterInterceptorState;
|
|
PRESParticipant_TransformInterceptorStateFunction
|
|
transformOutgoingLocalDataWriterInterceptorState;
|
|
PRESParticipant_TransformInterceptorStateFunction
|
|
transformIncomingLocalDataWriterInterceptorState;
|
|
|
|
/*** key regeneration and redistribution forwarders ***/
|
|
PRESParticipant_CreateLocalKeyRevisionFunction
|
|
createLocalKeyRevision;
|
|
PRESParticipant_SetRemoteKeyRevisionTokensFunction
|
|
setRemoteKeyRevisionTokens;
|
|
PRESParticipant_ActivateLocalKeyRevisionFunction
|
|
activateLocalKeyRevision;
|
|
PRESParticipant_RetransformOutgoingSerializedDataFunction
|
|
retransformOutgoingSerializedData;
|
|
PRESParticipant_RetransformOutgoingSerializedDataFromDurableWriterHistoryFunction
|
|
retransformOutgoingSerializedDataFromDurableWriterHistory;
|
|
PRESParticipant_SetRemoteTrustedTokenFunction setRemoteTrustedToken;
|
|
|
|
PRESParticipant_GetAdjustedLocalParticipantKeyFunction getAdjustedLocalParticipantKey;
|
|
};
|
|
|
|
struct PRESParticipantSecurityHandles {
|
|
/*
|
|
* WARNING: This field is the subject of a copyReadWriteArea call, so pay
|
|
* attention to the order of this field relative to other fields.
|
|
*/
|
|
void *interceptor;
|
|
|
|
void *identity;
|
|
void *permissions;
|
|
};
|
|
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_HANDLES_DEFAULT { \
|
|
NULL /* interceptor */, \
|
|
NULL /* identity */, \
|
|
NULL /* permissions */ \
|
|
}
|
|
|
|
struct PRESParticipantSecurity {
|
|
const struct PRESParticipantSecurityForwarder *forwarder;
|
|
struct PRESParticipantSecurityHandles handles;
|
|
struct PRESParticipantSecurityAttributes attributes;
|
|
|
|
/*
|
|
* The latest key revision that has been created. If this revision is not
|
|
* fully-acknowledged and activated, then we will not generate new revisions.
|
|
*/
|
|
RTI_UINT32 latestKeyRevisionId;
|
|
|
|
/* sent to all participants when key is regenerated */
|
|
void *latestKeyRevisionInfoToken;
|
|
|
|
/* sent to every late-joiner participant when they join */
|
|
void *allKeyRevisionInfoTokens;
|
|
|
|
/*
|
|
* Sent to all remote DomainParticipants when the local Identity Certificate
|
|
* changes. Thread-safety: only the event thread should modify or use this
|
|
* token.
|
|
*/
|
|
void *identityCredentialToken;
|
|
|
|
/*
|
|
* Sent to all remote DomainParticipants when the local Identity Status
|
|
* changes. Thread-safety: only the event thread should modify or use this
|
|
* token.
|
|
*/
|
|
void *identityStatusToken;
|
|
|
|
/*
|
|
* Sent to all remote DomainParticipants when the local Permissions change.
|
|
* Thread-safety: only the event thread should modify or use this token.
|
|
*/
|
|
void *permissionsCredentialToken;
|
|
};
|
|
|
|
|
|
#define PRES_PARTICIPANT_SECURITY_DEFAULT { \
|
|
NULL, /* forwarder */ \
|
|
PRES_PARTICIPANT_SECURITY_HANDLES_DEFAULT, \
|
|
PRES_PARTICIPANT_SECURITY_ATTRIBUTES_DEFAULT, \
|
|
0, /* latestKeyRevisionId */ \
|
|
NULL, /* latestKeyRevisionInfoToken */ \
|
|
NULL, /* allKeyRevisionInfoTokens */ \
|
|
NULL, /* identityCredentialToken */ \
|
|
NULL, /* identityStatusToken */ \
|
|
NULL /* permissionsCredentialToken */ \
|
|
}
|
|
|
|
|
|
struct PRESParticipantGenericMessageCreateSampleParameter {
|
|
struct PRESParticipantGenericMessagePool *pool;
|
|
void *sample;
|
|
};
|
|
|
|
|
|
#define PRES_PARTICIPANT_GENERIC_MESSAGE_CREATE_SAMPLE_PARAMETER_DEFAULT { \
|
|
NULL, /* pool */ \
|
|
NULL /* sample */ \
|
|
}
|
|
|
|
struct REDADatabase;
|
|
|
|
struct REDAExclusiveArea;
|
|
|
|
struct RTIClock;
|
|
|
|
extern PRESDllExport
|
|
struct PRESParticipant * PRESParticipant_new(
|
|
const struct MIGRtpsGuid *guid,
|
|
struct RTINetioConfigurator* configuratorIn,
|
|
struct REDAWorkerFactory *workerFactory,
|
|
struct RTIEventActiveDatabase *database,
|
|
struct RTIClock *clock,
|
|
struct RTIClock *timestampClock,
|
|
struct REDAExclusiveArea *tableEa,
|
|
struct REDAExclusiveArea *recordEa,
|
|
struct REDAExclusiveArea *remoteRecordEa,
|
|
const struct COMMENDActiveFacadeThreadListener *threadListener,
|
|
const struct PRESParticipantEntityFinalizeListener *finalizeListener,
|
|
const struct PRESParticipantProperty *property,
|
|
const struct PRESParticipantListener *listener,
|
|
PRESStatusKindMask listenerMask,
|
|
const struct PRESParticipantSecurity *security,
|
|
struct RTIOsapiThreadFactory *recv_thread_factory,
|
|
struct RTIOsapiThreadFactory *event_thread_factory,
|
|
struct RTIOsapiThreadFactory *asynch_pub_thread_factory,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_enable(
|
|
struct PRESParticipant *me,
|
|
RTIBool *autoenableContainedEntities,
|
|
const struct PRESLocatorQosPolicy *defaultUnicastLocator,
|
|
const struct PRESLocatorQosPolicy *metatrafficUnicastLocator,
|
|
const struct PRESReducedLocatorQosPolicy *metatrafficMulticastLocator,
|
|
const struct PRESSequenceTransportInfo *transportInfoSequence,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_postEnable(
|
|
struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_postIdentityStatusValidationEvent(
|
|
struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_enableAllEntities(struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_destroyAllEntities(struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_destroyCustomFlowControllers(
|
|
struct PRESParticipant *me, int *failReason, struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isEnabled(struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isTypeObjectV2Enabled(const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isAuthenticationEnabled(const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isFullSecurityEnabled(const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isKeyRegenerationEnabled(struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isParticipantDiscoveryStateless(
|
|
struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isParticipantDiscoverySampleSignatureDisabled(
|
|
struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isSecureParticipantDiscoveryDisabled(
|
|
struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isReceivedDiscoveryProtectionDisabled(
|
|
struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_areUnauthenticatedParticipantsAllowed(
|
|
struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
PRESBuiltinEndpointMask PRESParticipant_getBuiltinEndpointMask(
|
|
struct PRESParticipant *me,
|
|
RTIBool isVendor);
|
|
|
|
extern PRESDllExport RTIBool
|
|
PRESParticipant_containsEntity(
|
|
struct PRESParticipant *me,
|
|
const struct MIGRtpsGuid *guid);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_hasTopic(struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_preShutdown(
|
|
struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_preShutdownWakeup(struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_shutdown(struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_delete(struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
struct PRESService;
|
|
|
|
struct PRESTypePlugin;
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_registerType(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const struct PRESTypePlugin *typePlugin,
|
|
const char *typeName,
|
|
void *registrationData,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool
|
|
PRESParticipant_unregisterType(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const char *typeName,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getRegisteredUserTypes(
|
|
const struct PRESParticipant *me,
|
|
RTI_UINT32 *typeCount,
|
|
struct PRESRegisteredType ***userTypeArray,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getRegisteredUserType(
|
|
const struct PRESParticipant *me,
|
|
struct PRESRegisteredType **userType,
|
|
const char *edTypeName,
|
|
struct REDAWorker *worker);
|
|
|
|
struct PRESTopic;
|
|
|
|
struct PRESContentFilteredTopic;
|
|
|
|
struct PRESContentFilterType;
|
|
|
|
struct PRESTopicProperty;
|
|
|
|
extern PRESDllExport
|
|
struct PRESTopic* PRESParticipant_createTopic(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
RTIBool *autoenableContainedEntities,
|
|
const char *topicName,
|
|
const char *typeName,
|
|
MIGRtpsObjectId oid,
|
|
struct PRESTopicProperty *property,
|
|
const struct PRESTopicListener *listener,
|
|
PRESStatusKindMask listenerMask,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_destroyTopic(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct PRESTopic *topic,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
struct PRESTopic* PRESParticipant_lookupTopic(
|
|
struct PRESParticipant *me,
|
|
const char *topicName, struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
struct PRESTopic* PRESParticipant_findTopic(
|
|
struct PRESParticipant *me,
|
|
const char *topicName,
|
|
const char *typeName,
|
|
const struct RTINtpTime *timeout,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport int
|
|
PRESParticipant_getUserTopicCount(
|
|
struct PRESParticipant *participant,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_lockAllTopics(
|
|
struct PRESParticipant *participant,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool
|
|
PRESParticipant_unlockAllTopics(
|
|
struct PRESParticipant *participant,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
#define PRESParticipantTopicIterator REDACursor
|
|
#define PRESParticipantCFTIterator REDACursor
|
|
|
|
extern PRESDllExport
|
|
struct PRESParticipantTopicIterator *
|
|
PRESParticipant_getTopicIterator(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport void
|
|
PRESParticipant_returnUserTopicIterator(
|
|
struct PRESParticipant *me,
|
|
struct PRESParticipantTopicIterator *iterator);
|
|
|
|
extern PRESDllExport
|
|
struct PRESTopic *
|
|
PRESParticipant_getNextTopic(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct PRESParticipantTopicIterator *iterator,
|
|
MIGRtpsObjectSuffix topicSuffix);
|
|
|
|
extern PRESDllExport
|
|
int PRESParticipant_getCFTCount(
|
|
struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
struct PRESParticipantCFTIterator *
|
|
PRESParticipant_getCFTIterator(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport void
|
|
PRESParticipant_returnCFTIterator(
|
|
struct PRESParticipant *me,
|
|
struct PRESParticipantCFTIterator *iterator);
|
|
|
|
extern PRESDllExport
|
|
struct PRESContentFilteredTopic *
|
|
PRESParticipant_getNextCFT(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct PRESParticipantCFTIterator *iterator);
|
|
|
|
extern PRESDllExport
|
|
struct PRESEntity* PRESParticipant_lookupEntity(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct MIGRtpsGuid *guid,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
#define PRESTopicTypeIterator REDACursor
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_beginGetTopicTypes(
|
|
struct PRESParticipant *me,
|
|
struct PRESTopicTypeIterator **iter,
|
|
int *maxTopicTypes,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_endGetTopicTypes(
|
|
struct PRESParticipant *me,
|
|
struct PRESTopicTypeIterator *iter,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_registerContentFilterType(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const char *name,
|
|
const struct PRESContentFilter * presContentFilter,
|
|
RTIBool isBuiltin,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_unregisterContentFilterType(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const char *name,
|
|
void **filter_object,
|
|
struct REDAWorker *worker);
|
|
|
|
struct REDAWeakReference;
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_lookupContentFilterType(
|
|
struct PRESParticipant *me,
|
|
const char *name,
|
|
struct PRESContentFilter * presContentFilter,
|
|
struct REDAWeakReference *filterWR,
|
|
RTIBool update_refcount,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getContentFilterTypes(
|
|
struct PRESParticipant *me,
|
|
char** filter_names,
|
|
int* num_filters,
|
|
RTIBool has_ownership,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
struct PRESContentFilteredTopic* PRESParticipant_createContentFilteredTopic(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const char *name,
|
|
struct PRESTopic *related_topic,
|
|
const char *filter_expression,
|
|
const char **filter_parameters,
|
|
RTI_INT32 parameter_length,
|
|
const char *filter_name,
|
|
const struct PRESContentFilteredTopicProperty *property,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
struct PRESContentFilteredTopicProperty PRESParticipant_getDefaultContentFilteredTopicProperty(void);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_destroyContentFilteredTopic(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct PRESContentFilteredTopic *topic,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
struct PRESContentFilteredTopic*
|
|
PRESParticipant_lookupContentFilteredTopic(
|
|
struct PRESParticipant *me,
|
|
const char *name,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_assertRemoteParticipant(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const MIGRtpsParticipantId *remoteParticipantId,
|
|
struct PRESRemoteParticipantProperty *remoteParticipantProperty,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipant_updateRemoteParticipantLiveliness(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
|
|
RTIBool manualLivelinessUpdate,
|
|
RTIBool isSecureLiveliness,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipant_updateRemoteEndpointUnicastLocatorsWithCursor(
|
|
struct PRESParticipant *me,
|
|
struct REDACursor *cursor,
|
|
struct REDAWorker *worker);
|
|
|
|
struct PRESLivelinessParameter;
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_removeRemoteParticipant(
|
|
struct PRESParticipant *me, int *failReason,
|
|
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_removeRemoteParticipantFromLocator(
|
|
struct PRESParticipant *me,
|
|
struct RTINetioLocator *peer_locator,
|
|
struct MIGRtpsGuid *guid,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipant_unignoreLocator(
|
|
struct PRESParticipant *me,
|
|
struct RTINetioLocator *peer_locator,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool
|
|
PRESParticipant_getDiscoveryLocatorRemoteParticipantRefCount(
|
|
struct PRESParticipant *me,
|
|
RTI_UINT32 *fullyDiscoveredCount,
|
|
RTI_UINT32 *partiallyDiscoveredCount,
|
|
const struct RTINetioLocator *locator,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_unregisterRemoteParticipant(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const MIGRtpsParticipantId *remoteParticipantId,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
#define PRESRemoteParticipantIterator REDACursor
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_beginGetRemoteParticipants(
|
|
struct PRESParticipant *me,
|
|
struct PRESRemoteParticipantIterator **iter,
|
|
int *maxRemoteParticipants,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_endGetRemoteParticipants(
|
|
struct PRESParticipant *me,
|
|
struct PRESRemoteParticipantIterator *iter,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getNextRemoteParticipant(
|
|
struct PRESParticipant *me,
|
|
MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
|
|
void **remoteParticipantIdentityHandle,
|
|
int *failReason,
|
|
RTIBool *participantConfigComplete,
|
|
struct PRESRemoteParticipantIterator *iter,
|
|
struct REDAWorker *worker);
|
|
|
|
struct PRESGroupListener;
|
|
|
|
extern PRESDllExport
|
|
struct PRESGroup* PRESParticipant_createGroup(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
RTIBool *autoenableContainedEntities,
|
|
MIGRtpsObjectId oid,
|
|
const struct PRESGroupProperty *property,
|
|
const struct PRESGroupListener *listener,
|
|
PRESStatusKindMask listenerMask,
|
|
struct REDAExclusiveArea *ea,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_destroyGroup(struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct PRESGroup *group,
|
|
struct REDAWorker *worker);
|
|
|
|
struct PRESLocalEndpointListener;
|
|
|
|
struct PRESLocalEndpointStatisticsListener;
|
|
|
|
extern PRESDllExport struct PRESLocalEndpoint *
|
|
PRESParticipant_createLocalEndpoint(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
RTIBool *autoenableContainedEntities,
|
|
struct PRESGroup *group,
|
|
struct PRESTopic *topic,
|
|
MIGRtpsObjectId oid,
|
|
const struct PRESLocalEndpointProperty *property,
|
|
const struct PRESLocalEndpointListener *listener,
|
|
PRESStatusKindMask internalListenerMask,
|
|
PRESStatusKindMask userListenerMask,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_destroyLocalEndpoint(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct PRESGroup *group,
|
|
struct PRESLocalEndpoint *localEndpoint, struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_assertRemoteEndpoint(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const struct MIGRtpsGuid *guid,
|
|
const struct PRESRemoteEndpointProperty *property,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isRemoteEndpointMatched(
|
|
const struct PRESParticipant *localParticipant,
|
|
MIGRtpsObjectId localEndpointOid,
|
|
const struct MIGRtpsGuid *remoteEndpointGuid,
|
|
RTIBool requiresCompatibility,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_removeRemoteEndpoint(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const struct MIGRtpsGuid *guid, struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_removeRemoteEndpointsOfRemoteParticipant(
|
|
struct PRESParticipant *me,
|
|
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
|
|
RTIBool delayConfigRemoval,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_unregisterRemoteEndpointsOfRemoteParticipant(
|
|
struct PRESParticipant *me,
|
|
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_removeRemoteEndpointsWithOid(
|
|
struct PRESParticipant *me, MIGRtpsObjectId remoteOid,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_unregisterRemoteEndpoint(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const struct MIGRtpsGuid *guid,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
PRESWord *PRESParticipant_getUserObject(struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
void* PRESEntity_getUserObject(struct PRESEntity *me);
|
|
|
|
extern PRESDllExport
|
|
MIGRtpsHostId PRESParticipant_getHostId(
|
|
const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
const char * PRESParticipant_getRoleName(const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
MIGRtpsAppId PRESParticipant_getAppId(
|
|
const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
MIGRtpsInstanceId PRESParticipant_getInstanceId(
|
|
const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_setListener(
|
|
struct PRESParticipant *me,
|
|
const struct PRESParticipantListener *listener,
|
|
PRESStatusKindMask mask,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getProperty(
|
|
const struct PRESParticipant *me,
|
|
struct PRESParticipantProperty *property,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
REDAUnicodeNormalizationKind PRESParticipant_getUnicodeNormalizationKind(
|
|
const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
REDACharacterEncodingKind PRESParticipant_getCharacterEncodingKind(
|
|
const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_sqlFilterSupportsEscapedCharacters(
|
|
const struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_setProperty(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const struct PRESParticipantProperty *property,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
void PRESParticipant_getGuid(
|
|
const struct PRESParticipant *me,
|
|
struct MIGRtpsGuid *guid);
|
|
|
|
extern PRESDllExport
|
|
const struct MIGRtpsGuid * PRESParticipant_getGuidRef(
|
|
const struct PRESParticipant *me);
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
|
|
Install local participant configuration listener on the participant.
|
|
|
|
Setup local participant configuration listener for this participant.
|
|
|
|
Only one local particpiant configuration listener can be attached to the
|
|
participant. If a listener was already set, the operation will replace it
|
|
with the new one.
|
|
|
|
@pre Valid arguments.
|
|
|
|
@param listener \b In. Local participant configuration listener to be set up.
|
|
All methods on the listener are supposed to be defined if listener is not
|
|
NULL. In the case when listener is NULL, it is equivalent to removing the
|
|
local participant configuration listener.
|
|
|
|
@return RTI_TRUE if successful. RTI_FALSE otherwise.
|
|
*/
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_setLocalParticipantConfigListener(
|
|
struct PRESParticipant *me,
|
|
const struct PRESLocalParticipantConfigListener *listener,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_setParticipantBuiltinChannelDiscoveryForwarder(
|
|
struct PRESParticipant *me,
|
|
const struct PRESParticipantBuiltinChannelDiscoveryForwarder *forwarder,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getRemoteParticipantProperty(
|
|
const struct PRESParticipant *me,
|
|
struct PRESRemoteParticipantProperty *property,
|
|
const MIGRtpsParticipantId *remoteParticipantId, /*RTPS.2.0*/
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipant_getRemoteParticipantProductVersion(
|
|
const struct PRESParticipant *me,
|
|
struct PRESProductVersion *remoteProductVersion,
|
|
const MIGRtpsParticipantId *remoteParticipantId,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
PRESRemoteParticipantSecurityStatus
|
|
PRESParticipant_getRemoteParticipantIdentityStatus(
|
|
const struct PRESParticipant *me,
|
|
const MIGRtpsParticipantId *remoteParticipantId,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_isRemoteParticipantAuthenticated(
|
|
const struct PRESParticipant *me,
|
|
const MIGRtpsParticipantId *remoteParticipantId,
|
|
struct REDAWorker *worker);
|
|
|
|
/*e \ingroup PRESParticipantModule
|
|
*
|
|
* Access the existing configuration listener attached to the participant for
|
|
* all endpoints for the given service ID.
|
|
*
|
|
* Service needs to be asserted to the participant.
|
|
*
|
|
* @pre Valid arguments.
|
|
*
|
|
* @return pointer to endpoint configuration listener for the service
|
|
* with the given service ID.. RTI_FALSE otherwise, which can happen if
|
|
* there is no service asserted with the given service ID, or it fails to setup
|
|
* endpoint configuration listener on the given service.
|
|
*/
|
|
extern PRESDllExport
|
|
const struct PRESEndpointConfigListener *
|
|
PRESParticipant_getEndpointConfigListener(
|
|
const struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_setEndpointConfigListener(
|
|
struct PRESParticipant *me,
|
|
const struct PRESEndpointConfigListener *listener,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
struct PRESPsEndpointParameter;
|
|
|
|
extern PRESDllExport
|
|
RTIBool
|
|
PRESParticipant_getRemoteEndpointParameter(
|
|
struct PRESParticipant *participant,
|
|
struct PRESPsEndpointParameter *remoteEndpointParameter,
|
|
struct REDACursor *remoteEndpointCursor,
|
|
const struct MIGRtpsGuid *remoteEndpointGuid,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_assertLiveliness(struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_refresh(
|
|
struct PRESParticipant *me, struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
PRESStatusKind PRESParticipant_getStatusChanges(struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
const struct PRESTypePlugin *PRESParticipant_lookupTypePlugin(
|
|
struct PRESParticipant *me, const char *typeName,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_ignoreRemotePeer(
|
|
struct PRESParticipant *me,
|
|
const char* peer_desc_string,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_ignoreRemoteParticipant(
|
|
struct PRESParticipant *me,
|
|
const struct MIGRtpsGuid* remoteParticipantGuidIn,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_onAfterRemoteParticipantSecureVolatileReaderInactivated(
|
|
struct PRESParticipant *me,
|
|
const MIGRtpsParticipantId *remoteParticipantId,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTI_INT32 PRESParticipant_getRemoteParticipantSubjectName(
|
|
struct PRESParticipant *me,
|
|
char *subjectName,
|
|
RTI_UINT32 *subjectNameSize,
|
|
const struct MIGRtpsGuid *remoteParticipantGuid,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_triggerKeyRegeneration(
|
|
struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_ignoreRemoteEndpoint(
|
|
struct PRESParticipant *me,
|
|
const struct MIGRtpsGuid* remoteEndpointGuidIn,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
struct COMMENDFacade* PRESParticipant_getFacade(struct PRESParticipant* me);
|
|
|
|
extern PRESDllExport void PRESParticipant_cleanup(struct PRESParticipant *me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
void PRESParticipant_getSecurity(
|
|
const struct PRESParticipant *me,
|
|
struct PRESParticipantSecurity *security);
|
|
|
|
extern PRESDllExport
|
|
const struct PRESDataHolder * PRESParticipant_getIdentityToken(
|
|
const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
const struct PRESDataHolder * PRESParticipant_getPermissionsToken(
|
|
const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getTopicSecAttributes(
|
|
struct PRESParticipant *me,
|
|
struct PRESTopicSecurityAttributes *attributes,
|
|
const char *topicName,
|
|
const struct PRESSequenceString *topicAliasNames,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getEndpointSecAttributes(
|
|
struct PRESParticipant *me,
|
|
struct PRESEndpointSecurityAttributes *attributes,
|
|
const char *topicName,
|
|
const struct PRESSequenceString *topicAliasNames,
|
|
MIGRtpsObjectId objectId,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_returnEndpointSecAttributes(
|
|
struct PRESParticipant *me,
|
|
struct PRESEndpointSecurityAttributes *attributes,
|
|
MIGRtpsRWType rwType,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
#define PRES_INSTANCE_HANDLE_INVALID_KEYHASH 0
|
|
/* This is the classic keyhash generation. It is not safe because if the
|
|
* maximum serialized size of the key is <= 16 the keyhash is the serialized
|
|
* key in big endian order.
|
|
*
|
|
* Built-in Publication and Subscription DataReaders always use unsecure
|
|
* keyhashes because the encryption occurs at the RTPS submessage level,
|
|
* not at the payload level.
|
|
*
|
|
* Because of that, the publication, and subscription handles retrieved through
|
|
* different APIs also contain PRES_INSTANCE_HANDLE_VALID_UNSECURE_KEYHASH as
|
|
* isValid value.
|
|
*/
|
|
#define PRES_INSTANCE_HANDLE_VALID_UNSECURE_KEYHASH 1
|
|
/*
|
|
* This is used by DataWriters and DataReaders for which is_key_protected is
|
|
* set to true.
|
|
*/
|
|
#define PRES_INSTANCE_HANDLE_VALID_SECURE_KEYHASH 2
|
|
/*
|
|
* This is the v2 keyhash generation. It is not safe because if the maximum
|
|
* serialized size of the key is <= 16 the keyhash is the serialized key in big
|
|
* endian order.
|
|
*/
|
|
#define PRES_INSTANCE_HANDLE_VALID_UNSECURE_KEYHASH_V2 3
|
|
/*
|
|
* This is used by v2 DataWriters and DataReaders for which is_key_protected is
|
|
* set to true.
|
|
*/
|
|
#define PRES_INSTANCE_HANDLE_VALID_SECURE_KEYHASH_V2 4
|
|
|
|
struct PRESInstanceHandle {
|
|
/*e We use guid to represent an instance */
|
|
struct MIGRtpsKeyHash keyHash;
|
|
/*e so that we can allow all 0 guid values
|
|
* This field encodes three kinds of information:
|
|
* 1) Whether or not the instance handle is valid or NIL.
|
|
* 2) For valid instance handles, this field encodes the kind of keyhash
|
|
* generation. It can be secure or unsecure. With secure keyhash the
|
|
* keyhash is always an MD5 of the serialized key.
|
|
* 3) If the is a v1 or v2 keyhash.
|
|
*/
|
|
RTI_INT32 isValid;
|
|
};
|
|
|
|
|
|
/*e \ingroup PRESInstanceHandleClass
|
|
Invalid instance handle
|
|
*/
|
|
#define PRESInstanceHandle_INITIALIZER { \
|
|
MIG_RTPS_KEY_HASH_DEFAULT, \
|
|
PRES_INSTANCE_HANDLE_INVALID_KEYHASH /* isValid */ }
|
|
|
|
extern PRESDllExport
|
|
int PRESInstanceHandle_compare(const struct PRESInstanceHandle *me,
|
|
const struct PRESInstanceHandle *handle);
|
|
|
|
extern PRESDllExport
|
|
void PRESInstanceHandle_copy(
|
|
struct PRESInstanceHandle *dst,
|
|
const struct PRESInstanceHandle *src);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESInstanceHandle_isNil(const struct PRESInstanceHandle *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESInstanceHandle_isProtected(const struct PRESInstanceHandle *me);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESInstanceHandle_isV2(const struct PRESInstanceHandle *me);
|
|
|
|
extern PRESDllExport
|
|
RTI_INT32 PRESInstanceHandle_getInstanceHandleIsValidValue(
|
|
RTIBool useV2Encapsulation,
|
|
RTIBool useKeyProtection);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESInstanceHandle_isInstanceHandleCompatible( \
|
|
const struct PRESInstanceHandle *me,
|
|
RTIBool useV2Encapsulation,
|
|
RTIBool useKeyProtection);
|
|
|
|
extern PRESDllExport
|
|
void PRESInstanceHandle_fromGuid(
|
|
struct PRESInstanceHandle *me,
|
|
const struct MIGRtpsGuid *guid);
|
|
|
|
struct PRESSampleRejectedStatus {
|
|
/*e
|
|
Total cumulative count of all samples rejected by the data reader.
|
|
*/
|
|
RTI_INT32 totalCount;
|
|
/*e
|
|
The incremental number of samples rejected since the last time the
|
|
listener was called or the status was read.
|
|
*/
|
|
RTI_INT32 totalCountChange;
|
|
/*e
|
|
Reason for rejecting the last sample rejected
|
|
*/
|
|
PRESSampleRejectedStatusKind lastReason;
|
|
/*e
|
|
Handle to the instance being updated by the last sample that was rejected.
|
|
*/
|
|
struct PRESInstanceHandle lastInstanceHandle;
|
|
};
|
|
|
|
struct PRESLivelinessChangedStatus {
|
|
/*e
|
|
The total count of currently active data writers that write the topic
|
|
the data reader readers
|
|
*/
|
|
RTI_INT32 activeCount;
|
|
/*e
|
|
The total count of currently inactive data writers that write the topic
|
|
the data reader reads
|
|
*/
|
|
RTI_INT32 inactiveCount;
|
|
/*e
|
|
The change in the active count since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 activeCountChange;
|
|
/*e
|
|
The change in the inactive count since the last time the listeenr was
|
|
called or the status was read
|
|
*/
|
|
RTI_INT32 inactiveCountChange;
|
|
/*e
|
|
The total change in the active count since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 totalActiveCountChange;
|
|
/*e
|
|
The total change in the inactive count since the last time the listener
|
|
was called or the status was read.
|
|
*/
|
|
RTI_INT32 totalInactiveCountChange;
|
|
|
|
/*e Last instance of the remote writer whose liveliness has changed */
|
|
struct PRESInstanceHandle lastInstanceHandle;
|
|
};
|
|
|
|
struct PRESRequestedDeadlineMissedStatus {
|
|
/*e
|
|
Total cumulative count of the deadlines detected for any instance
|
|
read by the data reader
|
|
*/
|
|
RTI_INT32 totalCount;
|
|
/*e
|
|
The incremental number of deadlines detected since the last time
|
|
the listener was called or the status was read.
|
|
*/
|
|
RTI_INT32 totalCountChange;
|
|
/*e
|
|
Handle to the last instance in the data reader for which a deadline was
|
|
detected
|
|
*/
|
|
struct PRESInstanceHandle lastInstanceHandle;
|
|
};
|
|
|
|
struct PRESOfferedDeadlineMissedStatus {
|
|
/*e
|
|
The total cumulative count of the number of times the data writer failed
|
|
to write within its offered deadline.
|
|
*/
|
|
RTI_INT32 totalCount;
|
|
/*e
|
|
The change in total count since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 totalCountChange;
|
|
/*e
|
|
Handle to the last instance in the data writer for which an offered
|
|
deadline was missed.
|
|
*/
|
|
struct PRESInstanceHandle lastInstanceHandle;
|
|
};
|
|
|
|
struct PRESPublicationMatchStatus {
|
|
/*e
|
|
The total number of times the writer has matched a remote reader.
|
|
*/
|
|
RTI_INT32 totalCount;
|
|
/*e
|
|
The change in totalCount since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 totalCountChange;
|
|
/*e
|
|
The number of remote readers with which the writer is currently matched.
|
|
*/
|
|
RTI_INT32 currentCount;
|
|
/*i
|
|
The highest number of remote readers with which the writer was matched.
|
|
*/
|
|
RTI_INT32 currentCountPeak;
|
|
/*e
|
|
The change in currentCount since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 currentCountChange;
|
|
|
|
/*e last instance of last remote reader to trigger a status update. */
|
|
struct PRESInstanceHandle lastSubscriptionHandle;
|
|
};
|
|
|
|
struct PRESSubscriptionMatchStatus {
|
|
/*e
|
|
The total number of times the eader has matched a remote writer.
|
|
*/
|
|
RTI_INT32 totalCount;
|
|
/*e
|
|
The change in totalCount since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 totalCountChange;
|
|
/*e
|
|
The number of remote writers with which the reader is currently matched.
|
|
*/
|
|
RTI_INT32 currentCount;
|
|
/*i
|
|
The highest number of remote readers with which the writer was matched.
|
|
*/
|
|
RTI_INT32 currentCountPeak;
|
|
/*e
|
|
The change in currentCount since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 currentCountChange;
|
|
|
|
/*e instance handle of last remote writer to trigger a status update. */
|
|
struct PRESInstanceHandle lastPublicationHandle;
|
|
};
|
|
|
|
struct PRESServiceRequestAcceptedStatus {
|
|
/*e
|
|
The total number of times the writer has matched any requests.
|
|
*/
|
|
RTI_INT32 totalCount;
|
|
/*e
|
|
The change in totalCount since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 totalCountChange;
|
|
/*e
|
|
The number of alive requests the writer currently matches
|
|
*/
|
|
RTI_INT32 currentCount;
|
|
/*e
|
|
The change in currentCount since the last time the listener was
|
|
called or the status was read.
|
|
*/
|
|
RTI_INT32 currentCountChange;
|
|
|
|
/*e last instance handle of the last request to trigger a status update. */
|
|
struct PRESInstanceHandle lastRequestHandle;
|
|
|
|
/*e The id of the service that the matching request belongs to */
|
|
RTI_INT32 lastServiceId;
|
|
};
|
|
|
|
struct PRESSampleInfo {
|
|
/*e
|
|
Sample state of sample
|
|
*/
|
|
RTI_UINT32 sampleState;
|
|
/*e
|
|
View state of instance
|
|
*/
|
|
RTI_UINT32 viewState;
|
|
/*e
|
|
Instance state of instance
|
|
*/
|
|
RTI_UINT32 instanceState;
|
|
/*e
|
|
Time when sample was sent
|
|
*/
|
|
struct PRESIeeeTime sourceTimestamp;
|
|
/*e
|
|
Handle to the sample instance
|
|
*/
|
|
struct PRESInstanceHandle instanceHandle;
|
|
/*e
|
|
* Handle to the writer that modified the instance. If proxy rules
|
|
* enforcement is enabled, then certain other GUID fields in the
|
|
* PRESSampleInfo must match the publicationHandle. These GUID fields are
|
|
* called "Proxy GUIDs" and are identified below.
|
|
*/
|
|
struct PRESInstanceHandle publicationHandle;
|
|
/*e
|
|
Disposed generation count of instance at sample reception
|
|
*/
|
|
RTI_INT32 disposedGenerationCount;
|
|
/*e
|
|
No writers generation count of instance at sample reception
|
|
*/
|
|
RTI_INT32 noWritersGenerationCount;
|
|
/*e
|
|
Sample rank of sample
|
|
*/
|
|
RTI_INT32 sampleRank;
|
|
/*e
|
|
Generation rank of sample
|
|
*/
|
|
RTI_INT32 generationRank;
|
|
/*e
|
|
Absolute generation rank of sample
|
|
*/
|
|
RTI_INT32 absoluteGenerationRank;
|
|
/*e
|
|
Denotes whether there is valid data
|
|
This has to match DDS_Boolean
|
|
*/
|
|
RTICdrBoolean hasData;
|
|
/*e
|
|
Time when sample was received
|
|
*/
|
|
struct PRESIeeeTime receptionTimestamp;
|
|
/*e
|
|
Sequence number
|
|
*/
|
|
struct REDASequenceNumber publicationSequenceNumber;
|
|
/*e
|
|
Sequence number
|
|
*/
|
|
struct REDASequenceNumber receptionSequenceNumber;
|
|
/*e
|
|
* Publication virtual guid. Not subject to proxy rules enforcement because
|
|
* this GUID is not serialized with the sample; it's only sent over
|
|
* discovery as part of the PRESPsEndpointParameter::virtualGuid.
|
|
*
|
|
* Note: This will be addressed in SEC-2866.
|
|
*/
|
|
struct PRESOctetGuid publicationVirtualGuid;
|
|
/*e
|
|
Publication virtual sequence number
|
|
*/
|
|
struct REDASequenceNumber publicationVirtualSequenceNumber;
|
|
/*e
|
|
* Original Publication virtual guid. Subject to proxy rules enforcement,
|
|
* so this GUID is one of the Proxy GUIDs.
|
|
*/
|
|
struct PRESOctetGuid originalPublicationVirtualGuid;
|
|
/*e
|
|
Original Publication virtual sequence number
|
|
*/
|
|
struct REDASequenceNumber originalPublicationVirtualSequenceNumber;
|
|
/*e
|
|
* Related Original Publication virtual guid. Not subject to proxy rules
|
|
* enforcement because this GUID doesn't indicate who is sending the
|
|
* sample.
|
|
*/
|
|
struct PRESOctetGuid relatedOriginalPublicationVirtualGuid;
|
|
/*e
|
|
Related Original Publication virtual sequence number
|
|
*/
|
|
struct REDASequenceNumber relatedOriginalPublicationVirtualSequenceNumber;
|
|
|
|
/*e
|
|
Sample flags
|
|
*/
|
|
PRESSampleFlag flag;
|
|
|
|
/*e
|
|
* The application logical data source associated with the sample. Subject
|
|
* to proxy rules enforcement, so this GUID is one of the Proxy GUIDs.
|
|
*/
|
|
struct PRESOctetGuid sourceGuid;
|
|
|
|
/*e
|
|
* The application logical data source that is related to the sample.
|
|
* Typically used in a request/reply pattern, where the related source GUID
|
|
* is associated with the original request's source (so that the requester
|
|
* can correlate the reply to its request). Not subject to proxy rules
|
|
* enforcement because this GUID doesn't indicate who is sending the sample.
|
|
*/
|
|
struct PRESOctetGuid relatedSourceGuid;
|
|
|
|
/*e
|
|
* The related reader GUID associated with the sample. Not
|
|
* subject to proxy rules enforcement because this GUID doesn't indicate
|
|
* who is sending the sample.
|
|
*/
|
|
struct PRESOctetGuid relatedSubscriptionGuid;
|
|
|
|
/*e
|
|
* The GUID of the TopicQuery that is related to the sample. Not
|
|
* subject to proxy rules enforcement because this GUID doesn't indicate
|
|
* who is sending the sample.
|
|
*/
|
|
struct PRESOctetGuid topicQueryGuid;
|
|
|
|
PRESSampleHash sampleHash;
|
|
|
|
struct PRESSampleSignature *signature;
|
|
|
|
/* Used by metp module, initialized as RTI_CDR_ENCAPSULATION_ID_INVALID */
|
|
RTIEncapsulationId encapsulationId;
|
|
/* Used by metp module */
|
|
struct REDASequenceNumber relatedEpoch;
|
|
|
|
/* This field is a pointer because it is an optional member in
|
|
* DDS_SampleInfo
|
|
*/
|
|
struct PRESCoherentSetInfo *coherentSetInfo;
|
|
};
|
|
|
|
|
|
#define PRESSampleInfo_INITIALIZER { \
|
|
PRES_SAMPLE_STATE_INVALID, /* sampleState */ \
|
|
PRES_VIEW_STATE_INVALID, /* viewState */ \
|
|
PRES_INSTANCE_STATE_INVALID, /* instanceState */ \
|
|
PRES_IEEE_TIME_INVALID, /* sourceTimestamp */ \
|
|
PRESInstanceHandle_INITIALIZER, /* instanceHandle */ \
|
|
PRESInstanceHandle_INITIALIZER, /* publicationHandle */ \
|
|
0, /* disposedGenerationCount */ \
|
|
0, /* noWritersGenerationCount */ \
|
|
0, /* sampleRank */ \
|
|
0, /* generationRank */ \
|
|
0, /* absoluteGenerationRank */ \
|
|
RTI_CDR_BOOLEAN_FALSE, /* hasData */ \
|
|
PRES_IEEE_TIME_INVALID, /* receptionTimestamp */ \
|
|
REDA_SEQUENCE_NUMBER_UNKNOWN, /* publicationSequenceNumber */ \
|
|
REDA_SEQUENCE_NUMBER_UNKNOWN, /* receptionSequenceNumber */ \
|
|
PRES_OCTET_GUID_ZERO, /* publicationVirtualGuid */ \
|
|
REDA_SEQUENCE_NUMBER_UNKNOWN, /* publicationVirtualSequenceNumber */ \
|
|
PRES_OCTET_GUID_ZERO, /* originalPublicationVirtualGuid */ \
|
|
REDA_SEQUENCE_NUMBER_UNKNOWN, /* originalPublicationVirtualSequenceNumber */ \
|
|
PRES_OCTET_GUID_ZERO, /* relatedOriginalPublicationVirtualGuid */ \
|
|
REDA_SEQUENCE_NUMBER_UNKNOWN, /* relatedOriginalPublicationVirtualSequenceNumber */ \
|
|
0, /* flag */ \
|
|
PRES_OCTET_GUID_ZERO, /* sourceGuid */ \
|
|
PRES_OCTET_GUID_ZERO, /* relatedSourceGuid */ \
|
|
PRES_OCTET_GUID_ZERO, /* relatedSubscriptionGuid */ \
|
|
PRES_OCTET_GUID_ZERO, /* topicQueryGuid */ \
|
|
PRES_SAMPLE_HASH_NIL, /* sampleHash */ \
|
|
NULL, /* signature */ \
|
|
RTI_CDR_ENCAPSULATION_ID_INVALID, /* encapsulationId */ \
|
|
REDA_SEQUENCE_NUMBER_ZERO, /* relatedEpoch */ \
|
|
NULL \
|
|
}
|
|
|
|
|
|
extern PRESDllExport
|
|
struct PRESSampleInfo *PRESSampleInfo_copy(
|
|
struct PRESSampleInfo *dst,
|
|
const struct PRESSampleInfo *src);
|
|
|
|
extern PRESDllExport
|
|
void PRESSampleInfo_finalize(struct PRESSampleInfo *self);
|
|
|
|
struct PRESAcknowledgmentInfo {
|
|
/*e
|
|
*/
|
|
struct PRESInstanceHandle subscriptionHandle;
|
|
/*e
|
|
*/
|
|
struct PRESSampleIdentity sampleIdentity;
|
|
/*e
|
|
*/
|
|
struct PRESCookie cookie;
|
|
/*e
|
|
*/
|
|
RTIBool validResponseData;
|
|
/*e
|
|
*/
|
|
struct PRESAckResponseData responseData;
|
|
};
|
|
|
|
struct PRESLoanedSampleInfo {
|
|
struct PRESSampleInfo sampleInfo;
|
|
void* userObject;
|
|
void* internalObject;
|
|
/* Reader queue providing this sample info. This is necessary in the case
|
|
* where we have multiple queues. For now this occurs with TopicQueries
|
|
* We need this field to return a sample to the right queue
|
|
*/
|
|
void *queue;
|
|
};
|
|
|
|
|
|
#define PRESLoanedSampleInfo_INITIALIZER { \
|
|
PRESSampleInfo_INITIALIZER, /* sampleInfo */ \
|
|
NULL, /* userObject */ \
|
|
NULL, /* internalObject */ \
|
|
NULL /* queue */ \
|
|
}
|
|
|
|
typedef void
|
|
(*PRESLoanedSampleInfoListenerUserObjectInitializeFnc)(
|
|
void** userObject, void* param);
|
|
|
|
typedef void
|
|
(*PRESLoanedSampleInfoListenerUserObjectFinalizeFnc)(
|
|
void** userObject, void* param);
|
|
|
|
struct PRESLoanedSampleInfoListener {
|
|
PRESLoanedSampleInfoListenerUserObjectInitializeFnc userObjectInitializeFnc;
|
|
void* userObjectInitializeParam;
|
|
|
|
PRESLoanedSampleInfoListenerUserObjectFinalizeFnc userObjectFinalizeFnc;
|
|
void* userObjectFinalizeParam;
|
|
};
|
|
|
|
extern PRESDllExport void
|
|
PRESParticipant_getInstanceHandle(
|
|
struct PRESParticipant *me,
|
|
struct PRESInstanceHandle *handle);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getTopicPropertyByHandle(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct PRESTopicProperty *property,
|
|
char *topicName, int topicMaxLength,
|
|
char *typeName, int typeMaxLength,
|
|
const struct PRESInstanceHandle *handle,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_ignoreTopicByHandle(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const struct PRESInstanceHandle *handle,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_getNextTopicType(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
struct PRESTopicTypeIterator *iter,
|
|
struct PRESInstanceHandle *handle,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
int PRESParticipant_getTypeObjectCount(
|
|
struct PRESParticipant * me,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_dispatchBuiltinChannelSample(
|
|
struct PRESParticipant *me,
|
|
int *failReason,
|
|
const char *channelTopicName,
|
|
int serviceId,
|
|
void *userData,
|
|
const void *sample,
|
|
const struct PRESSampleInfo *sampleInfo,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_dispatchTopicQuery(
|
|
struct PRESParticipant *me,
|
|
int * failReason,
|
|
const struct PRESTopicQuerySelection * query,
|
|
const struct MIGRtpsGuid * topicQueryGuid,
|
|
const struct MIGRtpsGuid * relatedReaderGuid,
|
|
const struct PRESInstanceHandle *instanceHandle,
|
|
const RTI_UINT64 topicQueryChangeEpoch,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_cancelTopicQuery(
|
|
struct PRESParticipant *me,
|
|
int * failReason,
|
|
const struct MIGRtpsGuid * topicQueryGuid,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESRemoteParticipant_isAuthenticationEnabled(
|
|
struct PRESParticipantParameter *parameter);
|
|
|
|
|
|
extern PRESDllExport
|
|
struct REDAFastBufferPool *PRESParticipant_createSequencePropertyBufferPool(
|
|
int maxPropertyLength,
|
|
int maxPropertyStringLength,
|
|
const struct REDAFastBufferPoolProperty *poolP);
|
|
|
|
|
|
extern PRESDllExport
|
|
void PRESParticipant_returnPropertyQosBuffer(
|
|
struct REDAFastBufferPool *pool,
|
|
struct PRESPropertyQosPolicy *propertyQos);
|
|
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_printTable(
|
|
struct PRESParticipant *me,
|
|
const char *tableName,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
extern PRESDllExport
|
|
void PRESParticipantProperty_setPartitionBuffer(
|
|
struct PRESParticipantProperty *self,
|
|
char* buffer);
|
|
|
|
extern PRESDllExport void
|
|
PRESParticipantParameter_setPartitionBuffer(
|
|
struct PRESParticipantParameter *self,
|
|
char *buffer);
|
|
|
|
extern PRESDllExport int
|
|
PRESParticipant_getStringRegisteredParticipantDiscoverySnapshot(
|
|
struct PRESParticipant *localParticipant,
|
|
char *string,
|
|
size_t *stringSize,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
struct PRESParticipantGenericMessagePool {
|
|
/* Used to access to the security-specific return functions */
|
|
struct PRESParticipant *participant;
|
|
/* Participant generic message pool shared by all the messages */
|
|
struct REDAFastBufferPool *genericMessagePool;
|
|
/* DataHolder pool used to populate genericMessage's DataHolderSeq. */
|
|
struct REDAFastBufferPool *dataHolderPool;
|
|
};
|
|
|
|
|
|
#define PRES_PARTICIPANT_GENERIC_MESSAGE_POOL_DEFAULT { \
|
|
NULL /* participant */, \
|
|
NULL /* genericMessagePool */, \
|
|
NULL /* dataHolderPool */ \
|
|
}
|
|
|
|
|
|
struct PRESParticipantGenericMessageMetaData {
|
|
struct PRESOriginalWriterInfo messageIdentity;
|
|
struct PRESOriginalWriterInfo relatedMessageIdentity;
|
|
struct MIGRtpsGuid sourceEndpointKey;
|
|
struct MIGRtpsGuid destinationParticipantKey;
|
|
struct MIGRtpsGuid destinationEndpointKey;
|
|
};
|
|
|
|
|
|
#define PRES_PARTICIPANT_GENERIC_MESSAGE_META_DATA_DEFAULT { \
|
|
PRES_ORIGINAL_WRITER_INFO_UNKNOWN /* messageIdentity */, \
|
|
PRES_ORIGINAL_WRITER_INFO_UNKNOWN /* relatedMessageIdentity */, \
|
|
MIG_RTPS_GUID_UNKNOWN /* sourceEndpointKey */, \
|
|
MIG_RTPS_GUID_UNKNOWN /* destinationParticipantKey */, \
|
|
MIG_RTPS_GUID_UNKNOWN /* destinationEndpointKey */ \
|
|
}
|
|
|
|
extern PRESDllExport
|
|
void PRESParticipant_setBitInVendorBuiltinEndpointMaskFromObjectId(
|
|
struct PRESParticipant *me,
|
|
RTIBool *bitAlreadySet,
|
|
MIGRtpsObjectId oid,
|
|
RTIBool value);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipantParameter_containsDestinationInList(
|
|
struct PRESParticipantParameter *me,
|
|
struct RTINetioDestinationList *destinationList,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
struct PRESPsService* PRESParticipant_getService(
|
|
const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipant_authOnStatusChanged(
|
|
struct PRESParticipant *me,
|
|
const void *identityHandle,
|
|
PRESAuthStatusKind statusKind,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipant_accessOnStatusChanged(
|
|
struct PRESParticipant *me,
|
|
const void *permissionsHandle,
|
|
PRESAccessControlStatusKind statusKind,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool
|
|
PRESParticipant_getRemoteParticipantMetatrafficLocators(
|
|
const struct PRESParticipant *me,
|
|
struct PRESReducedLocatorQosPolicy *metatrafficMulticastLocators,
|
|
struct PRESLocatorQosPolicy *metatrafficUnicastLocators,
|
|
const MIGRtpsParticipantId *remoteParticipantId,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipant_isRemoteParticipantConfigComplete(
|
|
const struct PRESParticipant *me,
|
|
int *failReason,
|
|
const struct MIGRtpsGuid *guid,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport
|
|
RTIBool PRESParticipant_hasRtpsInitialPeer(const struct PRESParticipant *me);
|
|
|
|
extern PRESDllExport
|
|
void PRESParticipant_setHasRtpsInitialPeer(
|
|
struct PRESParticipant *me,
|
|
RTIBool hasRtpsInitialPeer);
|
|
|
|
struct PRESPsEndpointParameter;
|
|
|
|
extern PRESDllExport
|
|
RTIBool
|
|
PRESParticipant_shouldDelayBuiltinDiscSample(
|
|
struct PRESParticipant *participant,
|
|
RTIBool *delaySample,
|
|
const struct PRESPsEndpointParameter *remoteEndpointParameter,
|
|
struct REDAWorker *worker);
|
|
|
|
extern PRESDllExport RTIBool PRESParticipant_postLocalCredentialEvent(
|
|
struct PRESParticipant *localParticipant,
|
|
PRESParticipantCredentialKind credentialKind,
|
|
PRESParticipantCredentialAction credentialAction,
|
|
const struct REDAWeakReference *remoteParticipantWR,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
|
|
#define PRESParticipant_postLocalCredentialValidationEvent( \
|
|
localParticipant__, \
|
|
credentialKind__, \
|
|
worker) \
|
|
PRESParticipant_postLocalCredentialEvent( \
|
|
localParticipant__, \
|
|
credentialKind__, \
|
|
PRES_PARTICIPANT_CREDENTIAL_ACTION_VALIDATE, \
|
|
NULL, /* remoteParticipantWR. */ \
|
|
worker)
|
|
|
|
#define PRESParticipant_postLocalCredentialPropagationEvent( \
|
|
localParticipant__, \
|
|
credentialKind__, \
|
|
remoteParticipantWR__, \
|
|
worker) \
|
|
PRESParticipant_postLocalCredentialEvent( \
|
|
localParticipant__, \
|
|
credentialKind__, \
|
|
PRES_PARTICIPANT_CREDENTIAL_ACTION_PROPAGATE, \
|
|
remoteParticipantWR__, \
|
|
worker)
|
|
|
|
extern PRESDllExport RTI_UINT64
|
|
PRESParticipant_getRejectedByLimitsParticipantCount(
|
|
const struct PRESParticipant *me);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#include "pres/pres_participant_impl.h"
|
|
|
|
#endif /* pres_participant_h */
|