free5gc-cli icon indicating copy to clipboard operation
free5gc-cli copied to clipboard

Update to latest version of free5GC v3.0.5

Open shynuu opened this issue 5 years ago • 1 comments

shynuu avatar Feb 02 '21 22:02 shynuu

Hi, Thank you for this tool. I have one question. I want to add new IE. For example, RAT-Information IE in NGSetupRequest. I added following lines in files:

/free5gc-cli/lib/ngap/ngapType/ProtocolExtensionField.go

type SupportedTAItemExtIEs struct {
        Id             ProtocolExtensionID
        Criticality    Criticality
        ExtensionValue SupportedTAItemExtIEsExtensionValue `aper:"openType,referenceFieldName:Id"`
}

const (
        SupportedTAItemExtIEsPresentNothing int = iota /* No components present */
        SupportedTAItemExtIEsPresentRATInformation
)

type SupportedTAItemExtIEsExtensionValue struct {
        Present int
        RATInformation   *RATInformation  `aper:"referenceFieldValue:179"`
}

/free5gc-cli/lib/ngap/ngapType/ProtocolExtensionID.go

package ngapType

// Need to import "free5gc-cli/lib/aper" if it uses "aper"

type ProtocolExtensionID struct {
        ExtensionValue int64 `aper:"valueLB:0,valueUB:65535"`
}

const ProtocolExtensionIDRATInformation int64 = 179

Created for test file /free5gc-cli/lib/ngap/ngapType/RATInformation.go

package ngapType

import "free5gc-cli/lib/aper"

// Need to import "free5gc-cli/lib/aper" if it uses "aper"

const (
        RATInformationPresentnRMEO  aper.Enumerated = 0
        RATInformationPresentnRLEO  aper.Enumerated = 1
)

type RATInformation struct {
        Value aper.Enumerated `aper:"valueExt,valueLB:0,valueUB:1"`
}

And described this new IE in file /free5gc-cli/module/gnb/api/ngapTestpacket/ngap.go

//RATInformation
       is := ngapType.SupportedTAItemExtIEs{}
       is.Id.ExtensionValue = ngapType.ProtocolExtensionIDRATInformation
       is.Criticality.Value = ngapType.CriticalityPresentReject
       is.ExtensionValue.Present = ngapType.SupportedTAItemExtIEsPresentRATInformation
       is.ExtensionValue.RATInformation = new(ngapType.RATInformation)
       ratinformation := is.ExtensionValue.RATInformation
       ratinformation.Value = ngapType.RATInformationPresentnRLEO

RATInformation must include in IEExtensions in file /free5gc-cli/lib/ngap/ngapType/SupportedTAItem.go

package ngapType

// Need to import "free5gc-cli/lib/aper" if it uses "aper"

type SupportedTAItem struct {
        TAC               TAC
        BroadcastPLMNList BroadcastPLMNList
        IEExtensions      *ProtocolExtensionContainerSupportedTAItemExtIEs `aper:"optional"`
}

I did the above steps but the field RATInformation is not getting inserted into the package NGSetupRequest. Build created without errors. Could you help me with this problem? Maybe I'm doing something wrong or the current code does not provide for adding new IE in packets. Thank you in advance :-)

IgorLashin avatar May 02 '23 10:05 IgorLashin