Skip to content

Commit 5cd2756

Browse files
committed
Fix /0 subnet bug. Remove example code from unittest.
1 parent 04f3d55 commit 5cd2756

3 files changed

Lines changed: 7 additions & 41 deletions

File tree

IPNetworkHelper.Tests/IPNetworkHelperTests.cs

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,17 @@ public void TryParsePrefixMustBeNetworkIPv6()
4242
public void TryParsePrefixLengthMustBeValid()
4343
{
4444
Assert.IsFalse(IPNetworkHelper.TryParse("192.168.0.0/33", out var _)); // Should fail, max is 32
45-
Assert.IsFalse(IPNetworkHelper.TryParse("0.0.0.0/0", out var _)); // Should fail, min is 1
45+
Assert.IsFalse(IPNetworkHelper.TryParse("0.0.0.0/-1", out var _)); // Should fail, min is 0
4646

4747
Assert.IsFalse(IPNetworkHelper.TryParse("DEAD:BEEF:0:1234::/129", out var _)); // Should fail, max is 128
48-
Assert.IsFalse(IPNetworkHelper.TryParse("0::0/0", out var _)); // Should fail, min is 1
48+
Assert.IsFalse(IPNetworkHelper.TryParse("0::0/-1", out var _)); // Should fail, min is 0
4949

5050
// These should all pass since they're at the limits (min/max)
5151
Assert.IsTrue(IPNetworkHelper.TryParse("192.168.0.0/32", out var _));
52-
Assert.IsTrue(IPNetworkHelper.TryParse("0.0.0.0/1", out var _));
52+
Assert.IsTrue(IPNetworkHelper.TryParse("0.0.0.0/0", out var _));
5353

5454
Assert.IsTrue(IPNetworkHelper.TryParse("DEAD:BEEF:0:0:1234:5678:90AB:CDEF/128", out var _));
55-
Assert.IsTrue(IPNetworkHelper.TryParse("0::0/1", out var _));
55+
Assert.IsTrue(IPNetworkHelper.TryParse("0::0/0", out var _));
5656
}
5757

5858
[TestMethod]
@@ -167,41 +167,6 @@ public void HasValidPrefix()
167167

168168
Assert.IsTrue(IPNetworkHelper.HasValidPrefix(n1));
169169
Assert.IsFalse(IPNetworkHelper.HasValidPrefix(n2));
170-
171-
// Parse a network, throws on invalid networks
172-
var network = IPNetworkHelper.Parse("192.168.0.0/16");
173-
174-
// Tries to parse, returns true when succeeded, false otherwise and the parsed network
175-
if (IPNetworkHelper.TryParse("192.168.0.0/16", out var othernetwork))
176-
{
177-
// ...
178-
}
179-
180-
// Get first/last IP from network
181-
var first = network.GetFirstIP(); // Network (192.168.0.0)
182-
var last = network.GetLastIP(); // Broadcast (192.168.255.255)
183-
184-
// Splits a network into two halves
185-
var (left, right) = network.Split(); // Returns 192.168.0.0/17 and 192.168.128.0/17
186-
187-
// Remove a subnet from a network
188-
var desired = IPNetworkHelper.Parse("192.168.10.16/28");
189-
var result = network.Extract(desired);
190-
191-
// Result:
192-
// 192.168.0.0/21
193-
// 192.168.8.0/23
194-
// 192.168.10.0/28
195-
// 192.168.10.16/28
196-
// 192.168.10.32/27
197-
// 192.168.10.64/26
198-
// 192.168.10.128/25
199-
// 192.168.11.0/24
200-
// 192.168.12.0/22
201-
// 192.168.16.0/20
202-
// 192.168.32.0/19
203-
// 192.168.64.0/18
204-
// 192.168.128.0/17
205170
}
206171
}
207172
}

IPNetworkHelper/IPNetworkHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ internal static byte[] CalculateLastBytes(byte[] prefixBytes, int prefixLength)
7474
}
7575

7676
private static bool IsValidPrefixLength(byte[] prefixBytes, int prefixLength)
77-
=> prefixLength <= prefixBytes.Length * 8 && prefixLength > 0;
77+
=> prefixLength <= prefixBytes.Length * 8 && prefixLength >= 0;
7878

7979
private static byte[] CreateMask(byte[] prefixBytes, int prefixLength)
8080
{

IPNetworkHelper/IPNetworkHelper.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
<RepositoryUrl>https://github.com/RobThree/IPNetworkHelper</RepositoryUrl>
1616
<RepositoryType>git</RepositoryType>
1717
<PackageTags>networking, csharp, ipv6, dotnet, network, ipv4, ip, cidr, extension-methods, dotnet-standard, ipv6-network, cidr-notation, ipv6-subnetting, ipv4-subnetting, ipv4-network, cidr-subnet</PackageTags>
18-
<PackageReleaseNotes>Initial release</PackageReleaseNotes>
18+
<PackageReleaseNotes>Fix /0 subnet bug.</PackageReleaseNotes>
19+
<Version>1.0.1</Version>
1920
</PropertyGroup>
2021

2122
<ItemGroup>

0 commit comments

Comments
 (0)