diff --git a/mc/Diameter.package/AVPBaseType.class/instance/avpType.st b/mc/Diameter.package/AVPBaseType.class/instance/avpType.st new file mode 100644 index 0000000..28c139e --- /dev/null +++ b/mc/Diameter.package/AVPBaseType.class/instance/avpType.st @@ -0,0 +1,3 @@ +as yet unclassified +avpType + ^ avpType \ No newline at end of file diff --git a/mc/Diameter.package/AVPBuilderTrait.trait/properties.json b/mc/Diameter.package/AVPBuilderTrait.trait/properties.json index b18a179..cf00711 100644 --- a/mc/Diameter.package/AVPBuilderTrait.trait/properties.json +++ b/mc/Diameter.package/AVPBuilderTrait.trait/properties.json @@ -1,5 +1,7 @@ { - "name" : "AVPBuilderTrait", "commentStamp" : "", - "category" : "Diameter-AVP-Base" + "classinstvars" : [ ], + "category" : "Diameter-AVP-Base", + "instvars" : [ ], + "name" : "AVPBuilderTrait" } \ No newline at end of file diff --git a/mc/Diameter.package/AVPCollection.class/README.md b/mc/Diameter.package/AVPCollection.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/mc/Diameter.package/AVPCollection.class/class/on.with..st b/mc/Diameter.package/AVPCollection.class/class/on.with..st new file mode 100644 index 0000000..10abeda --- /dev/null +++ b/mc/Diameter.package/AVPCollection.class/class/on.with..st @@ -0,0 +1,5 @@ +instance creation +on: aPath with: someAVPs + ^ self new + initializeOn: aPath with: someAVPs; + yourself \ No newline at end of file diff --git a/mc/Diameter.package/AVPCollection.class/instance/^slash.st b/mc/Diameter.package/AVPCollection.class/instance/^slash.st new file mode 100644 index 0000000..f68782b --- /dev/null +++ b/mc/Diameter.package/AVPCollection.class/instance/^slash.st @@ -0,0 +1,6 @@ +accessing +/ aName + ^ elements + detect: [ :avp | avp avpData avpType avpName = path ] + ifFound: [ :element | element avpData / aName ] + ifNone: [ nil ] \ No newline at end of file diff --git a/mc/Diameter.package/AVPCollection.class/instance/initializeOn.with..st b/mc/Diameter.package/AVPCollection.class/instance/initializeOn.with..st new file mode 100644 index 0000000..dafc051 --- /dev/null +++ b/mc/Diameter.package/AVPCollection.class/instance/initializeOn.with..st @@ -0,0 +1,4 @@ +initialization +initializeOn: aPath with: someAVPs + path := aPath. + elements := someAVPs \ No newline at end of file diff --git a/mc/Diameter.package/AVPCollection.class/instance/printOn..st b/mc/Diameter.package/AVPCollection.class/instance/printOn..st new file mode 100644 index 0000000..6128933 --- /dev/null +++ b/mc/Diameter.package/AVPCollection.class/instance/printOn..st @@ -0,0 +1,4 @@ +initialization +printOn: aStream + super printOn: aStream. + elements printElementsOn: aStream. diff --git a/mc/Diameter.package/AVPCollection.class/instance/size.st b/mc/Diameter.package/AVPCollection.class/instance/size.st new file mode 100644 index 0000000..01fb32e --- /dev/null +++ b/mc/Diameter.package/AVPCollection.class/instance/size.st @@ -0,0 +1,4 @@ +accessing +size + + ^ elements size \ No newline at end of file diff --git a/mc/Diameter.package/AVPCollection.class/instance/value.st b/mc/Diameter.package/AVPCollection.class/instance/value.st new file mode 100644 index 0000000..3c0a708 --- /dev/null +++ b/mc/Diameter.package/AVPCollection.class/instance/value.st @@ -0,0 +1,4 @@ +accessing +value + + ^ elements \ No newline at end of file diff --git a/mc/Diameter.package/AVPCollection.class/properties.json b/mc/Diameter.package/AVPCollection.class/properties.json new file mode 100644 index 0000000..7fb048e --- /dev/null +++ b/mc/Diameter.package/AVPCollection.class/properties.json @@ -0,0 +1,14 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Diameter-Parser", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "elements", + "path" + ], + "name" : "AVPCollection", + "type" : "normal" +} \ No newline at end of file diff --git a/mc/Diameter.package/AVPGrouped.class/class/decodeData.type..st b/mc/Diameter.package/AVPGrouped.class/class/decodeData.type..st index ec1fc80..1f4b17c 100644 --- a/mc/Diameter.package/AVPGrouped.class/class/decodeData.type..st +++ b/mc/Diameter.package/AVPGrouped.class/class/decodeData.type..st @@ -1,13 +1,14 @@ as yet unclassified -decodeData: aByteArray type: aType +decodeData: aByteArray type: aType | stream parsedAvps | stream := aByteArray readStream. + parsedAvps := OrderedCollection new. - [ stream atEnd ] whileFalse: [ - parsedAvps add: (AVPHeader parseFrom: stream)]. - aType avps do: [:type | - type parse: parsedAvps]. - ^self new + [ stream atEnd ] + whileFalse: [ + parsedAvps add: (AVPHeader parseFrom: stream) ]. + aType avps do: [ :type | type parse: parsedAvps ]. + ^ self new avpType: aType; contents: parsedAvps; - yourself. \ No newline at end of file + yourself \ No newline at end of file diff --git a/mc/Diameter.package/AVPGrouped.class/instance/^slash.st b/mc/Diameter.package/AVPGrouped.class/instance/^slash.st new file mode 100644 index 0000000..b9798c5 --- /dev/null +++ b/mc/Diameter.package/AVPGrouped.class/instance/^slash.st @@ -0,0 +1,3 @@ +as yet unclassified +/ aName + ^ self avpsPath / aName \ No newline at end of file diff --git a/mc/Diameter.package/AVPGrouped.class/instance/avpsPath.st b/mc/Diameter.package/AVPGrouped.class/instance/avpsPath.st new file mode 100644 index 0000000..38e1b69 --- /dev/null +++ b/mc/Diameter.package/AVPGrouped.class/instance/avpsPath.st @@ -0,0 +1,4 @@ +as yet unclassified +avpsPath + + ^ AVPPath on: self avpHeaders \ No newline at end of file diff --git a/mc/Diameter.package/AVPHeader.class/README.md b/mc/Diameter.package/AVPHeader.class/README.md index 42f5aac..7587442 100644 --- a/mc/Diameter.package/AVPHeader.class/README.md +++ b/mc/Diameter.package/AVPHeader.class/README.md @@ -1,3 +1,5 @@ +Attribute-Value-Structure (AVP) + I represent the "4.1. AVP Header" DIAMETER RFC 6733 0 1 2 3 diff --git a/mc/Diameter.package/AVPHeader.class/instance/^slash.st b/mc/Diameter.package/AVPHeader.class/instance/^slash.st new file mode 100644 index 0000000..6e9ded6 --- /dev/null +++ b/mc/Diameter.package/AVPHeader.class/instance/^slash.st @@ -0,0 +1,3 @@ +as yet unclassified +/ aName + ^ avpData / aName \ No newline at end of file diff --git a/mc/Diameter.package/AVPHeader.class/instance/parseData..st b/mc/Diameter.package/AVPHeader.class/instance/parseData..st index ced7f19..869d2d0 100644 --- a/mc/Diameter.package/AVPHeader.class/instance/parseData..st +++ b/mc/Diameter.package/AVPHeader.class/instance/parseData..st @@ -3,14 +3,12 @@ parseData: aReadStream | len fixedLength rest | fixedLength := 8. len := aReadStream uint24. - - avpFlagVendor ifTrue: [ - fixedLength := fixedLength + 4. - avpVendorId := aReadStream uint32]. - + avpFlagVendor + ifTrue: [ fixedLength := fixedLength + 4. + avpVendorId := aReadStream uint32 ]. avpData := aReadStream next: len - fixedLength. "Deal with padding to have it 32bit aligned.." rest := len \\ 4. - rest = 0 ifFalse: [ - aReadStream next: 4 - rest]. \ No newline at end of file + rest = 0 + ifFalse: [ aReadStream next: 4 - rest ] \ No newline at end of file diff --git a/mc/Diameter.package/AVPHeader.class/instance/printOn..st b/mc/Diameter.package/AVPHeader.class/instance/printOn..st index d6297f8..460b0fc 100644 --- a/mc/Diameter.package/AVPHeader.class/instance/printOn..st +++ b/mc/Diameter.package/AVPHeader.class/instance/printOn..st @@ -1,6 +1,3 @@ printing printOn: aStream - aStream - nextPutAll: self class name; - nextPutAll: ' '; - nextPutAll: avpCode displayString \ No newline at end of file + aStream nextPutAll: 'AVP(' , avpCode displayString , ')' \ No newline at end of file diff --git a/mc/Diameter.package/AVPHeader.class/instance/value.st b/mc/Diameter.package/AVPHeader.class/instance/value.st new file mode 100644 index 0000000..8c520ee --- /dev/null +++ b/mc/Diameter.package/AVPHeader.class/instance/value.st @@ -0,0 +1,4 @@ +accessing +value + + ^ avpData value \ No newline at end of file diff --git a/mc/Diameter.package/AVPHeader.class/properties.json b/mc/Diameter.package/AVPHeader.class/properties.json index b4b8f06..3eed336 100644 --- a/mc/Diameter.package/AVPHeader.class/properties.json +++ b/mc/Diameter.package/AVPHeader.class/properties.json @@ -1,5 +1,5 @@ { - "commentStamp" : "HolgerHansPeterFreyther 5/19/2018 12:40", + "commentStamp" : "sebastiansastre 12/5/2019 14:59", "super" : "Object", "category" : "Diameter-AVP-Base", "classinstvars" : [ ], diff --git a/mc/Diameter.package/AVPHeaderBuilder.class/instance/authApplicationIdAVPHeader..st b/mc/Diameter.package/AVPHeaderBuilder.class/instance/authApplicationIdAVPHeader..st index ccb9eac..8d36fb1 100644 --- a/mc/Diameter.package/AVPHeaderBuilder.class/instance/authApplicationIdAVPHeader..st +++ b/mc/Diameter.package/AVPHeaderBuilder.class/instance/authApplicationIdAVPHeader..st @@ -1,5 +1,6 @@ accessing authApplicationIdAVPHeader: anInteger + ^AVPHeader new avpCode: 258; avpFlagMandatory: true; diff --git a/mc/Diameter.package/AVPPath.class/README.md b/mc/Diameter.package/AVPPath.class/README.md new file mode 100644 index 0000000..e69de29 diff --git a/mc/Diameter.package/AVPPath.class/class/on..st b/mc/Diameter.package/AVPPath.class/class/on..st new file mode 100644 index 0000000..8da05be --- /dev/null +++ b/mc/Diameter.package/AVPPath.class/class/on..st @@ -0,0 +1,3 @@ +instance creation +on: someAVPs + ^ self on: '.' with: someAVPs \ No newline at end of file diff --git a/mc/Diameter.package/AVPPath.class/class/on.with..st b/mc/Diameter.package/AVPPath.class/class/on.with..st new file mode 100644 index 0000000..75b5655 --- /dev/null +++ b/mc/Diameter.package/AVPPath.class/class/on.with..st @@ -0,0 +1,5 @@ +instance creation +on: aName with: someAVPs + ^ self new + initializeOn: aName with: someAVPs; + yourself \ No newline at end of file diff --git a/mc/Diameter.package/AVPPath.class/instance/^slash.st b/mc/Diameter.package/AVPPath.class/instance/^slash.st new file mode 100644 index 0000000..3a0aa62 --- /dev/null +++ b/mc/Diameter.package/AVPPath.class/instance/^slash.st @@ -0,0 +1,5 @@ +initialization +/ aName + ^ AVPCollection + on: aName + with: (roots select: [ :avp | avp avpData avpType avpName = aName ]) \ No newline at end of file diff --git a/mc/Diameter.package/AVPPath.class/instance/initializeOn.with..st b/mc/Diameter.package/AVPPath.class/instance/initializeOn.with..st new file mode 100644 index 0000000..a98805c --- /dev/null +++ b/mc/Diameter.package/AVPPath.class/instance/initializeOn.with..st @@ -0,0 +1,4 @@ +initialization +initializeOn: aName with: someAVPs + path := aName. + roots := someAVPs \ No newline at end of file diff --git a/mc/Diameter.package/AVPPath.class/instance/printOn..st b/mc/Diameter.package/AVPPath.class/instance/printOn..st new file mode 100644 index 0000000..4589f55 --- /dev/null +++ b/mc/Diameter.package/AVPPath.class/instance/printOn..st @@ -0,0 +1,7 @@ +as yet unclassified +printOn: aStream + super printOn: aStream. + aStream + nextPutAll: '('; + nextPutAll: path displayString, ' ', roots asArray displayString; + nextPutAll: ')' \ No newline at end of file diff --git a/mc/Diameter.package/AVPPath.class/properties.json b/mc/Diameter.package/AVPPath.class/properties.json new file mode 100644 index 0000000..1a30bca --- /dev/null +++ b/mc/Diameter.package/AVPPath.class/properties.json @@ -0,0 +1,14 @@ +{ + "commentStamp" : "", + "super" : "Object", + "category" : "Diameter-Parser", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "roots", + "path" + ], + "name" : "AVPPath", + "type" : "normal" +} \ No newline at end of file diff --git a/mc/Diameter.package/AVPPathTest.class/README.md b/mc/Diameter.package/AVPPathTest.class/README.md new file mode 100644 index 0000000..573d0ec --- /dev/null +++ b/mc/Diameter.package/AVPPathTest.class/README.md @@ -0,0 +1 @@ +Coverage fot the AVP querying feature \ No newline at end of file diff --git a/mc/Diameter.package/AVPPathTest.class/class/s6aParser.st b/mc/Diameter.package/AVPPathTest.class/class/s6aParser.st new file mode 100644 index 0000000..6db0077 --- /dev/null +++ b/mc/Diameter.package/AVPPathTest.class/class/s6aParser.st @@ -0,0 +1,11 @@ +accessing +s6aParser + ^ OTPDiaParser new + moduleSet: + (Dictionary new + at: 'ietf-avps' put: 'src/diameter/contrib/specs/ietf-avps.dia'; + at: '3gpp-avps' put: 'src/diameter/contrib/specs/3gpp-avps.dia'; + at: '3gpp2-avps' put: 'src/diameter/contrib/specs/3gpp2-avps.dia'; + at: 'etsi-avps' put: 'src/diameter/contrib/specs/etsi-avps.dia'; + yourself); + parseModule: 'src/diameter/contrib/specs/S6a.dia' asFileReference contents \ No newline at end of file diff --git a/mc/Diameter.package/AVPPathTest.class/class/updateLocationAnswerSample.st b/mc/Diameter.package/AVPPathTest.class/class/updateLocationAnswerSample.st new file mode 100644 index 0000000..b606d64 --- /dev/null +++ b/mc/Diameter.package/AVPPathTest.class/class/updateLocationAnswerSample.st @@ -0,0 +1,5 @@ +accessing +updateLocationAnswerSample + ^ ByteArray + readHexFrom: + '010001704000013e0100002300476cc6ee07e32f00000107400000456d6d65322e6570632e6d6e633030362e6d63633236302e336770706e6574776f726b2e6f72673b303b313436323434303832363b3237363735313135320000000000010c4000000c000007d1000001154000000c000000010000010840000030686c726873732e6570632e6d6e633834302e6d63633331302e336770706e6574776f726b2e6f726700000128400000296570632e6d6e633834302e6d63633331302e336770706e6574776f726b2e6f726700000000000585c00000a0000028af00000586c0000094000028af0000058bc0000010000028af00000001000005a7c000001c000028afb6ac653f84a0a0cdbdd8059584cb0f30000005a8c0000014000028af2f71dd06cdd8f4c9000005a9c000001c000028af561871ca8668b9b9a61fd592699b1187000005aac000002c000028af7535b3127f09d9b701d437e3fdbccb67ee7e82dcadf00eb2d01999c4681ce10f' \ No newline at end of file diff --git a/mc/Diameter.package/AVPPathTest.class/class/updateLocationRequestSample.st b/mc/Diameter.package/AVPPathTest.class/class/updateLocationRequestSample.st new file mode 100644 index 0000000..a8aeff7 --- /dev/null +++ b/mc/Diameter.package/AVPPathTest.class/class/updateLocationRequestSample.st @@ -0,0 +1,5 @@ +accessing +updateLocationRequestSample + ^ ByteArray + readHexFrom: + '01000214c000013e0100002300476cc6ee07e32f00000107400000456d6d65322e6570632e6d6e633030362e6d63633236302e336770706e6574776f726b2e6f72673b303b313436323434303832363b32373637353131353200000000000104400000200000010a4000000c000028af000001024000000c01000023000001084000002e6d6d65322e6570632e6d6e633030362e6d63633236302e336770706e6574776f726b2e6f7267000000000128400000296570632e6d6e633030362e6d63633236302e336770706e6574776f726b2e6f72670000000000012540000030686c726873732e6570632e6d6e633834302e6d63633331302e336770706e6574776f726b2e6f72670000011b400000296570632e6d6e633834302e6d63633331302e336770706e6574776f726b2e6f726700000000000001400000173331303834303830303030323034320000000580c000002c000028af00000582c0000010000028af0000000100000584c0000010000028af000000010000057fc000000f000028af62f06000000001154000000c000000010000011a400000306b61746473722e6570632e6d6e633030362e6d63633236302e336770706e6574776f726b2e6f72670000011a4000001c647261616d733130312e6962617369732e6772780000011a4000001b6472616e6c30312e636f6d666f6e652e636f6d000000011a400000156665702d702d736374705f7568000000' \ No newline at end of file diff --git a/mc/Diameter.package/AVPPathTest.class/instance/testULAnswerQuerying.st b/mc/Diameter.package/AVPPathTest.class/instance/testULAnswerQuerying.st new file mode 100644 index 0000000..3c57eff --- /dev/null +++ b/mc/Diameter.package/AVPPathTest.class/instance/testULAnswerQuerying.st @@ -0,0 +1,14 @@ +tests +testULAnswerQuerying + | message | + message := DiameterMessage + decode: self class updateLocationAnswerSample. + self class s6aParser decode: message. + message decodeAll. + self + assert: (message avpsPath / 'Auth-Session-State') value first value = 1. + self + assert: + (message avpsPath / 'Authentication-Info' / 'E-UTRAN-Vector' / 'AUTN') + value first value + = #[86 24 113 202 134 104 185 185 166 31 213 146 105 155 17 135] \ No newline at end of file diff --git a/mc/Diameter.package/AVPPathTest.class/instance/testULRNestedDecode.st b/mc/Diameter.package/AVPPathTest.class/instance/testULRNestedDecode.st new file mode 100644 index 0000000..961e848 --- /dev/null +++ b/mc/Diameter.package/AVPPathTest.class/instance/testULRNestedDecode.st @@ -0,0 +1,18 @@ +tests +testULRNestedDecode + | message | + message := DiameterMessage + decode: self class updateLocationRequestSample. + self class s6aParser decode: message. + message decodeAll. + self assert: (message avpsPath / 'Route-Record') size = 4. + self + assert: + (message avpsPath / 'Route-Record') value first value + = 'katdsr.epc.mnc006.mcc260.3gppnetwork.org'. + self + assert: (message avpsPath / 'User-Name') value first value = '310840800002042'. + self + assert: + (message avpsPath / 'Visited-PLMN-Id') value first value + = #[98 240 96] \ No newline at end of file diff --git a/mc/Diameter.package/AVPPathTest.class/instance/testULRequestQuerying.st b/mc/Diameter.package/AVPPathTest.class/instance/testULRequestQuerying.st new file mode 100644 index 0000000..206d566 --- /dev/null +++ b/mc/Diameter.package/AVPPathTest.class/instance/testULRequestQuerying.st @@ -0,0 +1,20 @@ +tests +testULRequestQuerying + | message | + message := DiameterMessage + decode: self class updateLocationRequestSample. + self class s6aParser decode: message. + message decodeAll. + self assert: (message avpsPath / 'Route-Record') size = 4. + self + assert: + (message avpsPath / 'Route-Record') value first value + = 'katdsr.epc.mnc006.mcc260.3gppnetwork.org'. + self + assert: (message avpsPath / 'User-Name') value first value = '310840800002042'. + self + assert: + (message avpsPath / 'Visited-PLMN-Id') value first value + = #[98 240 96]. + + self assert: (message avpsPath / 'Requested-EUTRAN-Authentication-Info' / 'Number-Of-Requested-Vectors') value first value = 1 \ No newline at end of file diff --git a/mc/Diameter.package/AVPPathTest.class/properties.json b/mc/Diameter.package/AVPPathTest.class/properties.json new file mode 100644 index 0000000..62bfb54 --- /dev/null +++ b/mc/Diameter.package/AVPPathTest.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "sebastiansastre 12/11/2019 10:16", + "super" : "TestCase", + "category" : "Diameter-Tests", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "AVPPathTest", + "type" : "normal" +} \ No newline at end of file diff --git a/mc/Diameter.package/AVPType.class/instance/newHeader.st b/mc/Diameter.package/AVPType.class/instance/newHeader.st index 987c081..b0b58be 100644 --- a/mc/Diameter.package/AVPType.class/instance/newHeader.st +++ b/mc/Diameter.package/AVPType.class/instance/newHeader.st @@ -1,5 +1,6 @@ as yet unclassified newHeader + ^AVPHeader new avpCode: avpCode; avpFlagProtected: false; diff --git a/mc/Diameter.package/DiameterMessage.class/instance/applicationId..st b/mc/Diameter.package/DiameterMessage.class/instance/applicationId..st index 9fca237..db31587 100644 --- a/mc/Diameter.package/DiameterMessage.class/instance/applicationId..st +++ b/mc/Diameter.package/DiameterMessage.class/instance/applicationId..st @@ -1,3 +1,13 @@ as yet unclassified -applicationId: anInteger +applicationId: anInteger + " Application-ID + + Application-ID is four octets and is used to identify for which + application the message is applicable. The application can be an + authentication application, an accounting application, or a + vendor-specific application. + + The value of the Application-ID field in the header MUST be the + same as any relevant Application-Id AVPs contained in the message." + applicationId := anInteger \ No newline at end of file diff --git a/mc/Diameter.package/DiameterMessage.class/instance/avps..st b/mc/Diameter.package/DiameterMessage.class/instance/avps..st new file mode 100644 index 0000000..fc36d3e --- /dev/null +++ b/mc/Diameter.package/DiameterMessage.class/instance/avps..st @@ -0,0 +1,3 @@ +as yet unclassified +avps: someAVPs + avps := someAVPs \ No newline at end of file diff --git a/mc/Diameter.package/DiameterMessage.class/instance/avpsPath.st b/mc/Diameter.package/DiameterMessage.class/instance/avpsPath.st new file mode 100644 index 0000000..bb60f75 --- /dev/null +++ b/mc/Diameter.package/DiameterMessage.class/instance/avpsPath.st @@ -0,0 +1,4 @@ +accessing +avpsPath + + ^ AVPPath on: avps \ No newline at end of file diff --git a/mc/Diameter.package/DiameterMessage.class/instance/commandCode..st b/mc/Diameter.package/DiameterMessage.class/instance/commandCode..st index f5fb567..832daee 100644 --- a/mc/Diameter.package/DiameterMessage.class/instance/commandCode..st +++ b/mc/Diameter.package/DiameterMessage.class/instance/commandCode..st @@ -1,3 +1,11 @@ as yet unclassified -commandCode: anInteger +commandCode: anInteger + " Command Code + + The Command Code field is three octets and is used in order to + communicate the command associated with the message. The 24-bit + address space is managed by IANA (see Section 3.1). Command Code + values 16,777,214 and 16,777,215 (hexadecimal values FFFFFE- + FFFFFF) are reserved for experimental use (see Section 11.2)." + commandCode := anInteger \ No newline at end of file diff --git a/mc/Diameter.package/DiameterMessage.class/instance/endToEndId..st b/mc/Diameter.package/DiameterMessage.class/instance/endToEndId..st index 4fb4a72..415df8a 100644 --- a/mc/Diameter.package/DiameterMessage.class/instance/endToEndId..st +++ b/mc/Diameter.package/DiameterMessage.class/instance/endToEndId..st @@ -1,3 +1,20 @@ as yet unclassified -endToEndId: anInteger - endToEndId := anInteger. \ No newline at end of file +endToEndId: anInteger + "End-to-End Identifier + + The End-to-End Identifier is an unsigned 32-bit integer field (in + network byte order) that is used to detect duplicate messages. + Upon reboot, implementations MAY set the high order 12 bits to + contain the low order 12 bits of current time, and the low order + 20 bits to a random value. Senders of request messages MUST + insert a unique identifier on each message. The identifier MUST + remain locally unique for a period of at least 4 minutes, even + across reboots. The originator of an answer message MUST ensure + that the End-to-End Identifier field contains the same value that + was found in the corresponding request. The End-to-End Identifier + MUST NOT be modified by Diameter agents of any kind. The + combination of the Origin-Host AVP (Section 6.3) and this field is + used to detect duplicates. Duplicate requests SHOULD cause the + same answer to be transmitted (modulo the Hop-by-Hop Identifier" + + endToEndId := anInteger \ No newline at end of file diff --git a/mc/Diameter.package/DiameterMessage.class/instance/hopByHopId..st b/mc/Diameter.package/DiameterMessage.class/instance/hopByHopId..st index 4948677..de23fa3 100644 --- a/mc/Diameter.package/DiameterMessage.class/instance/hopByHopId..st +++ b/mc/Diameter.package/DiameterMessage.class/instance/hopByHopId..st @@ -1,3 +1,17 @@ as yet unclassified -hopByHopId: anInteger +hopByHopId: anInteger + " Hop-by-Hop Identifier + + The Hop-by-Hop Identifier is an unsigned 32-bit integer field (in + network byte order) that aids in matching requests and replies. + The sender MUST ensure that the Hop-by-Hop Identifier in a request + is unique on a given connection at any given time, and it MAY + attempt to ensure that the number is unique across reboots. The + sender of an answer message MUST ensure that the Hop-by-Hop + Identifier field contains the same value that was found in the + corresponding request. The Hop-by-Hop Identifier is normally a + monotonically increasing number, whose start value was randomly + generated. An answer message that is received with an unknown + Hop-by-Hop Identifier MUST be discarded." + hopByHopId := anInteger \ No newline at end of file diff --git a/mc/Diameter.package/DiameterMessage.class/instance/messageType..st b/mc/Diameter.package/DiameterMessage.class/instance/messageType..st index c01b0bf..28f15ef 100644 --- a/mc/Diameter.package/DiameterMessage.class/instance/messageType..st +++ b/mc/Diameter.package/DiameterMessage.class/instance/messageType..st @@ -1,3 +1,4 @@ as yet unclassified messageType: aMessage - messageType := aMessage \ No newline at end of file + + messageType := aMessage. diff --git a/mc/Diameter.package/DiameterMessage.class/instance/parseAvps..st b/mc/Diameter.package/DiameterMessage.class/instance/parseAvps..st index 49d9575..20297fd 100644 --- a/mc/Diameter.package/DiameterMessage.class/instance/parseAvps..st +++ b/mc/Diameter.package/DiameterMessage.class/instance/parseAvps..st @@ -1,6 +1,5 @@ as yet unclassified parseAvps: aReadStream avps := OrderedCollection new. - [aReadStream atEnd] whileFalse: [ - avps add: (AVPHeader parseFrom: aReadStream). - ]. \ No newline at end of file + [ aReadStream atEnd ] + whileFalse: [ avps add: (AVPHeader parseFrom: aReadStream) ] \ No newline at end of file diff --git a/mc/Diameter.package/DiameterMessageType.class/instance/avps..st b/mc/Diameter.package/DiameterMessageType.class/instance/avps..st index 973d411..9b9e9d3 100644 --- a/mc/Diameter.package/DiameterMessageType.class/instance/avps..st +++ b/mc/Diameter.package/DiameterMessageType.class/instance/avps..st @@ -1,3 +1,4 @@ as yet unclassified avps: aCollection + avps := aCollection \ No newline at end of file diff --git a/mc/Diameter.package/OTPDiaModule.class/instance/findDescriptor.request..st b/mc/Diameter.package/OTPDiaModule.class/instance/findDescriptor.request..st index 1ac8cde..6c3d26e 100644 --- a/mc/Diameter.package/OTPDiaModule.class/instance/findDescriptor.request..st +++ b/mc/Diameter.package/OTPDiaModule.class/instance/findDescriptor.request..st @@ -1,6 +1,7 @@ as yet unclassified findDescriptor: aCommandCode request: isRequest - ^messages - detect: [:each | - ((each isRequest = isRequest) and: [(each diameterCode = aCommandCode)])] - ifNone: [NotFound signal: 'Command with code does not exist: ', aCommandCode displayString]. \ No newline at end of file + ^ messages + detect: + [ :each | each isRequest = isRequest and: [ each diameterCode = aCommandCode ] ] + ifNone: [ NotFound + signal: 'Command with code does not exist: ' , aCommandCode displayString ] \ No newline at end of file diff --git a/mc/Diameter.package/OTPDiaParser.class/instance/avpBaseTypeFor..st b/mc/Diameter.package/OTPDiaParser.class/instance/avpBaseTypeFor..st index 0bb2f30..dec7158 100644 --- a/mc/Diameter.package/OTPDiaParser.class/instance/avpBaseTypeFor..st +++ b/mc/Diameter.package/OTPDiaParser.class/instance/avpBaseTypeFor..st @@ -1,5 +1,6 @@ as yet unclassified avpBaseTypeFor: aString + aString = 'UTF8String' ifTrue: [ ^AVPUTF8String]. aString = 'OctetString' ifTrue: [ diff --git a/mc/Diameter.package/TRFC6733Parser.trait/properties.json b/mc/Diameter.package/TRFC6733Parser.trait/properties.json index 432da25..e9c7b8c 100644 --- a/mc/Diameter.package/TRFC6733Parser.trait/properties.json +++ b/mc/Diameter.package/TRFC6733Parser.trait/properties.json @@ -1,5 +1,7 @@ { - "name" : "TRFC6733Parser", "commentStamp" : "", - "category" : "Diameter-Parser" + "classinstvars" : [ ], + "category" : "Diameter-Parser", + "instvars" : [ ], + "name" : "TRFC6733Parser" } \ No newline at end of file