Fix implicit operator IPAddress(IPv6)

master
Harald Wolff 2020-02-24 17:27:10 +01:00
parent b02d62c4cb
commit e952809d31
1 changed files with 9 additions and 1 deletions

View File

@ -124,6 +124,14 @@ namespace ln.types.net
return bytes;
}
public byte[] ToPackedBytes()
{
byte[] bytes = ToBytes();
if (V4Space.Contains(this))
return bytes.Slice(12);
return bytes;
}
public IEnumerable<IPv6> Split(int splitWidth)
{
@ -297,7 +305,7 @@ namespace ln.types.net
public static IPv6 operator +(IPv6 ip, int b) => new IPv6(Words.Add(ip.value.BigEndian(), b).BigEndian(), ip.mask);
public static IPv6 operator -(IPv6 ip, int b) => new IPv6(Words.Del(ip.value.BigEndian(), b).BigEndian(), ip.mask);
public static implicit operator IPAddress(IPv6 ip) => new IPAddress(ip.ToBytes());
public static implicit operator IPAddress(IPv6 ip) => new IPAddress(ip.ToPackedBytes());
public static implicit operator IPv6(IPAddress ip) => new IPv6(ip.GetAddressBytes());
public static implicit operator IPv6(String s) => IPv6.Parse(s);