summaryrefslogtreecommitdiffstats
path: root/remoting/jingle_glue/network_settings.h
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/jingle_glue/network_settings.h')
-rw-r--r--remoting/jingle_glue/network_settings.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/remoting/jingle_glue/network_settings.h b/remoting/jingle_glue/network_settings.h
new file mode 100644
index 0000000..a37b0bc
--- /dev/null
+++ b/remoting/jingle_glue/network_settings.h
@@ -0,0 +1,54 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef REMOTING_JINGLE_GLUE_NETWORK_SETTINGS_H_
+#define REMOTING_JINGLE_GLUE_NETWORK_SETTINGS_H_
+
+namespace remoting {
+
+struct NetworkSettings {
+
+ // When hosts are configured with NAT traversal disabled they will
+ // typically also limit their P2P ports to this range, so that
+ // sessions may be blocked or un-blocked via firewall rules.
+ static const int kDefaultMinPort = 12400;
+ static const int kDefaultMaxPort = 12409;
+
+ enum NatTraversalMode {
+ // Active NAT traversal using STUN and relay servers.
+ NAT_TRAVERSAL_ENABLED,
+
+ // Don't use STUN or relay servers. Accept incoming P2P connection
+ // attempts, but don't initiate any. This ensures that the peer is
+ // on the same network. Note that connection will always fail if
+ // both ends use this mode.
+ NAT_TRAVERSAL_DISABLED,
+
+ // Don't use STUN or relay servers but make outgoing connections.
+ NAT_TRAVERSAL_OUTGOING,
+ };
+
+ NetworkSettings()
+ : nat_traversal_mode(NAT_TRAVERSAL_DISABLED),
+ min_port(0),
+ max_port(0) {
+ }
+
+ explicit NetworkSettings(NatTraversalMode nat_traversal_mode)
+ : nat_traversal_mode(nat_traversal_mode),
+ min_port(0),
+ max_port(0) {
+ }
+
+ NatTraversalMode nat_traversal_mode;
+
+ // |min_port| and |max_port| specify range (inclusive) of ports used by
+ // P2P sessions. Any port can be used when both values are set to 0.
+ int min_port;
+ int max_port;
+};
+
+} // namespace remoting
+
+#endif // REMOTING_HOST_NETWORK_SETTINGS_H_