Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Net / System / Net / NetworkInformation / SystemIPv4InterfaceProperties.cs / 1 / SystemIPv4InterfaceProperties.cs
////// namespace System.Net.NetworkInformation { using System.Net; using System.Net.Sockets; using System; using System.Runtime.InteropServices; using System.Collections; using System.ComponentModel; using System.Security.Permissions; using Microsoft.Win32; internal class SystemIPv4InterfaceProperties:IPv4InterfaceProperties{ //these are only valid for ipv4 interfaces bool haveWins = false; bool dhcpEnabled = false; bool routingEnabled = false; bool autoConfigEnabled = false; bool autoConfigActive = false; uint index = 0; uint mtu = 0; //ipv4 addresses only GatewayIPAddressInformationCollection gatewayAddresses = null; IPAddressCollection dhcpAddresses = null; IPAddressCollection winsServerAddresses = null; internal IPAddressCollection dnsAddresses = null; /* // Consider removing. internal SystemIPv4InterfaceProperties(){ } */ internal SystemIPv4InterfaceProperties(FixedInfo fixedInfo, IpAdapterInfo ipAdapterInfo) { index = ipAdapterInfo.index; routingEnabled = fixedInfo.EnableRouting; dhcpEnabled = ipAdapterInfo.dhcpEnabled; haveWins = ipAdapterInfo.haveWins; gatewayAddresses = ipAdapterInfo.gatewayList.ToIPGatewayAddressCollection(); dhcpAddresses = ipAdapterInfo.dhcpServer.ToIPAddressCollection(); IPAddressCollection primaryWinsServerAddresses = ipAdapterInfo.primaryWinsServer.ToIPAddressCollection(); IPAddressCollection secondaryWinsServerAddresses = ipAdapterInfo.secondaryWinsServer.ToIPAddressCollection(); //concat the winsserver addresses winsServerAddresses = new IPAddressCollection(); foreach (IPAddress address in primaryWinsServerAddresses){ winsServerAddresses.InternalAdd(address); } foreach (IPAddress address in secondaryWinsServerAddresses){ winsServerAddresses.InternalAdd(address); } SystemIPv4InterfaceStatistics s = new SystemIPv4InterfaceStatistics(index); mtu = (uint)s.Mtu; if(ComNetOS.IsWin2K){ GetPerAdapterInfo(ipAdapterInfo.index); } else{ dnsAddresses = fixedInfo.DnsAddresses; } } internal IPAddressCollection DnsAddresses{ get { return dnsAddresses; } } /// /// Provides support for ip configuation information and statistics. /// Only valid for Ipv4 Uses WINS for name resolution. public override bool UsesWins{get {return haveWins;}} public override bool IsDhcpEnabled{ get { return dhcpEnabled; } } public override bool IsForwardingEnabled{get {return routingEnabled;}} //proto ///Auto configuration of an ipv4 address for a client /// on a network where a DHCP server /// isn't available. public override bool IsAutomaticPrivateAddressingEnabled{ get{ return autoConfigEnabled; } } // proto public override bool IsAutomaticPrivateAddressingActive{ get{ return autoConfigActive; } } ///Specifies the Maximum transmission unit in bytes. Uses GetIFEntry. //We cache this to be consistent across all platforms public override int Mtu{ get { return (int) mtu; } } public override int Index{ get { return (int) index; } } ///IP Address of the default gateway. internal GatewayIPAddressInformationCollection GetGatewayAddresses(){ return gatewayAddresses; } ///IP address of the DHCP sever. internal IPAddressCollection GetDhcpServerAddresses(){ return dhcpAddresses; } ///IP addresses of the WINS servers. internal IPAddressCollection GetWinsServersAddresses(){ return winsServerAddresses; } private void GetPerAdapterInfo(uint index) { if (index != 0){ uint size = 0; SafeLocalFree buffer = null; uint result = UnsafeNetInfoNativeMethods.GetPerAdapterInfo(index,SafeLocalFree.Zero,ref size); while (result == IpHelperErrors.ErrorBufferOverflow) { try { //now we allocate the buffer and read the network parameters. buffer = SafeLocalFree.LocalAlloc((int)size); result = UnsafeNetInfoNativeMethods.GetPerAdapterInfo(index,buffer,ref size); if ( result == IpHelperErrors.Success ) { IpPerAdapterInfo ipPerAdapterInfo = (IpPerAdapterInfo)Marshal.PtrToStructure(buffer.DangerousGetHandle(),typeof(IpPerAdapterInfo)); autoConfigEnabled = ipPerAdapterInfo.autoconfigEnabled; autoConfigActive = ipPerAdapterInfo.autoconfigActive; //get dnsAddresses dnsAddresses = ipPerAdapterInfo.dnsServerList.ToIPAddressCollection(); } } finally { if(dnsAddresses == null){ dnsAddresses = new IPAddressCollection(); } if (buffer != null) buffer.Close(); } } if(dnsAddresses == null){ dnsAddresses = new IPAddressCollection(); } if (result != IpHelperErrors.Success) { throw new NetworkInformationException((int)result); } } } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DbConvert.cs
- ServiceDesigner.xaml.cs
- ScrollEvent.cs
- ModelItemCollection.cs
- NetSectionGroup.cs
- WebBrowser.cs
- DataGridColumnCollectionEditor.cs
- EntityContainerRelationshipSet.cs
- counter.cs
- AddToCollection.cs
- HttpProxyCredentialType.cs
- TreeIterator.cs
- SerializationFieldInfo.cs
- InternalTypeHelper.cs
- DnsPermission.cs
- SynchronousReceiveBehavior.cs
- HierarchicalDataSourceIDConverter.cs
- ControlPaint.cs
- DataControlButton.cs
- CodeTypeReferenceCollection.cs
- ListSourceHelper.cs
- HostProtectionException.cs
- TextDecoration.cs
- DispatcherExceptionFilterEventArgs.cs
- AttributeProviderAttribute.cs
- XsltCompileContext.cs
- ClientSettingsStore.cs
- UriTemplateDispatchFormatter.cs
- XmlIlGenerator.cs
- XmlEntityReference.cs
- RadioButtonList.cs
- DataPager.cs
- NetworkAddressChange.cs
- Lease.cs
- SQLGuidStorage.cs
- DataListItemCollection.cs
- GeneratedCodeAttribute.cs
- BaseResourcesBuildProvider.cs
- TableRowCollection.cs
- StylusEditingBehavior.cs
- DatatypeImplementation.cs
- ProcessHostMapPath.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- AnonymousIdentificationSection.cs
- Config.cs
- DataRowView.cs
- XPathNavigator.cs
- OdbcDataReader.cs
- XmlNamedNodeMap.cs
- HtmlControl.cs
- DataGridCellClipboardEventArgs.cs
- TransformConverter.cs
- QuaternionKeyFrameCollection.cs
- PeerInvitationResponse.cs
- SignatureToken.cs
- ZipPackage.cs
- MoveSizeWinEventHandler.cs
- TileBrush.cs
- ProviderManager.cs
- HtmlShim.cs
- RowUpdatedEventArgs.cs
- XmlUrlEditor.cs
- ContentHostHelper.cs
- XmlnsCompatibleWithAttribute.cs
- ItemsPanelTemplate.cs
- ErrorHandler.cs
- EditorPart.cs
- SudsCommon.cs
- SHA256.cs
- OracleBFile.cs
- CodeMemberProperty.cs
- AvTraceFormat.cs
- XmlSchemaType.cs
- SRDisplayNameAttribute.cs
- BaseCAMarshaler.cs
- VisualStyleElement.cs
- Crypto.cs
- InternalPermissions.cs
- ByteStorage.cs
- ExpanderAutomationPeer.cs
- OracleCommandBuilder.cs
- DataRowComparer.cs
- EntityClientCacheEntry.cs
- ComplexType.cs
- AffineTransform3D.cs
- RadioButtonPopupAdapter.cs
- FindRequestContext.cs
- DataGridViewAccessibleObject.cs
- OutOfMemoryException.cs
- MessageSmuggler.cs
- ResourcePool.cs
- SQLDateTimeStorage.cs
- ImageSourceConverter.cs
- SecurityKeyIdentifier.cs
- SQLBinary.cs
- EventEntry.cs
- WebEvents.cs
- DashStyle.cs
- NgenServicingAttributes.cs
- RadioButtonFlatAdapter.cs