Ganeti has a function providing the default configuration
for Snap-based daemons (including, e.g., the monitoring daemon).
However, if a bind-address is not explicitly specified, we should
bind on all interfaces for the default IP family---and not for IPv4.
Fix this.

Signed-off-by: Klaus Aehlig <[email protected]>
---
 src/Ganeti/Utils/Http.hs | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/Ganeti/Utils/Http.hs b/src/Ganeti/Utils/Http.hs
index 670b939..2267024 100644
--- a/src/Ganeti/Utils/Http.hs
+++ b/src/Ganeti/Utils/Http.hs
@@ -43,17 +43,21 @@ module Ganeti.Utils.Http
 import Control.Monad (liftM)
 import Data.ByteString.Char8 (pack)
 import Data.Map ((!))
+import Data.Maybe (fromMaybe)
 import Network.BSD (getServicePortNumber)
+import qualified Network.Socket as Socket
 import Snap.Core (Snap, writeBS, modifyResponse, setResponseStatus)
 import Snap.Http.Server.Config ( Config, ConfigLog(ConfigFileLog), emptyConfig
                                , setAccessLog, setErrorLog, setCompression
                                , setVerbose, setPort, setBind )
 import qualified Text.JSON as J
 
+import Ganeti.BasicTypes (GenericResult(..))
 import qualified Ganeti.Constants as C
 import Ganeti.Daemon (DaemonOptions(..))
 import Ganeti.Runtime ( GanetiDaemon, daemonName
                       , daemonsExtraLogFile, ExtraLogReason(..))
+import qualified Ganeti.Ssconf as Ssconf
 import Ganeti.Utils (withDefaultOnIOError)
 
 -- * Configuration handling
@@ -77,10 +81,11 @@ httpConfFromOpts daemon opts = do
   defaultPort <- withDefaultOnIOError standardPort
                  . liftM fromIntegral
                  $ getServicePortNumber name
+  defFamily <- Ssconf.getPrimaryIPFamily Nothing
+  let defBind = if defFamily == Ok Socket.AF_INET6 then "::" else "*"
   return .
-    setPort
-      (maybe defaultPort fromIntegral (optPort opts)) .
-    maybe id (setBind . pack) (optBindAddress opts)
+    setPort (maybe defaultPort fromIntegral (optPort opts)) .
+    setBind (pack . fromMaybe defBind $ optBindAddress opts)
     $ defaultHttpConf accessLog errorLog
 
 
-- 
2.6.0.rc2.230.g3dd15c0

Reply via email to