mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Add sctop option for diameter ( "network":"option")
This commit is contained in:
committed by
Dan Christian Bogos
parent
cc49cffea8
commit
58a40bb1e8
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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{
|
||||
{
|
||||
|
||||
@@ -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"}},
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user