OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 30 matching lines...) Expand all Loading... |
41 #include "talk/app/webrtc/webrtcsessiondescriptionfactory.h" | 41 #include "talk/app/webrtc/webrtcsessiondescriptionfactory.h" |
42 #include "talk/media/base/constants.h" | 42 #include "talk/media/base/constants.h" |
43 #include "talk/media/base/videocapturer.h" | 43 #include "talk/media/base/videocapturer.h" |
44 #include "talk/session/media/channel.h" | 44 #include "talk/session/media/channel.h" |
45 #include "talk/session/media/channelmanager.h" | 45 #include "talk/session/media/channelmanager.h" |
46 #include "talk/session/media/mediasession.h" | 46 #include "talk/session/media/mediasession.h" |
47 #include "webrtc/base/basictypes.h" | 47 #include "webrtc/base/basictypes.h" |
48 #include "webrtc/base/checks.h" | 48 #include "webrtc/base/checks.h" |
49 #include "webrtc/base/helpers.h" | 49 #include "webrtc/base/helpers.h" |
50 #include "webrtc/base/logging.h" | 50 #include "webrtc/base/logging.h" |
| 51 #include "webrtc/base/sslstrings.h" |
51 #include "webrtc/base/stringencode.h" | 52 #include "webrtc/base/stringencode.h" |
52 #include "webrtc/base/stringutils.h" | 53 #include "webrtc/base/stringutils.h" |
53 #include "webrtc/p2p/base/portallocator.h" | 54 #include "webrtc/p2p/base/portallocator.h" |
54 | 55 |
55 using cricket::ContentInfo; | 56 using cricket::ContentInfo; |
56 using cricket::ContentInfos; | 57 using cricket::ContentInfos; |
57 using cricket::MediaContentDescription; | 58 using cricket::MediaContentDescription; |
58 using cricket::SessionDescription; | 59 using cricket::SessionDescription; |
59 using cricket::TransportInfo; | 60 using cricket::TransportInfo; |
60 | 61 |
(...skipping 22 matching lines...) Expand all Loading... |
83 "Called with SDP without ice-ufrag and ice-pwd."; | 84 "Called with SDP without ice-ufrag and ice-pwd."; |
84 const char kSessionError[] = "Session error code: "; | 85 const char kSessionError[] = "Session error code: "; |
85 const char kSessionErrorDesc[] = "Session error description: "; | 86 const char kSessionErrorDesc[] = "Session error description: "; |
86 const char kDtlsSetupFailureRtp[] = | 87 const char kDtlsSetupFailureRtp[] = |
87 "Couldn't set up DTLS-SRTP on RTP channel."; | 88 "Couldn't set up DTLS-SRTP on RTP channel."; |
88 const char kDtlsSetupFailureRtcp[] = | 89 const char kDtlsSetupFailureRtcp[] = |
89 "Couldn't set up DTLS-SRTP on RTCP channel."; | 90 "Couldn't set up DTLS-SRTP on RTCP channel."; |
90 const char kEnableBundleFailed[] = "Failed to enable BUNDLE."; | 91 const char kEnableBundleFailed[] = "Failed to enable BUNDLE."; |
91 const int kMaxUnsignalledRecvStreams = 20; | 92 const int kMaxUnsignalledRecvStreams = 20; |
92 | 93 |
| 94 SrtpCipherType GetSrtpCipherType(const std::string& cipher) { |
| 95 if (cipher == rtc::AES_CM_128_HMAC_SHA1_32_NAME) |
| 96 return SrtpCipher_AES_CM_128_HMAC_SHA1_32; |
| 97 if (cipher == rtc::AES_CM_128_HMAC_SHA1_80_NAME) |
| 98 return SrtpCipher_AES_CM_128_HMAC_SHA1_80; |
| 99 return SrtpCipher_Unknown; |
| 100 } |
| 101 |
93 IceCandidatePairType GetIceCandidatePairCounter( | 102 IceCandidatePairType GetIceCandidatePairCounter( |
94 const cricket::Candidate& local, | 103 const cricket::Candidate& local, |
95 const cricket::Candidate& remote) { | 104 const cricket::Candidate& remote) { |
96 const auto& l = local.type(); | 105 const auto& l = local.type(); |
97 const auto& r = remote.type(); | 106 const auto& r = remote.type(); |
98 const auto& host = LOCAL_PORT_TYPE; | 107 const auto& host = LOCAL_PORT_TYPE; |
99 const auto& srflx = STUN_PORT_TYPE; | 108 const auto& srflx = STUN_PORT_TYPE; |
100 const auto& relay = RELAY_PORT_TYPE; | 109 const auto& relay = RELAY_PORT_TYPE; |
101 const auto& prflx = PRFLX_PORT_TYPE; | 110 const auto& prflx = PRFLX_PORT_TYPE; |
102 if (l == host && r == host) { | 111 if (l == host && r == host) { |
(...skipping 2031 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2134 } | 2143 } |
2135 | 2144 |
2136 void WebRtcSession::ReportNegotiatedCiphers( | 2145 void WebRtcSession::ReportNegotiatedCiphers( |
2137 const cricket::TransportStats& stats) { | 2146 const cricket::TransportStats& stats) { |
2138 RTC_DCHECK(metrics_observer_ != NULL); | 2147 RTC_DCHECK(metrics_observer_ != NULL); |
2139 if (!dtls_enabled_ || stats.channel_stats.empty()) { | 2148 if (!dtls_enabled_ || stats.channel_stats.empty()) { |
2140 return; | 2149 return; |
2141 } | 2150 } |
2142 | 2151 |
2143 const std::string& srtp_cipher = stats.channel_stats[0].srtp_cipher; | 2152 const std::string& srtp_cipher = stats.channel_stats[0].srtp_cipher; |
2144 const std::string& ssl_cipher = stats.channel_stats[0].ssl_cipher; | 2153 const rtc::SslCipher& ssl_cipher = stats.channel_stats[0].ssl_cipher; |
2145 if (srtp_cipher.empty() && ssl_cipher.empty()) { | 2154 if (srtp_cipher.empty() && ssl_cipher.name.empty()) { |
2146 return; | 2155 return; |
2147 } | 2156 } |
2148 | 2157 |
2149 PeerConnectionMetricsName srtp_name; | 2158 PeerConnectionEnumCounterType srtp_counter_type; |
2150 PeerConnectionMetricsName ssl_name; | 2159 PeerConnectionEnumCounterType ssl_counter_type; |
2151 if (stats.transport_name == cricket::CN_AUDIO) { | 2160 if (stats.transport_name == cricket::CN_AUDIO) { |
2152 srtp_name = kAudioSrtpCipher; | 2161 srtp_counter_type = kEnumCounterAudioSrtpCipher; |
2153 ssl_name = kAudioSslCipher; | 2162 ssl_counter_type = kEnumCounterAudioSslCipher; |
2154 } else if (stats.transport_name == cricket::CN_VIDEO) { | 2163 } else if (stats.transport_name == cricket::CN_VIDEO) { |
2155 srtp_name = kVideoSrtpCipher; | 2164 srtp_counter_type = kEnumCounterVideoSrtpCipher; |
2156 ssl_name = kVideoSslCipher; | 2165 ssl_counter_type = kEnumCounterVideoSslCipher; |
2157 } else if (stats.transport_name == cricket::CN_DATA) { | 2166 } else if (stats.transport_name == cricket::CN_DATA) { |
2158 srtp_name = kDataSrtpCipher; | 2167 srtp_counter_type = kEnumCounterDataSrtpCipher; |
2159 ssl_name = kDataSslCipher; | 2168 ssl_counter_type = kEnumCounterDataSslCipher; |
2160 } else { | 2169 } else { |
2161 RTC_NOTREACHED(); | 2170 RTC_NOTREACHED(); |
2162 return; | 2171 return; |
2163 } | 2172 } |
2164 | 2173 |
2165 if (!srtp_cipher.empty()) { | 2174 if (!srtp_cipher.empty()) { |
2166 metrics_observer_->AddHistogramSample(srtp_name, srtp_cipher); | 2175 metrics_observer_->IncrementEnumCounter( |
| 2176 srtp_counter_type, GetSrtpCipherType(srtp_cipher), SrtpCipher_Max); |
2167 } | 2177 } |
2168 if (!ssl_cipher.empty()) { | 2178 if (!ssl_cipher.name.empty()) { |
2169 metrics_observer_->AddHistogramSample(ssl_name, ssl_cipher); | 2179 RTC_DCHECK(ssl_cipher.ssl_id); |
| 2180 metrics_observer_->IncrementSparseEnumCounter(ssl_counter_type, |
| 2181 ssl_cipher.ssl_id); |
2170 } | 2182 } |
2171 } | 2183 } |
2172 | 2184 |
2173 } // namespace webrtc | 2185 } // namespace webrtc |
OLD | NEW |