Add sctop option for diameter ( "network":"option")

This commit is contained in:
TeoV
2018-11-05 08:05:44 -05:00
committed by Dan Christian Bogos
parent cc49cffea8
commit 58a40bb1e8
8 changed files with 17 additions and 7 deletions

View File

@@ -82,9 +82,9 @@ func TestDiamItStartEngine(t *testing.T) {
func TestDiamItConnectDiameterClient(t *testing.T) {
diamClnt, err = NewDiameterClient(daCfg.DiameterAgentCfg().Listen, "INTEGRATION_TESTS",
daCfg.DiameterAgentCfg().OriginRealm,
daCfg.DiameterAgentCfg().VendorId, daCfg.DiameterAgentCfg().ProductName,
utils.DIAMETER_FIRMWARE_REVISION, daCfg.DiameterAgentCfg().DictionariesPath)
daCfg.DiameterAgentCfg().OriginRealm, daCfg.DiameterAgentCfg().VendorId,
daCfg.DiameterAgentCfg().ProductName, utils.DIAMETER_FIRMWARE_REVISION,
daCfg.DiameterAgentCfg().DictionariesPath, daCfg.DiameterAgentCfg().Network)
if err != nil {
t.Fatal(err)
}

View File

@@ -70,7 +70,7 @@ type DiameterAgent struct {
// ListenAndServe is called when DiameterAgent is started, usually from within cmd/cgr-engine
func (da *DiameterAgent) ListenAndServe() error {
return diam.ListenAndServe(da.cgrCfg.DiameterAgentCfg().Listen, da.handlers(), nil)
return diam.ListenAndServeNetwork(da.cgrCfg.DiameterAgentCfg().Network, da.cgrCfg.DiameterAgentCfg().Listen, da.handlers(), nil)
}
// Creates the message handlers
@@ -86,7 +86,7 @@ func (da *DiameterAgent) handlers() diam.Handler {
dSM.HandleFunc("ALL", da.handleMessage) // route all commands to one dispatcher
go func() {
for err := range dSM.ErrorReports() {
utils.Logger.Err(fmt.Sprintf("<%s> sm error: %v", utils.DiameterAgent, err))
utils.Logger.Err(fmt.Sprintf("<%s> sm error: %+v", utils.DiameterAgent, err))
}
}()
return dSM

View File

@@ -29,13 +29,15 @@ import (
"github.com/fiorix/go-diameter/diam/sm"
)
func NewDiameterClient(addr, originHost, originRealm string, vendorId int, productName string, firmwareRev int, dictsDir string) (*DiameterClient, error) {
func NewDiameterClient(addr, originHost, originRealm string, vendorId int, productName string,
firmwareRev int, dictsDir string, network string) (*DiameterClient, error) {
cfg := &sm.Settings{
OriginHost: datatype.DiameterIdentity(originHost),
OriginRealm: datatype.DiameterIdentity(originRealm),
VendorID: datatype.Unsigned32(vendorId),
ProductName: datatype.UTF8String(productName),
FirmwareRevision: datatype.Unsigned32(firmwareRev),
HostIPAddresses: []datatype.Address{datatype.Address(addr)},
}
dSM := sm.New(cfg)
go func() {
@@ -59,7 +61,7 @@ func NewDiameterClient(addr, originHost, originRealm string, vendorId int, produ
return nil, err
}
}
conn, err := cli.Dial(addr)
conn, err := cli.DialNetwork(network, addr)
if err != nil {
return nil, err
}

View File

@@ -372,6 +372,7 @@ const CGRATES_CFG_JSON = `
"diameter_agent": {
"enabled": false, // enables the diameter agent: <true|false>
"listen": "127.0.0.1:3868", // address where to listen for diameter requests <x.y.z.y:1234>
"network": "tcp", // network type for diameter <tcp|sctp>
"dictionaries_path": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load
"sessions_conns": [
{"address": "*internal"} // connection towards SessionService

View File

@@ -593,6 +593,7 @@ func TestDiameterAgentJsonCfg(t *testing.T) {
eCfg := &DiameterAgentJsonCfg{
Enabled: utils.BoolPointer(false),
Listen: utils.StringPointer("127.0.0.1:3868"),
Network: utils.StringPointer("tcp"),
Dictionaries_path: utils.StringPointer("/usr/share/cgrates/diameter/dict/"),
Sessions_conns: &[]*HaPoolJsonCfg{
{

View File

@@ -925,6 +925,7 @@ func TestCgrCfgJSONDefaultsDiameterAgentCfg(t *testing.T) {
testDA := &DiameterAgentCfg{
Enabled: false,
Listen: "127.0.0.1:3868",
Network: "tcp",
DictionariesPath: "/usr/share/cgrates/diameter/dict/",
SessionSConns: []*HaPoolConfig{
{Address: "*internal"}},

View File

@@ -24,6 +24,7 @@ import (
type DiameterAgentCfg struct {
Enabled bool // enables the diameter agent: <true|false>
Network string // network for diameter <tcp|sctp>
Listen string // address where to listen for diameter requests <x.y.z.y:1234>
DictionariesPath string
SessionSConns []*HaPoolConfig // connections towards SMG component
@@ -45,6 +46,9 @@ func (da *DiameterAgentCfg) loadFromJsonCfg(jsnCfg *DiameterAgentJsonCfg) (err e
if jsnCfg.Listen != nil {
da.Listen = *jsnCfg.Listen
}
if jsnCfg.Network != nil {
da.Network = *jsnCfg.Network
}
if jsnCfg.Dictionaries_path != nil {
da.DictionariesPath = *jsnCfg.Dictionaries_path
}

View File

@@ -336,6 +336,7 @@ type OsipsConnJsonCfg struct {
type DiameterAgentJsonCfg struct {
Enabled *bool // enables the diameter agent: <true|false>
Listen *string // address where to listen for diameter requests <x.y.z.y:1234>
Network *string // network for diameter <tcp|sctp>
Dictionaries_path *string // path towards additional dictionaries
Sessions_conns *[]*HaPoolJsonCfg // Connections towards SessionS
Origin_host *string