From 6047a311f270bbb0a176900d9b1fea5e6d9b96c1 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Sat, 4 Jan 2020 17:23:46 -0500 Subject: TCP relay server now binds to UDP node port as fallback. --- network-addr/network-addr.cabal | 1 + network-addr/src/Network/Address.hs | 13 +++++++++++++ 2 files changed, 14 insertions(+) (limited to 'network-addr') diff --git a/network-addr/network-addr.cabal b/network-addr/network-addr.cabal index 5cbd9130..72886503 100644 --- a/network-addr/network-addr.cabal +++ b/network-addr/network-addr.cabal @@ -37,6 +37,7 @@ library build-depends: base , bytestring + , cpu , time , pretty , iproute diff --git a/network-addr/src/Network/Address.hs b/network-addr/src/Network/Address.hs index 9cfbbb40..57bb11d1 100644 --- a/network-addr/src/Network/Address.hs +++ b/network-addr/src/Network/Address.hs @@ -41,6 +41,8 @@ module Network.Address , ipFamily , is4mapped , either4or6 + , make6mapped4 + , canonize -- * PeerId -- $peer-id @@ -132,6 +134,7 @@ import Text.PrettyPrint.HughesPJClass hiding ((<>),($$)) #if !MIN_VERSION_time(1,5,0) import System.Locale (defaultTimeLocale) #endif +import System.Endian (fromBE32) import System.Entropy import DPut import DebugTag @@ -1242,6 +1245,16 @@ either4or6 a6@(SockAddrInet6 port _ addr _) | Just ip4 <- (fromSockAddr a6 >>= un4map) = Left (setPort port $ toSockAddr ip4) | otherwise = Right a6 +make6mapped4 :: SockAddr -> SockAddr +make6mapped4 addr@(SockAddrInet6 {}) = addr +make6mapped4 addr@(SockAddrInet port a) = SockAddrInet6 port 0 (0,0,0xFFFF,fromBE32 a) 0 + +canonize :: SockAddr -> SockAddr +canonize a6@(SockAddrInet6 port _ addr _) + | Just ip4 <- (fromSockAddr a6 >>= un4map) = setPort port $ toSockAddr ip4 +canonize a = a + + data WantIP = Want_IP4 | Want_IP6 | Want_Both deriving (Eq, Enum, Ord, Show) -- cgit v1.2.3