From d4957dd9be8ef4484478510f5d3c6c974d3afe26 Mon Sep 17 00:00:00 2001
From: Jeff Ames
Date: Mon, 25 May 2009 01:59:50 +0000
Subject: Update svn properties.
---
OpenSim/Framework/NetworkUtil.cs | 442 +++++++++++++++++++--------------------
1 file changed, 221 insertions(+), 221 deletions(-)
(limited to 'OpenSim/Framework/NetworkUtil.cs')
diff --git a/OpenSim/Framework/NetworkUtil.cs b/OpenSim/Framework/NetworkUtil.cs
index e3fb009..351020b 100644
--- a/OpenSim/Framework/NetworkUtil.cs
+++ b/OpenSim/Framework/NetworkUtil.cs
@@ -1,221 +1,221 @@
-using System;
-using System.Collections.Generic;
-using System.Net.Sockets;
-using System.Net;
-using System.Net.NetworkInformation;
-using System.Reflection;
-using log4net;
-
-namespace OpenSim.Framework
-{
- ///
- /// Handles NAT translation in a 'manner of speaking'
- /// Allows you to return multiple different external
- /// hostnames depending on the requestors network
- ///
- /// This enables standard port forwarding techniques
- /// to work correctly with OpenSim.
- ///
- public static class NetworkUtil
- {
- // Logger
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- private static bool m_disabled = true;
-
- public static bool Enabled
- {
- set { m_disabled = value; }
- get { return m_disabled; }
- }
-
- // IPv4Address, Subnet
- static readonly Dictionary m_subnets = new Dictionary();
-
- public static IPAddress GetIPFor(IPAddress user, IPAddress simulator)
- {
- if(m_disabled)
- return simulator;
-
- // Check if we're accessing localhost.
- foreach (IPAddress host in Dns.GetHostAddresses(Dns.GetHostName()))
- {
- if (host.Equals(user) && host.AddressFamily == AddressFamily.InterNetwork)
- {
- m_log.Info("[NetworkUtil] Localhost user detected, sending them '" + host + "' instead of '" + simulator + "'");
- return host;
- }
- }
-
- // Check for same LAN segment
- foreach (KeyValuePair subnet in m_subnets)
- {
- byte[] subnetBytes = subnet.Value.GetAddressBytes();
- byte[] localBytes = subnet.Key.GetAddressBytes();
- byte[] destBytes = user.GetAddressBytes();
-
- if (subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length)
- return null;
-
- bool valid = true;
-
- for (int i = 0; i < subnetBytes.Length; i++)
- {
- if ((localBytes[i] & subnetBytes[i]) != (destBytes[i] & subnetBytes[i]))
- {
- valid = false;
- break;
- }
- }
-
- if (subnet.Key.AddressFamily != AddressFamily.InterNetwork)
- valid = false;
-
- if (valid)
- {
- m_log.Info("[NetworkUtil] Local LAN user detected, sending them '" + subnet.Key + "' instead of '" + simulator + "'");
- return subnet.Key;
- }
- }
-
- // Otherwise, return outside address
- return simulator;
- }
-
- private static IPAddress GetExternalIPFor(IPAddress destination, string defaultHostname)
- {
- // Adds IPv6 Support (Not that any of the major protocols supports it...)
- if (destination.AddressFamily == AddressFamily.InterNetworkV6)
- {
- foreach (IPAddress host in Dns.GetHostAddresses(defaultHostname))
- {
- if (host.AddressFamily == AddressFamily.InterNetworkV6)
- {
- m_log.Info("[NetworkUtil] Localhost user detected, sending them '" + host + "' instead of '" + defaultHostname + "'");
- return host;
- }
- }
- }
-
- if(destination.AddressFamily != AddressFamily.InterNetwork)
- return null;
-
- // Check if we're accessing localhost.
- foreach (KeyValuePair pair in m_subnets)
- {
- IPAddress host = pair.Value;
- if (host.Equals(destination) && host.AddressFamily == AddressFamily.InterNetwork)
- {
- m_log.Info("[NATROUTING] Localhost user detected, sending them '" + host + "' instead of '" + defaultHostname + "'");
- return destination;
- }
- }
-
- // Check for same LAN segment
- foreach (KeyValuePair subnet in m_subnets)
- {
- byte[] subnetBytes = subnet.Value.GetAddressBytes();
- byte[] localBytes = subnet.Key.GetAddressBytes();
- byte[] destBytes = destination.GetAddressBytes();
-
- if(subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length)
- return null;
-
- bool valid = true;
-
- for(int i=0;i
+ /// Handles NAT translation in a 'manner of speaking'
+ /// Allows you to return multiple different external
+ /// hostnames depending on the requestors network
+ ///
+ /// This enables standard port forwarding techniques
+ /// to work correctly with OpenSim.
+ ///
+ public static class NetworkUtil
+ {
+ // Logger
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ private static bool m_disabled = true;
+
+ public static bool Enabled
+ {
+ set { m_disabled = value; }
+ get { return m_disabled; }
+ }
+
+ // IPv4Address, Subnet
+ static readonly Dictionary m_subnets = new Dictionary();
+
+ public static IPAddress GetIPFor(IPAddress user, IPAddress simulator)
+ {
+ if(m_disabled)
+ return simulator;
+
+ // Check if we're accessing localhost.
+ foreach (IPAddress host in Dns.GetHostAddresses(Dns.GetHostName()))
+ {
+ if (host.Equals(user) && host.AddressFamily == AddressFamily.InterNetwork)
+ {
+ m_log.Info("[NetworkUtil] Localhost user detected, sending them '" + host + "' instead of '" + simulator + "'");
+ return host;
+ }
+ }
+
+ // Check for same LAN segment
+ foreach (KeyValuePair subnet in m_subnets)
+ {
+ byte[] subnetBytes = subnet.Value.GetAddressBytes();
+ byte[] localBytes = subnet.Key.GetAddressBytes();
+ byte[] destBytes = user.GetAddressBytes();
+
+ if (subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length)
+ return null;
+
+ bool valid = true;
+
+ for (int i = 0; i < subnetBytes.Length; i++)
+ {
+ if ((localBytes[i] & subnetBytes[i]) != (destBytes[i] & subnetBytes[i]))
+ {
+ valid = false;
+ break;
+ }
+ }
+
+ if (subnet.Key.AddressFamily != AddressFamily.InterNetwork)
+ valid = false;
+
+ if (valid)
+ {
+ m_log.Info("[NetworkUtil] Local LAN user detected, sending them '" + subnet.Key + "' instead of '" + simulator + "'");
+ return subnet.Key;
+ }
+ }
+
+ // Otherwise, return outside address
+ return simulator;
+ }
+
+ private static IPAddress GetExternalIPFor(IPAddress destination, string defaultHostname)
+ {
+ // Adds IPv6 Support (Not that any of the major protocols supports it...)
+ if (destination.AddressFamily == AddressFamily.InterNetworkV6)
+ {
+ foreach (IPAddress host in Dns.GetHostAddresses(defaultHostname))
+ {
+ if (host.AddressFamily == AddressFamily.InterNetworkV6)
+ {
+ m_log.Info("[NetworkUtil] Localhost user detected, sending them '" + host + "' instead of '" + defaultHostname + "'");
+ return host;
+ }
+ }
+ }
+
+ if(destination.AddressFamily != AddressFamily.InterNetwork)
+ return null;
+
+ // Check if we're accessing localhost.
+ foreach (KeyValuePair pair in m_subnets)
+ {
+ IPAddress host = pair.Value;
+ if (host.Equals(destination) && host.AddressFamily == AddressFamily.InterNetwork)
+ {
+ m_log.Info("[NATROUTING] Localhost user detected, sending them '" + host + "' instead of '" + defaultHostname + "'");
+ return destination;
+ }
+ }
+
+ // Check for same LAN segment
+ foreach (KeyValuePair subnet in m_subnets)
+ {
+ byte[] subnetBytes = subnet.Value.GetAddressBytes();
+ byte[] localBytes = subnet.Key.GetAddressBytes();
+ byte[] destBytes = destination.GetAddressBytes();
+
+ if(subnetBytes.Length != destBytes.Length || subnetBytes.Length != localBytes.Length)
+ return null;
+
+ bool valid = true;
+
+ for(int i=0;i