Revision 986a8671 src/Ganeti/Utils.hs

b/src/Ganeti/Utils.hs
56 56
  , exitIfEmpty
57 57
  , splitEithers
58 58
  , recombineEithers
59
  , resolveAddr
59 60
  ) where
60 61

  
61 62
import Data.Char (toUpper, isAlphaNum, isDigit, isSpace)
......
64 65
import Control.Monad (foldM)
65 66

  
66 67
import Debug.Trace
68
import Network.Socket
67 69

  
68 70
import Ganeti.BasicTypes
69 71
import qualified Ganeti.Constants as C
......
431 433
          recombiner (_,  ls, rs) t = Bad $ "Inconsistent trail log: l=" ++
432 434
                                      show ls ++ ", r=" ++ show rs ++ ",t=" ++
433 435
                                      show t
436

  
437
-- | Default hints for the resolver
438
resolveAddrHints :: Maybe AddrInfo
439
resolveAddrHints =
440
  Just defaultHints { addrFlags = [AI_NUMERICHOST, AI_NUMERICSERV] }
441

  
442
-- | Resolves a numeric address.
443
resolveAddr :: Int -> String -> IO (Result (Family, SockAddr))
444
resolveAddr port str = do
445
  resolved <- getAddrInfo resolveAddrHints (Just str) (Just (show port))
446
  return $ case resolved of
447
             [] -> Bad "Invalid results from lookup?"
448
             best:_ -> Ok (addrFamily best, addrAddress best)

Also available in: Unified diff