mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-16 21:59:53 +05:00
Merge branch 'master' into hapool
This commit is contained in:
@@ -201,7 +201,7 @@ func TestDmtAgentSendCCRInit(t *testing.T) {
|
||||
time.Sleep(time.Duration(100) * time.Millisecond)
|
||||
var acnt *engine.Account
|
||||
attrs := &utils.AttrGetAccount{Tenant: "cgrates.org", Account: "1001"}
|
||||
eAcntVal := 9.5
|
||||
eAcntVal := 9.484
|
||||
if err := apierRpc.Call("ApierV2.GetAccount", attrs, &acnt); err != nil {
|
||||
t.Error(err)
|
||||
} else if acnt.BalanceMap[utils.MONETARY].GetTotalValue() != eAcntVal {
|
||||
@@ -232,7 +232,7 @@ func TestDmtAgentSendCCRUpdate(t *testing.T) {
|
||||
time.Sleep(time.Duration(100) * time.Millisecond)
|
||||
var acnt *engine.Account
|
||||
attrs := &utils.AttrGetAccount{Tenant: "cgrates.org", Account: "1001"}
|
||||
eAcntVal := 9.25
|
||||
eAcntVal := 9.214
|
||||
if err := apierRpc.Call("ApierV2.GetAccount", attrs, &acnt); err != nil {
|
||||
t.Error(err)
|
||||
} else if acnt.BalanceMap[utils.MONETARY].GetTotalValue() != eAcntVal {
|
||||
@@ -263,7 +263,7 @@ func TestDmtAgentSendCCRUpdate2(t *testing.T) {
|
||||
time.Sleep(time.Duration(100) * time.Millisecond)
|
||||
var acnt *engine.Account
|
||||
attrs := &utils.AttrGetAccount{Tenant: "cgrates.org", Account: "1001"}
|
||||
eAcntVal := 9.0
|
||||
eAcntVal := 8.944
|
||||
if err := apierRpc.Call("ApierV2.GetAccount", attrs, &acnt); err != nil {
|
||||
t.Error(err)
|
||||
} else if acnt.BalanceMap[utils.MONETARY].GetTotalValue() != eAcntVal {
|
||||
@@ -293,7 +293,7 @@ func TestDmtAgentSendCCRTerminate(t *testing.T) {
|
||||
time.Sleep(time.Duration(100) * time.Millisecond)
|
||||
var acnt *engine.Account
|
||||
attrs := &utils.AttrGetAccount{Tenant: "cgrates.org", Account: "1001"}
|
||||
eAcntVal := 9.2416
|
||||
eAcntVal := 9.205
|
||||
if err := apierRpc.Call("ApierV2.GetAccount", attrs, &acnt); err != nil {
|
||||
t.Error(err)
|
||||
} else if acnt.BalanceMap[utils.MONETARY].GetTotalValue() != eAcntVal { // Should also consider derived charges which double the cost of 6m10s - 2x0.7584
|
||||
|
||||
100
agents/libdmt.go
100
agents/libdmt.go
@@ -229,19 +229,11 @@ func (self *CCR) AsDiameterMessage() (*diam.Message, error) {
|
||||
if _, err := m.NewAVP("Event-Timestamp", avp.Mbit, 0, datatype.Time(self.EventTimestamp)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
subscriptionIdType, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Subscription-Id-Type")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
subscriptionIdData, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Subscription-Id-Data")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, subscriptionId := range self.SubscriptionId {
|
||||
if _, err := m.NewAVP("Subscription-Id", avp.Mbit, 0, &diam.GroupedAVP{
|
||||
AVP: []*diam.AVP{
|
||||
diam.NewAVP(subscriptionIdType.Code, avp.Mbit, 0, datatype.Enumerated(subscriptionId.SubscriptionIdType)),
|
||||
diam.NewAVP(subscriptionIdData.Code, avp.Mbit, 0, datatype.UTF8String(subscriptionId.SubscriptionIdData)),
|
||||
diam.NewAVP(450, avp.Mbit, 0, datatype.Enumerated(subscriptionId.SubscriptionIdType)), // Subscription-Id-Type
|
||||
diam.NewAVP(444, avp.Mbit, 0, datatype.UTF8String(subscriptionId.SubscriptionIdData)), // Subscription-Id-Data
|
||||
}}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -249,83 +241,27 @@ func (self *CCR) AsDiameterMessage() (*diam.Message, error) {
|
||||
if _, err := m.NewAVP("Service-Identifier", avp.Mbit, 0, datatype.Unsigned32(self.ServiceIdentifier)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ccTimeAvp, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "CC-Time")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if _, err := m.NewAVP("Requested-Service-Unit", avp.Mbit, 0, &diam.GroupedAVP{
|
||||
AVP: []*diam.AVP{
|
||||
diam.NewAVP(ccTimeAvp.Code, avp.Mbit, 0, datatype.Unsigned32(self.RequestedServiceUnit.CCTime))}}); err != nil {
|
||||
diam.NewAVP(420, avp.Mbit, 0, datatype.Unsigned32(self.RequestedServiceUnit.CCTime))}}); err != nil { // CC-Time
|
||||
return nil, err
|
||||
}
|
||||
inInformation, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "IN-Information")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
callingPartyAddress, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Calling-Party-Address")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
calledPartyAddress, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Called-Party-Address")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
realCalledNumber, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Real-Called-Number")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
chargeFlowType, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Charge-Flow-Type")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
callingVlrNumber, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Calling-Vlr-Number")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
callingCellIdOrSai, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Calling-CellID-Or-SAI")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
bearerCapability, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Bearer-Capability")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
callReferenceNumber, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Call-Reference-Number")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mscAddress, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "MSC-Address")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
timeZone, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Time-Zone")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
calledPartyNP, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "Called-Party-NP")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sspTime, err := m.Dictionary().FindAVP(m.Header.ApplicationID, "SSP-Time")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if _, err := m.NewAVP("Service-Information", avp.Mbit, 0, &diam.GroupedAVP{
|
||||
if _, err := m.NewAVP("Service-Information", avp.Mbit, 10415, &diam.GroupedAVP{
|
||||
AVP: []*diam.AVP{
|
||||
diam.NewAVP(inInformation.Code, avp.Mbit, 0, &diam.GroupedAVP{
|
||||
diam.NewAVP(20300, avp.Mbit, 20300, &diam.GroupedAVP{
|
||||
AVP: []*diam.AVP{
|
||||
diam.NewAVP(callingPartyAddress.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.CallingPartyAddress)),
|
||||
diam.NewAVP(calledPartyAddress.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.CalledPartyAddress)),
|
||||
diam.NewAVP(realCalledNumber.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.RealCalledNumber)),
|
||||
diam.NewAVP(chargeFlowType.Code, avp.Mbit, 0, datatype.Unsigned32(self.ServiceInformation.INInformation.ChargeFlowType)),
|
||||
diam.NewAVP(callingVlrNumber.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.CallingVlrNumber)),
|
||||
diam.NewAVP(callingCellIdOrSai.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.CallingCellIDOrSAI)),
|
||||
diam.NewAVP(bearerCapability.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.BearerCapability)),
|
||||
diam.NewAVP(callReferenceNumber.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.CallReferenceNumber)),
|
||||
diam.NewAVP(mscAddress.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.MSCAddress)),
|
||||
diam.NewAVP(timeZone.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.TimeZone)),
|
||||
diam.NewAVP(calledPartyNP.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.CalledPartyNP)),
|
||||
diam.NewAVP(sspTime.Code, avp.Mbit, 0, datatype.UTF8String(self.ServiceInformation.INInformation.SSPTime)),
|
||||
diam.NewAVP(831, avp.Mbit, 10415, datatype.UTF8String(self.ServiceInformation.INInformation.CallingPartyAddress)), // Calling-Party-Address
|
||||
diam.NewAVP(832, avp.Mbit, 10415, datatype.UTF8String(self.ServiceInformation.INInformation.CalledPartyAddress)), // Called-Party-Address
|
||||
diam.NewAVP(20327, avp.Mbit, 20300, datatype.UTF8String(self.ServiceInformation.INInformation.RealCalledNumber)), // Real-Called-Number
|
||||
diam.NewAVP(20339, avp.Mbit, 20300, datatype.Unsigned32(self.ServiceInformation.INInformation.ChargeFlowType)), // Charge-Flow-Type
|
||||
diam.NewAVP(20302, avp.Mbit, 20300, datatype.UTF8String(self.ServiceInformation.INInformation.CallingVlrNumber)), // Calling-Vlr-Number
|
||||
diam.NewAVP(20303, avp.Mbit, 20300, datatype.UTF8String(self.ServiceInformation.INInformation.CallingCellIDOrSAI)), // Calling-CellID-Or-SAI
|
||||
diam.NewAVP(20313, avp.Mbit, 20300, datatype.UTF8String(self.ServiceInformation.INInformation.BearerCapability)), // Bearer-Capability
|
||||
diam.NewAVP(20321, avp.Mbit, 20300, datatype.UTF8String(self.ServiceInformation.INInformation.CallReferenceNumber)), // Call-Reference-Number
|
||||
diam.NewAVP(20322, avp.Mbit, 20300, datatype.UTF8String(self.ServiceInformation.INInformation.MSCAddress)), // MSC-Address
|
||||
diam.NewAVP(20324, avp.Mbit, 20300, datatype.Unsigned32(self.ServiceInformation.INInformation.TimeZone)), // Time-Zone
|
||||
diam.NewAVP(20385, avp.Mbit, 20300, datatype.UTF8String(self.ServiceInformation.INInformation.CalledPartyNP)), // Called-Party-NP
|
||||
diam.NewAVP(20386, avp.Mbit, 20300, datatype.UTF8String(self.ServiceInformation.INInformation.SSPTime)), // SSP-Time
|
||||
},
|
||||
}),
|
||||
}}); err != nil {
|
||||
@@ -375,7 +311,7 @@ func (self *CCR) eventFieldValue(fldTpl utils.RSRFields) string {
|
||||
for i, val := range hierarchyPath {
|
||||
hpIf[i] = val
|
||||
}
|
||||
matchingAvps, err := self.diamMessage.FindAVPsWithPath(hpIf)
|
||||
matchingAvps, err := self.diamMessage.FindAVPsWithPath(hpIf, dict.UndefinedVendorID)
|
||||
if err != nil || len(matchingAvps) == 0 {
|
||||
utils.Logger.Warning(fmt.Sprintf("<Diameter> Cannot find AVP for field template with id: %s, ignoring.", rsrTpl.Id))
|
||||
continue // Filter not matching
|
||||
|
||||
@@ -489,9 +489,9 @@ func startCDRS(internalCdrSChan chan *engine.CdrServer, logDb engine.LogStorage,
|
||||
}
|
||||
|
||||
func startScheduler(internalSchedulerChan chan *scheduler.Scheduler, cacheDoneChan chan struct{}, ratingDb engine.RatingStorage, exitChan chan bool) {
|
||||
// Wait for cache to load data before starting
|
||||
cacheDone := <- cacheDoneChan
|
||||
cacheDoneChan <- cacheDone
|
||||
// Wait for cache to load data before starting
|
||||
cacheDone := <-cacheDoneChan
|
||||
cacheDoneChan <- cacheDone
|
||||
utils.Logger.Info("Starting CGRateS Scheduler.")
|
||||
sched := scheduler.NewScheduler()
|
||||
go reloadSchedulerSingnalHandler(sched, ratingDb)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
<diameter>
|
||||
<application id="4">
|
||||
<vendor id="2011" name="Huawei" />
|
||||
<avp name="IN-Information" code="20300" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="IN-Information" code="20300" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Grouped">
|
||||
<rule avp="Calling-Party-Address" required="false" max="1" />
|
||||
<rule avp="Called-Party-Address" required="false" max="1" />
|
||||
@@ -28,7 +28,7 @@
|
||||
<rule avp="Final-Unit-Tone-Indicator" required="false" max="1" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="MC-Information" code="29000" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="MC-Information" code="29000" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Grouped">
|
||||
<rule avp="TransactionId" required="false" max="1" />
|
||||
<rule avp="TransparentData" required="false" max="1" />
|
||||
@@ -36,89 +36,89 @@
|
||||
<rule avp="Recipient-Address" required="false" max="1" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="CallingPartyAddress" code="20336" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="CallingPartyAddress" code="20336" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="CalledPartyAddress" code="20337" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="CalledPartyAddress" code="20337" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Real-Called-Number" code="20327" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Real-Called-Number" code="20327" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Connect-Called-Number" code="20373" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Connect-Called-Number" code="20373" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Called-Party-NP" code="20385" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Called-Party-NP" code="20385" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="SSP-Time" code="20386" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="SSP-Time" code="20386" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="SSP-Time" code="20386" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="SSP-Time" code="20386" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Calling-Vlr-Number" code="20302" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Calling-Vlr-Number" code="20302" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Calling-CellID-Or-SAI" code="20303" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Calling-CellID-Or-SAI" code="20303" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Called-Vlr-Number" code="20305" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Called-Vlr-Number" code="20305" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Called-CellID-Or-SAI" code="20306" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Called-CellID-Or-SAI" code="20306" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Original-Called-Party-Id" code="20310" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Original-Called-Party-Id" code="20310" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Redirecting-Party-Id" code="20316" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Redirecting-Party-Id" code="20316" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Redirection-Reason" code="20363" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Redirection-Reason" code="20363" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Unsigned32" />
|
||||
</avp>
|
||||
<avp name="MSC-Address" code="20322" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="MSC-Address" code="20322" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Time-Zone" code="20324" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Time-Zone" code="20324" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Integer32" />
|
||||
</avp>
|
||||
<avp name="Bearer-Capability" code="20313" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Bearer-Capability" code="20313" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="OctetString" />
|
||||
</avp>
|
||||
<avp name="Charge-Flow-Type" code="20339" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Charge-Flow-Type" code="20339" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Unsigned32" />
|
||||
</avp>
|
||||
<avp name="Call-Reference-Number" code="20321" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Call-Reference-Number" code="20321" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="OctetString" />
|
||||
</avp>
|
||||
<avp name="Final-Unit-Tone-Indicator" code="20939" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Final-Unit-Tone-Indicator" code="20939" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Enumerated">
|
||||
<item code="0" name="NO_TONE" />
|
||||
<item code="1" name="TONE" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="Announcement-Data" code="20931" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Announcement-Data" code="20931" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Grouped">
|
||||
<rule avp="Announcement-Order" required="false" max="1" />
|
||||
<rule avp="Announcement-Id" required="false" max="1" />
|
||||
<rule avp="Announcement-Parameter" required="false" max="1" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="Announcement-Order" code="20932" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Announcement-Order" code="20932" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Unsigned32" />
|
||||
</avp>
|
||||
<avp name="Announcement-Id" code="20933" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Announcement-Id" code="20933" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Unsigned32" />
|
||||
</avp>
|
||||
<avp name="Announcement-Parameter" code="20934" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Announcement-Parameter" code="20934" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Grouped">
|
||||
<rule avp="Announcement-Parameter-Type" required="false" max="1" />
|
||||
<rule avp="Announcement-Parameter-Value" required="false" max="1" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="Announcement-Parameter-Type" code="20935" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Announcement-Parameter-Type" code="20935" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="Enumerated">
|
||||
<item code="0" name="integer" />
|
||||
<item code="1" name="number" />
|
||||
@@ -127,19 +127,19 @@
|
||||
<item code="4" name="price" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="Announcement-Parameter-Value" code="20936" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Announcement-Parameter-Value" code="20936" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Re-Routing-Number" code="20937" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Re-Routing-Number" code="20937" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="HighLayerCharacteristics" code="29001" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="HighLayerCharacteristics" code="29001" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="OctetString" />
|
||||
</avp>
|
||||
<avp name="MC-Service-Id" code="29002" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="MC-Service-Id" code="29002" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="TransparentData" code="29003" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="TransparentData" code="29003" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="20300">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
</application>
|
||||
|
||||
@@ -872,4 +872,4 @@
|
||||
<data type="Unsigned32" />
|
||||
</avp>
|
||||
</application>
|
||||
</diameter>
|
||||
</diameter>
|
||||
@@ -2,8 +2,8 @@
|
||||
<diameter>
|
||||
<application id="4">
|
||||
<vendor id="94" name="Nokia" />
|
||||
<avp name="Session-Start-Indicator" code="5105" must="V" may="P,M" must-not="-" may-encrypt="N">
|
||||
<avp name="Session-Start-Indicator" code="5105" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="94">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
</application>
|
||||
</diameter>
|
||||
</diameter>
|
||||
50
data/diameter/dict/huawei/vodafone.xml
Normal file
50
data/diameter/dict/huawei/vodafone.xml
Normal file
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<diameter>
|
||||
<application id="4">
|
||||
<vendor id="12645" name="Vodafone" />
|
||||
<avp name="Reporting-Reason" code="261" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="12645">
|
||||
<data type="Enumerated">
|
||||
<item code="0" name="THRESHOLD" />
|
||||
<item code="1" name="QHT" />
|
||||
<item code="2" name="FINAL" />
|
||||
<item code="3" name="QUOTA_EXHAUSTED" />
|
||||
<item code="4" name="VALIDITY_TIME" />
|
||||
<item code="5" name="OTHER_QUOTA_TYPE" />
|
||||
<item code="6" name="RATING_CONDITION_CHANGE" />
|
||||
<item code="7" name="FORCED_REAUTHORISATION" />
|
||||
<item code="8" name="POOL_EXHAUSTED" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="Quota-Holding-Time" code="258" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="12645">
|
||||
<data type="Unsigned32" />
|
||||
</avp>
|
||||
<avp name="Quota-Consumption-Time" code="257" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="12645">
|
||||
<data type="Unsigned32" />
|
||||
</avp>
|
||||
<avp name="Rulebase-Id" code="262" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="12645">
|
||||
<data type="UTF8String" />
|
||||
</avp>
|
||||
<avp name="Context-Type" code="256" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="12645">
|
||||
<data type="Enumerated">
|
||||
<item code="0" name="PRIMARY" />
|
||||
<item code="1" name="SECONDARY" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="Radio-Access-Technology" code="260" must="V" may="P,M" must-not="-" may-encrypt="N" vendor-id="12645">
|
||||
<data type="Enumerated">
|
||||
<item code="1" name="UTRAN" />
|
||||
<item code="2" name="GERAN" />
|
||||
<item code="3" name="WLAN" />
|
||||
</data>
|
||||
</avp>
|
||||
<avp name="User-Location-Information" code="267" must="M,V" may="-" must-not="-" may-encrypt="Y" vendor-id="12645">
|
||||
<data type="OctetString" />
|
||||
</avp>
|
||||
<avp name="Time-Of-First-Usage" code="263" must="M,V" may="-" must-not="-" may-encrypt="Y" vendor-id="12645">
|
||||
<data type="Time" />
|
||||
</avp>
|
||||
<avp name="Time-Of-Last-Usage" code="266" must="M,V" may="-" must-not="-" may-encrypt="Y" vendor-id="12645">
|
||||
<data type="Time" />
|
||||
</avp>
|
||||
</application>
|
||||
</diameter>
|
||||
@@ -955,7 +955,7 @@ func (ms *MongoStorage) GetLoadHistory(limit int, skipCache bool) (loadInsts []*
|
||||
cache2go.RemKey(utils.LOADINST_KEY)
|
||||
cache2go.Cache(utils.LOADINST_KEY, loadInsts)
|
||||
}
|
||||
return loadInsts, err
|
||||
return loadInsts, nil
|
||||
}
|
||||
|
||||
// Adds a single load instance to load history
|
||||
|
||||
Reference in New Issue
Block a user