diff --git a/agents/diamagent.go b/agents/diamagent.go index 6585740ba..62643284d 100644 --- a/agents/diamagent.go +++ b/agents/diamagent.go @@ -86,24 +86,29 @@ func (da *DiameterAgent) handlers() diam.Handler { ProductName: datatype.UTF8String(da.cgrCfg.DiameterAgentCfg().ProductName), FirmwareRevision: datatype.Unsigned32(utils.DIAMETER_FIRMWARE_REVISION), } - interfaces, err := net.Interfaces() - if err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> scan for interfaces err: %s", - utils.DiameterAgent, err.Error())) - } - for _, inter := range interfaces { - addrs, err := inter.Addrs() + ipPort := strings.Split(da.cgrCfg.DiameterAgentCfg().Listen, utils.InInFieldSep) + if ipPort[0] == "" { + interfaces, err := net.Interfaces() if err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> error: %+v, when taking address from interface: %+v", - utils.DiameterAgent, err, inter.Name)) - continue + utils.Logger.Err(fmt.Sprintf("<%s> scan for interfaces err: %s", + utils.DiameterAgent, err.Error())) } - for _, iAddr := range addrs { - if strings.Contains(da.cgrCfg.DiameterAgentCfg().Listen, strings.Split(iAddr.String(), utils.HDR_VAL_SEP)[0]) { + for _, inter := range interfaces { + addrs, err := inter.Addrs() + if err != nil { + utils.Logger.Err(fmt.Sprintf("<%s> error: %+v, when taking address from interface: %+v", + utils.DiameterAgent, err, inter.Name)) + continue + } + for _, iAddr := range addrs { settings.HostIPAddresses = append(settings.HostIPAddresses, datatype.Address( strings.Split(iAddr.String(), utils.HDR_VAL_SEP)[0])) // address came in form x.y.z.t/24 } } + } else { + for _, ip := range strings.Split(ipPort[0], utils.HDR_VAL_SEP) { + settings.HostIPAddresses = append(settings.HostIPAddresses, datatype.Address(ip)) + } } dSM := sm.New(settings)