diff options
author | Joe Crayne <joe@jerkface.net> | 2020-01-04 17:23:46 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2020-01-04 17:23:46 -0500 |
commit | 6047a311f270bbb0a176900d9b1fea5e6d9b96c1 (patch) | |
tree | f3e52431dad452118a7ebde5c383f4f5abef726c /network-addr | |
parent | 5181c77ce7dd73d622ff3921b90bf2741bedb646 (diff) |
TCP relay server now binds to UDP node port as fallback.
Diffstat (limited to 'network-addr')
-rw-r--r-- | network-addr/network-addr.cabal | 1 | ||||
-rw-r--r-- | network-addr/src/Network/Address.hs | 13 |
2 files changed, 14 insertions, 0 deletions
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 | |||
37 | build-depends: | 37 | build-depends: |
38 | base | 38 | base |
39 | , bytestring | 39 | , bytestring |
40 | , cpu | ||
40 | , time | 41 | , time |
41 | , pretty | 42 | , pretty |
42 | , iproute | 43 | , 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 | |||
41 | , ipFamily | 41 | , ipFamily |
42 | , is4mapped | 42 | , is4mapped |
43 | , either4or6 | 43 | , either4or6 |
44 | , make6mapped4 | ||
45 | , canonize | ||
44 | 46 | ||
45 | -- * PeerId | 47 | -- * PeerId |
46 | -- $peer-id | 48 | -- $peer-id |
@@ -132,6 +134,7 @@ import Text.PrettyPrint.HughesPJClass hiding ((<>),($$)) | |||
132 | #if !MIN_VERSION_time(1,5,0) | 134 | #if !MIN_VERSION_time(1,5,0) |
133 | import System.Locale (defaultTimeLocale) | 135 | import System.Locale (defaultTimeLocale) |
134 | #endif | 136 | #endif |
137 | import System.Endian (fromBE32) | ||
135 | import System.Entropy | 138 | import System.Entropy |
136 | import DPut | 139 | import DPut |
137 | import DebugTag | 140 | import DebugTag |
@@ -1242,6 +1245,16 @@ either4or6 a6@(SockAddrInet6 port _ addr _) | |||
1242 | | Just ip4 <- (fromSockAddr a6 >>= un4map) = Left (setPort port $ toSockAddr ip4) | 1245 | | Just ip4 <- (fromSockAddr a6 >>= un4map) = Left (setPort port $ toSockAddr ip4) |
1243 | | otherwise = Right a6 | 1246 | | otherwise = Right a6 |
1244 | 1247 | ||
1248 | make6mapped4 :: SockAddr -> SockAddr | ||
1249 | make6mapped4 addr@(SockAddrInet6 {}) = addr | ||
1250 | make6mapped4 addr@(SockAddrInet port a) = SockAddrInet6 port 0 (0,0,0xFFFF,fromBE32 a) 0 | ||
1251 | |||
1252 | canonize :: SockAddr -> SockAddr | ||
1253 | canonize a6@(SockAddrInet6 port _ addr _) | ||
1254 | | Just ip4 <- (fromSockAddr a6 >>= un4map) = setPort port $ toSockAddr ip4 | ||
1255 | canonize a = a | ||
1256 | |||
1257 | |||
1245 | data WantIP = Want_IP4 | Want_IP6 | Want_Both | 1258 | data WantIP = Want_IP4 | Want_IP6 | Want_Both |
1246 | deriving (Eq, Enum, Ord, Show) | 1259 | deriving (Eq, Enum, Ord, Show) |
1247 | 1260 | ||