7 #ifdef OPENDDS_SECURITY 72 candidate.
base = address;
84 candidate.
base = base;
95 candidate.
base = base;
129 size_t indication_count_limit,
140 return start(address, indication_count_limit, guid_prefix);
145 if (stun_server_address_ != address) {
147 start(address, indication_count_limit, guid_prefix);
150 return next_send(indication_count_limit, guid_prefix);
159 latency_available_ =
true;
163 return success_response(message);
166 return error_response(message);
180 size_t indication_count_limit,
190 stun_server_address_ = address;
193 return next_send(indication_count_limit, guid_prefix);
201 unset_stun_server_address_ = stun_server_address_;
216 send_count_ == indication_count_limit) {
220 unset_stun_server_address_ = stun_server_address_;
225 (message_class_ ==
STUN::INDICATION && send_count_ >= indication_count_limit + 1)) {
231 message_.class_ = message_class_;
233 message_.generate_transaction_id();
247 if (!unknown_attributes.empty()) {
250 ACE_TEXT(
"(%P|%t) ServerReflexiveStateMachine::success_response: " 251 "WARNING Unknown comprehension required attributes\n")));
261 ACE_TEXT(
"(%P|%t) ServerReflexiveStateMachine::success_response: " 262 "WARNING No (XOR)_MAPPED_ADDRESS attribute\n")));
270 ACE_TEXT(
"(%P|%t) ServerReflexiveStateMachine::success_response: " 271 "WARNING (XOR)_MAPPED_ADDRESS is not valid\n")));
277 if (server_reflexive_address == server_reflexive_address_) {
280 server_reflexive_address_ = server_reflexive_address;
283 server_reflexive_address_ = server_reflexive_address;
294 ACE_TEXT(
"(%P|%t) ServerReflexiveStateMachine::error_response: " 295 "WARNING Unsupported STUN method\n")));
304 "WARNING No error code\n")));
311 ACE_TEXT(
"(%P|%t) ServerReflexiveStateMachine::error_response: " 312 "WARNING STUN error response code=%d reason=%C\n"),
319 for (std::vector<STUN::AttributeType>::const_iterator pos = unknown_attributes.begin(),
320 limit = unknown_attributes.end(); pos != limit; ++pos) {
322 ACE_TEXT(
"(%P|%t) ServerReflexiveStateMachine::error_response: " 323 "WARNING Unknown STUN attribute %d\n"),
OpenDDS_Rtps_Export Attribute make_guid_prefix(const DCPS::GuidPrefix_t &guid_prefix)
StateChange start(const ACE_INET_Addr &address, size_t indication_count_limit, const DCPS::GuidPrefix_t &guid_prefix)
bool get_mapped_address(ACE_INET_Addr &address) const
StateChange error_response(const STUN::Message &message)
StateChange next_send(size_t indication_count_limit, const DCPS::GuidPrefix_t &guid_prefix)
String to_dds_string(unsigned short to_convert)
StateChange success_response(const STUN::Message &message)
#define OPENDDS_ASSERT(C)
Candidate make_peer_reflexive_candidate(const ACE_INET_Addr &address, const ACE_INET_Addr &base, const ACE_INET_Addr &server_address, ACE_UINT32 priority)
std::vector< AttributeType > get_unknown_attributes() const
const ACE_UINT16 UNKNOWN_ATTRIBUTE
Candidate make_host_candidate(const ACE_INET_Addr &address)
static TimePoint_T< MonotonicClock > now()
bool has_unknown_attributes() const
StateChange send(const ACE_INET_Addr &address, size_t indication_count_limit, const DCPS::GuidPrefix_t &guid_prefix)
bool candidates_equal(const Candidate &x, const Candidate &y)
ACE_UINT16 get_error_code() const
ACE_UINT32 local_priority(const ACE_INET_Addr &addr)
StateChange receive(const STUN::Message &message)
DCPS::RcHandle< AgentImpl > agent_impl
bool has_error_code() const
Attribute make_fingerprint()
static TYPE * instance(void)
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
std::string get_error_reason() const
RcHandle< T > static_rchandle_cast(const RcHandle< U > &h)
static DCPS::RcHandle< Agent > instance()
static Configuration * instance()
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
static const String ip(const ACE_INET_Addr &addr)
Candidate make_server_reflexive_candidate(const ACE_INET_Addr &address, const ACE_INET_Addr &base, const ACE_INET_Addr &server_address)
std::vector< AttributeType > unknown_comprehension_required_attributes() const
The Internal API and Implementation of OpenDDS.
bool candidates_sorted(const Candidate &x, const Candidate &y)