private void ParseAddPermissions(SocketPermission perm) {
NetworkAccess access;
if (0 == string.Compare(m_access, strConnect, StringComparison.OrdinalIgnoreCase )) {
access = NetworkAccess.Connect;
}
else
if (0 == string.Compare(m_access, strAccept, StringComparison.OrdinalIgnoreCase )) {
access = NetworkAccess.Accept;
}
else {
throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strAccess, m_access));
}
TransportType transport;
try {
transport = (TransportType) Enum.Parse(typeof(TransportType), m_transport, true);
}
catch (Exception e) {
if (e is ThreadAbortException || e is StackOverflowException || e is OutOfMemoryException) {
throw;
}
throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strTransport, m_transport), e);
}
catch {
throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strTransport, m_transport), new Exception(SR.GetString(SR.net_nonClsCompliantException)));
}
int port;
if (string.Compare(m_port, "All", StringComparison.OrdinalIgnoreCase ) == 0) {
m_port = "-1";
}
try {
port = Int32.Parse(m_port, NumberFormatInfo.InvariantInfo);
}
catch (Exception e) {
if (e is ThreadAbortException || e is StackOverflowException || e is OutOfMemoryException) {
throw;
}
throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strPort, m_port), e);
}
catch {
throw new ArgumentException(SR.GetString(SR.net_perm_invalid_val, strPort, m_port), new Exception(SR.GetString(SR.net_nonClsCompliantException)));
}
if (!ValidationHelper.ValidateTcpPort(port) && port != SocketPermission.AllPorts) {
throw new ArgumentOutOfRangeException(SR.GetString(SR.net_perm_invalid_val, strPort, m_port));
}
perm.AddPermission(access, transport, m_host, port);
}