Skip to content

Commit 341b8b2

Browse files
authored
look for dhcp lease file in multiple locations (#41016)
1 parent 171082e commit 341b8b2

File tree

4 files changed

+11
-7
lines changed

4 files changed

+11
-7
lines changed

src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/LinuxIPInterfaceProperties.cs

+6-2
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,12 @@ public GatewayIPAddressInformationCollection GetGatewayAddresses(LinuxNetworkInt
6969

7070
private IPAddressCollection GetDhcpServerAddresses()
7171
{
72-
List<IPAddress> internalCollection
73-
= StringParsingHelpers.ParseDhcpServerAddressesFromLeasesFile(NetworkFiles.DHClientLeasesFile, _linuxNetworkInterface.Name);
72+
List<IPAddress> internalCollection = new List<IPAddress>();
73+
74+
StringParsingHelpers.ParseDhcpServerAddressesFromLeasesFile(internalCollection, NetworkFiles.DHClientLeasesFile, _linuxNetworkInterface.Name);
75+
StringParsingHelpers.ParseDhcpServerAddressesFromLeasesFile(internalCollection, string.Format(NetworkFiles.DHClientInterfaceLeasesFile, _linuxNetworkInterface.Name), _linuxNetworkInterface.Name);
76+
StringParsingHelpers.ParseDhcpServerAddressesFromLeasesFile(internalCollection, string.Format(NetworkFiles.DHClientSecondaryInterfaceLeasesFile, _linuxNetworkInterface.Name), _linuxNetworkInterface.Name);
77+
7478
return new InternalIPAddressCollection(internalCollection);
7579
}
7680

src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/NetworkFiles.cs

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ internal static class NetworkFiles
2323
public const string Udp4ConnectionsFile = "/proc/net/udp";
2424
public const string Udp6ConnectionsFile = "/proc/net/udp6";
2525
public const string DHClientLeasesFile = "/var/lib/dhcp/dhclient.leases";
26+
public const string DHClientInterfaceLeasesFile = "/var/lib/dhcp/dhclient.{0}.leases";
27+
public const string DHClientSecondaryInterfaceLeasesFile = "/var/lib/dhcp/dhclient6.{0}.leases";
2628
public const string SmbConfFile = "/etc/samba/smb.conf";
2729

2830
// Individual file names

src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/StringParsingHelpers.Addresses.cs

+1-4
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,11 @@ internal static void ParseIPv6GatewayAddressesFromRouteFile(List<GatewayIPAddres
7979
}
8080
}
8181

82-
internal static List<IPAddress> ParseDhcpServerAddressesFromLeasesFile(string filePath, string name)
82+
internal static void ParseDhcpServerAddressesFromLeasesFile(List<IPAddress> collection, string filePath, string name)
8383
{
8484
// Parse the /var/lib/dhcp/dhclient.leases file, if it exists.
8585
// If any errors occur, like the file not existing or being
8686
// improperly formatted, just bail and return an empty collection.
87-
List<IPAddress> collection = new List<IPAddress>();
8887
try
8988
{
9089
if (File.Exists(filePath)) // avoid an exception in most cases if path doesn't already exist
@@ -123,8 +122,6 @@ internal static List<IPAddress> ParseDhcpServerAddressesFromLeasesFile(string fi
123122
{
124123
// If any parsing or file reading exception occurs, just ignore it and return the collection.
125124
}
126-
127-
return collection;
128125
}
129126

130127
internal static List<IPAddress> ParseWinsServerAddressesFromSmbConfFile(string smbConfFilePath)

src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/AddressParsingTests.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ public void DhcpServerAddressParsing()
6969
{
7070
string fileName = GetTestFilePath();
7171
FileUtil.NormalizeLineEndings("NetworkFiles/dhclient.leases", fileName);
72-
List<IPAddress> dhcpServerAddresses = StringParsingHelpers.ParseDhcpServerAddressesFromLeasesFile(fileName, "wlan0");
72+
List<IPAddress> dhcpServerAddresses = new List<IPAddress>();
73+
StringParsingHelpers.ParseDhcpServerAddressesFromLeasesFile(dhcpServerAddresses, fileName, "wlan0");
7374
Assert.Equal(1, dhcpServerAddresses.Count);
7475
Assert.Equal(IPAddress.Parse("10.105.128.4"), dhcpServerAddresses[0]);
7576
}

0 commit comments

Comments
 (0)