public Configuration ParseConfiguration() { Configuration.Builder configurationBuilder = new Configuration.Builder(); LOG.Debug($"Reading configuration from {_filename}"); XElement xelement = XElement.Load(_filename); configurationBuilder.SetServerAddress(IPAddress.Parse((xelement.Descendants("server_address").First().Value))); configurationBuilder.SetConnectionRequestLocalPort(int.Parse(xelement.Descendants("ncc_connection_request_local_port").First().Value)); configurationBuilder.SetCallCoordinationLocalPort(int.Parse(xelement.Descendants("ncc_call_coordination_local_port").First().Value)); configurationBuilder.SetCallTeardownLocalPort(int.Parse(xelement.Descendants("ncc_call_teardown_local_port").First().Value)); configurationBuilder.SetConnectionRequestRemotePort(int.Parse(xelement.Descendants("cc_connection_request_remote_port").First().Value)); configurationBuilder.SetCallCoordinationRemotePort(int.Parse(xelement.Descendants("ncc_call_coordination_remote_port").First().Value)); configurationBuilder.SetDomain(xelement.Descendants("domain").First().Value); foreach (XElement element in xelement.Descendants("client_port")) { LOG.Trace($"NCC: ClientName: {element.FirstAttribute.Value} ClientPortAlias: {element.Value}"); configurationBuilder.AddClientPortAlias(element.FirstAttribute.Value, element.Value); } foreach (XElement element in xelement.Descendants("port_domain")) { LOG.Trace($"NCC: PortTemplate: {element.FirstAttribute.Value} Domain: {element.Value}"); configurationBuilder.AddPortDomain(element.FirstAttribute.Value, element.Value); } return(configurationBuilder.Build()); }