OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 PORTALLOCATOR_ENABLE_STUN_RETRANSMIT_ATTRIBUTE = 0x200, | 48 PORTALLOCATOR_ENABLE_STUN_RETRANSMIT_ATTRIBUTE = 0x200, |
49 PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION = 0x400, | 49 PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION = 0x400, |
50 // When specified, a loopback candidate will be generated if | 50 // When specified, a loopback candidate will be generated if |
51 // PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION is specified. | 51 // PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION is specified. |
52 PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE = 0x800, | 52 PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE = 0x800, |
53 // Disallow use of UDP when connecting to a relay server. Since proxy servers | 53 // Disallow use of UDP when connecting to a relay server. Since proxy servers |
54 // usually don't handle UDP, using UDP will leak the IP address. | 54 // usually don't handle UDP, using UDP will leak the IP address. |
55 PORTALLOCATOR_DISABLE_UDP_RELAY = 0x1000, | 55 PORTALLOCATOR_DISABLE_UDP_RELAY = 0x1000, |
56 }; | 56 }; |
57 | 57 |
58 const uint32 kDefaultPortAllocatorFlags = 0; | 58 const uint32_t kDefaultPortAllocatorFlags = 0; |
59 | 59 |
60 const uint32 kDefaultStepDelay = 1000; // 1 sec step delay. | 60 const uint32_t kDefaultStepDelay = 1000; // 1 sec step delay. |
61 // As per RFC 5245 Appendix B.1, STUN transactions need to be paced at certain | 61 // As per RFC 5245 Appendix B.1, STUN transactions need to be paced at certain |
62 // internal. Less than 20ms is not acceptable. We choose 50ms as our default. | 62 // internal. Less than 20ms is not acceptable. We choose 50ms as our default. |
63 const uint32 kMinimumStepDelay = 50; | 63 const uint32_t kMinimumStepDelay = 50; |
64 | 64 |
65 // CF = CANDIDATE FILTER | 65 // CF = CANDIDATE FILTER |
66 enum { | 66 enum { |
67 CF_NONE = 0x0, | 67 CF_NONE = 0x0, |
68 CF_HOST = 0x1, | 68 CF_HOST = 0x1, |
69 CF_REFLEXIVE = 0x2, | 69 CF_REFLEXIVE = 0x2, |
70 CF_RELAY = 0x4, | 70 CF_RELAY = 0x4, |
71 CF_ALL = 0x7, | 71 CF_ALL = 0x7, |
72 }; | 72 }; |
73 | 73 |
74 class PortAllocatorSession : public sigslot::has_slots<> { | 74 class PortAllocatorSession : public sigslot::has_slots<> { |
75 public: | 75 public: |
76 // Content name passed in mostly for logging and debugging. | 76 // Content name passed in mostly for logging and debugging. |
77 // TODO(mallinath) - Change username and password to ice_ufrag and ice_pwd. | 77 // TODO(mallinath) - Change username and password to ice_ufrag and ice_pwd. |
78 PortAllocatorSession(const std::string& content_name, | 78 PortAllocatorSession(const std::string& content_name, |
79 int component, | 79 int component, |
80 const std::string& username, | 80 const std::string& username, |
81 const std::string& password, | 81 const std::string& password, |
82 uint32 flags); | 82 uint32_t flags); |
83 | 83 |
84 // Subclasses should clean up any ports created. | 84 // Subclasses should clean up any ports created. |
85 virtual ~PortAllocatorSession() {} | 85 virtual ~PortAllocatorSession() {} |
86 | 86 |
87 uint32 flags() const { return flags_; } | 87 uint32_t flags() const { return flags_; } |
88 void set_flags(uint32 flags) { flags_ = flags; } | 88 void set_flags(uint32_t flags) { flags_ = flags; } |
89 std::string content_name() const { return content_name_; } | 89 std::string content_name() const { return content_name_; } |
90 int component() const { return component_; } | 90 int component() const { return component_; } |
91 | 91 |
92 // Starts gathering STUN and Relay configurations. | 92 // Starts gathering STUN and Relay configurations. |
93 virtual void StartGettingPorts() = 0; | 93 virtual void StartGettingPorts() = 0; |
94 virtual void StopGettingPorts() = 0; | 94 virtual void StopGettingPorts() = 0; |
95 virtual bool IsGettingPorts() = 0; | 95 virtual bool IsGettingPorts() = 0; |
96 | 96 |
97 sigslot::signal2<PortAllocatorSession*, PortInterface*> SignalPortReady; | 97 sigslot::signal2<PortAllocatorSession*, PortInterface*> SignalPortReady; |
98 sigslot::signal2<PortAllocatorSession*, | 98 sigslot::signal2<PortAllocatorSession*, |
99 const std::vector<Candidate>&> SignalCandidatesReady; | 99 const std::vector<Candidate>&> SignalCandidatesReady; |
100 sigslot::signal1<PortAllocatorSession*> SignalCandidatesAllocationDone; | 100 sigslot::signal1<PortAllocatorSession*> SignalCandidatesAllocationDone; |
101 | 101 |
102 virtual uint32 generation() { return generation_; } | 102 virtual uint32_t generation() { return generation_; } |
103 virtual void set_generation(uint32 generation) { generation_ = generation; } | 103 virtual void set_generation(uint32_t generation) { generation_ = generation; } |
104 sigslot::signal1<PortAllocatorSession*> SignalDestroyed; | 104 sigslot::signal1<PortAllocatorSession*> SignalDestroyed; |
105 | 105 |
106 protected: | 106 protected: |
107 const std::string& username() const { return username_; } | 107 const std::string& username() const { return username_; } |
108 const std::string& password() const { return password_; } | 108 const std::string& password() const { return password_; } |
109 | 109 |
110 std::string content_name_; | 110 std::string content_name_; |
111 int component_; | 111 int component_; |
112 | 112 |
113 private: | 113 private: |
114 uint32 flags_; | 114 uint32_t flags_; |
115 uint32 generation_; | 115 uint32_t generation_; |
116 std::string username_; | 116 std::string username_; |
117 std::string password_; | 117 std::string password_; |
118 }; | 118 }; |
119 | 119 |
120 class PortAllocator : public sigslot::has_slots<> { | 120 class PortAllocator : public sigslot::has_slots<> { |
121 public: | 121 public: |
122 PortAllocator() : | 122 PortAllocator() : |
123 flags_(kDefaultPortAllocatorFlags), | 123 flags_(kDefaultPortAllocatorFlags), |
124 min_port_(0), | 124 min_port_(0), |
125 max_port_(0), | 125 max_port_(0), |
126 step_delay_(kDefaultStepDelay), | 126 step_delay_(kDefaultStepDelay), |
127 allow_tcp_listen_(true), | 127 allow_tcp_listen_(true), |
128 candidate_filter_(CF_ALL) { | 128 candidate_filter_(CF_ALL) { |
129 // This will allow us to have old behavior on non webrtc clients. | 129 // This will allow us to have old behavior on non webrtc clients. |
130 } | 130 } |
131 virtual ~PortAllocator() {} | 131 virtual ~PortAllocator() {} |
132 | 132 |
133 PortAllocatorSession* CreateSession( | 133 PortAllocatorSession* CreateSession( |
134 const std::string& sid, | 134 const std::string& sid, |
135 const std::string& content_name, | 135 const std::string& content_name, |
136 int component, | 136 int component, |
137 const std::string& ice_ufrag, | 137 const std::string& ice_ufrag, |
138 const std::string& ice_pwd); | 138 const std::string& ice_pwd); |
139 | 139 |
140 uint32 flags() const { return flags_; } | 140 uint32_t flags() const { return flags_; } |
141 void set_flags(uint32 flags) { flags_ = flags; } | 141 void set_flags(uint32_t flags) { flags_ = flags; } |
142 | 142 |
143 const std::string& user_agent() const { return agent_; } | 143 const std::string& user_agent() const { return agent_; } |
144 const rtc::ProxyInfo& proxy() const { return proxy_; } | 144 const rtc::ProxyInfo& proxy() const { return proxy_; } |
145 void set_proxy(const std::string& agent, const rtc::ProxyInfo& proxy) { | 145 void set_proxy(const std::string& agent, const rtc::ProxyInfo& proxy) { |
146 agent_ = agent; | 146 agent_ = agent; |
147 proxy_ = proxy; | 147 proxy_ = proxy; |
148 } | 148 } |
149 | 149 |
150 // Gets/Sets the port range to use when choosing client ports. | 150 // Gets/Sets the port range to use when choosing client ports. |
151 int min_port() const { return min_port_; } | 151 int min_port() const { return min_port_; } |
152 int max_port() const { return max_port_; } | 152 int max_port() const { return max_port_; } |
153 bool SetPortRange(int min_port, int max_port) { | 153 bool SetPortRange(int min_port, int max_port) { |
154 if (min_port > max_port) { | 154 if (min_port > max_port) { |
155 return false; | 155 return false; |
156 } | 156 } |
157 | 157 |
158 min_port_ = min_port; | 158 min_port_ = min_port; |
159 max_port_ = max_port; | 159 max_port_ = max_port; |
160 return true; | 160 return true; |
161 } | 161 } |
162 | 162 |
163 uint32 step_delay() const { return step_delay_; } | 163 uint32_t step_delay() const { return step_delay_; } |
164 void set_step_delay(uint32 delay) { | 164 void set_step_delay(uint32_t delay) { step_delay_ = delay; } |
165 step_delay_ = delay; | |
166 } | |
167 | 165 |
168 bool allow_tcp_listen() const { return allow_tcp_listen_; } | 166 bool allow_tcp_listen() const { return allow_tcp_listen_; } |
169 void set_allow_tcp_listen(bool allow_tcp_listen) { | 167 void set_allow_tcp_listen(bool allow_tcp_listen) { |
170 allow_tcp_listen_ = allow_tcp_listen; | 168 allow_tcp_listen_ = allow_tcp_listen; |
171 } | 169 } |
172 | 170 |
173 uint32 candidate_filter() { return candidate_filter_; } | 171 uint32_t candidate_filter() { return candidate_filter_; } |
174 bool set_candidate_filter(uint32 filter) { | 172 bool set_candidate_filter(uint32_t filter) { |
175 // TODO(mallinath) - Do transition check? | 173 // TODO(mallinath) - Do transition check? |
176 candidate_filter_ = filter; | 174 candidate_filter_ = filter; |
177 return true; | 175 return true; |
178 } | 176 } |
179 | 177 |
180 // Gets/Sets the Origin value used for WebRTC STUN requests. | 178 // Gets/Sets the Origin value used for WebRTC STUN requests. |
181 const std::string& origin() const { return origin_; } | 179 const std::string& origin() const { return origin_; } |
182 void set_origin(const std::string& origin) { origin_ = origin; } | 180 void set_origin(const std::string& origin) { origin_ = origin; } |
183 | 181 |
184 protected: | 182 protected: |
185 virtual PortAllocatorSession* CreateSessionInternal( | 183 virtual PortAllocatorSession* CreateSessionInternal( |
186 const std::string& content_name, | 184 const std::string& content_name, |
187 int component, | 185 int component, |
188 const std::string& ice_ufrag, | 186 const std::string& ice_ufrag, |
189 const std::string& ice_pwd) = 0; | 187 const std::string& ice_pwd) = 0; |
190 | 188 |
191 uint32 flags_; | 189 uint32_t flags_; |
192 std::string agent_; | 190 std::string agent_; |
193 rtc::ProxyInfo proxy_; | 191 rtc::ProxyInfo proxy_; |
194 int min_port_; | 192 int min_port_; |
195 int max_port_; | 193 int max_port_; |
196 uint32 step_delay_; | 194 uint32_t step_delay_; |
197 bool allow_tcp_listen_; | 195 bool allow_tcp_listen_; |
198 uint32 candidate_filter_; | 196 uint32_t candidate_filter_; |
199 std::string origin_; | 197 std::string origin_; |
200 }; | 198 }; |
201 | 199 |
202 } // namespace cricket | 200 } // namespace cricket |
203 | 201 |
204 #endif // WEBRTC_P2P_BASE_PORTALLOCATOR_H_ | 202 #endif // WEBRTC_P2P_BASE_PORTALLOCATOR_H_ |
OLD | NEW |