Revision 986a8671

b/src/Ganeti/Daemon.hs
263 263
      Socket.SockAddrInet6 (fromIntegral port) 0 Socket.iN6ADDR_ANY 0)
264 264
defaultBindAddr _ fam = Bad $ "Unsupported address family: " ++ show fam
265 265

  
266
-- | Default hints for the resolver
267
resolveAddrHints :: Maybe Socket.AddrInfo
268
resolveAddrHints =
269
  Just Socket.defaultHints { Socket.addrFlags = [Socket.AI_NUMERICHOST,
270
                                                 Socket.AI_NUMERICSERV] }
271

  
272
-- | Resolves a numeric address.
273
resolveAddr :: Int -> String -> IO (Result (Socket.Family, Socket.SockAddr))
274
resolveAddr port str = do
275
  resolved <- Socket.getAddrInfo resolveAddrHints (Just str) (Just (show port))
276
  return $ case resolved of
277
             [] -> Bad "Invalid results from lookup?"
278
             best:_ -> Ok (Socket.addrFamily best, Socket.addrAddress best)
279

  
280 266
-- | Based on the options, compute the socket address to use for the
281 267
-- daemon.
282 268
parseAddress :: DaemonOptions      -- ^ Command line options
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