Imports System.Net.Sockets
Dim knownProxy = "127.0.0.1/8"
IPAddress.TryParse("127.0.0.2", input)
Dim parts As String() = knownProxy.Split("/")
Dim maskAddress As IPAddress = IPAddress.Parse(parts(0))
If maskAddress.AddressFamily <> input.AddressFamily Then
Console.WriteLine("We got something like an IPV4-Address for an IPv6-Mask.")
If parts(1).Length <= 0 Then
Console.WriteLine("A subnetmask length should not be less than 0.")
If maskAddress.AddressFamily = AddressFamily.InterNetwork Then
Console.WriteLine(String.Join(",", maskAddress.GetAddressBytes().Reverse().ToArray()))
Dim maskAddressBits = BitConverter.ToUInt32(maskAddress.GetAddressBytes().Reverse().ToArray(), 0)
Console.WriteLine(maskAddressBits)
Dim ipAddressBits = BitConverter.ToUInt32(input.GetAddressBytes().Reverse().ToArray(), 0)
Console.WriteLine(ipAddressBits)
Dim prefixLength As Integer
Integer.TryParse(parts(1), prefixLength)
Dim mask = UInt32.MaxValue << (32 - prefixLength)
Console.WriteLine(maskAddressBits.GetType())
Console.WriteLine(mask.GetType())
Dim badBitwiseAndResult = (maskAddressBits & mask)
Console.WriteLine(badBitwiseAndResult.GetType())
Console.WriteLine(badBitwiseAndResult)
If (maskAddressBits & mask) = (ipAddressBits & mask) Then
Console.WriteLine("It matches with the original code")
Dim goodBitwiseAndResult = (maskAddressBits AND mask)
Console.WriteLine(goodBitwiseAndResult.GetType())
Console.WriteLine(goodBitwiseAndResult)
If (maskAddressBits AND mask) = (ipAddressBits AND mask) Then
Console.WriteLine("It matches by changing the AND operator")
Console.WriteLine("Ending.")