From e952809d316bb144ba4dbe0cc741b203361c61ec Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Mon, 24 Feb 2020 17:27:10 +0100 Subject: [PATCH] Fix implicit operator IPAddress(IPv6) --- net/IPv6.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/IPv6.cs b/net/IPv6.cs index 16245f5..3b607cb 100644 --- a/net/IPv6.cs +++ b/net/IPv6.cs @@ -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 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);