test

package module
v0.0.0-...-b93596c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2021 License: 0BSD Imports: 41 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NgRanStatusOffline = iota
	NgRanStatusOnline
)
View Source
const (
	NasUeStatusDeRegistration int = iota
	NasUeStatusRegistrationActivated
	NasUeStatusRegistrationIdle
)
View Source
const (
	PduSessionStatusInNoActivate int = iota
	PduSessionStatusInActivating
	PduSessionStatusInActivated
	PduSessionStatusInIdle
)
View Source
const (
	DataPduSessionId  uint8 = 10
	VoicePduSessionId uint8 = 11
)

Variables

This section is empty.

Functions

func DelAccessAndMobilitySubscriptionDataFromMongoDB

func DelAccessAndMobilitySubscriptionDataFromMongoDB(ueId string, servingPlmnId string)

func DelAmPolicyDataFromMongoDB

func DelAmPolicyDataFromMongoDB(ueId string)

func DelAuthSubscriptionToMongoDB

func DelAuthSubscriptionToMongoDB(ueId string)

func DelSessionManagementSubscriptionDataFromMongoDB

func DelSessionManagementSubscriptionDataFromMongoDB(ueId string, servingPlmnId string)

func DelSmPolicyDataFromMongoDB

func DelSmPolicyDataFromMongoDB(ueId string)

func DelSmfSelectionSubscriptionDataFromMongoDB

func DelSmfSelectionSubscriptionDataFromMongoDB(ueId string, servingPlmnId string)

func EncodeNasPduWithSecurity

func EncodeNasPduWithSecurity(ue *RanUeContext, pdu []byte, securityHeaderType uint8, securityContextAvailable, newSecurityContext bool) ([]byte, error)

func GetAccessAndMobilitySubscriptionDataFromMongoDB

func GetAccessAndMobilitySubscriptionDataFromMongoDB(ueId string, servingPlmnId string) (amData *models.AccessAndMobilitySubscriptionData)

func GetAmPolicyDataFromMongoDB

func GetAmPolicyDataFromMongoDB(ueId string) (amPolicyData *models.AmPolicyData)

func GetAuthSubscriptionFromMongoDB

func GetAuthSubscriptionFromMongoDB(ueId string) (authSubs *models.AuthenticationSubscription)

func GetHandoverNotify

func GetHandoverNotify(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error)

func GetHandoverRequestAcknowledge

func GetHandoverRequestAcknowledge(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error)

func GetHandoverRequired

func GetHandoverRequired(amfUeNgapID int64, ranUeNgapID int64, targetGNBID []byte, targetCellID []byte) ([]byte, error)

func GetInitialContextSetupResponse

func GetInitialContextSetupResponse(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error)

func GetInitialContextSetupResponseForServiceRequest

func GetInitialContextSetupResponseForServiceRequest(amfUeNgapID int64, ranUeNgapID int64, ipv4 string) ([]byte, error)

func GetInitialUEMessage

func GetInitialUEMessage(ranUeNgapID int64, nasPdu []byte, fiveGSTmsi string) ([]byte, error)

func GetNGSetupRequest

func GetNGSetupRequest(gnbId []byte, bitlength uint64, name string) ([]byte, error)

func GetNasPdu

func GetNasPdu(msg *ngapType.DownlinkNASTransport) (m *nas.Message)

func GetPDUSessionResourceReleaseResponse

func GetPDUSessionResourceReleaseResponse(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error)

func GetPDUSessionResourceSetupResponse

func GetPDUSessionResourceSetupResponse(amfUeNgapID int64, ranUeNgapID int64, ipv4 string) ([]byte, error)

func GetPDUSessionResourceSetupResponseForPaging

func GetPDUSessionResourceSetupResponseForPaging(amfUeNgapID int64, ranUeNgapID int64, ipv4 string) ([]byte, error)

func GetPathSwitchRequest

func GetPathSwitchRequest(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error)

func GetSessionManagementDataFromMongoDB

func GetSessionManagementDataFromMongoDB(ueId string, servingPlmnId string) (amData *models.SessionManagementSubscriptionData)

func GetSmPolicyDataFromMongoDB

func GetSmPolicyDataFromMongoDB(ueId string) (smPolicyData *models.SmPolicyData)

func GetSmfSelectionSubscriptionDataFromMongoDB

func GetSmfSelectionSubscriptionDataFromMongoDB(ueId string, servingPlmnId string) (smfSelData *models.SmfSelectionSubscriptionData)

func GetUEContextReleaseComplete

func GetUEContextReleaseComplete(amfUeNgapID int64, ranUeNgapID int64, pduSessionIDList []int64) ([]byte, error)

func GetUEContextReleaseRequest

func GetUEContextReleaseRequest(amfUeNgapID int64, ranUeNgapID int64, pduSessionIDList []int64) ([]byte, error)

func GetUplinkNASTransport

func GetUplinkNASTransport(amfUeNgapID, ranUeNgapID int64, nasPdu []byte) ([]byte, error)

func InsertAccessAndMobilitySubscriptionDataToMongoDB

func InsertAccessAndMobilitySubscriptionDataToMongoDB(ueId string, amData models.AccessAndMobilitySubscriptionData, servingPlmnId string)

func InsertAmPolicyDataToMongoDB

func InsertAmPolicyDataToMongoDB(ueId string, amPolicyData models.AmPolicyData)

func InsertAuthSubscriptionToMongoDB

func InsertAuthSubscriptionToMongoDB(ueId string, authSubs models.AuthenticationSubscription)

func InsertSessionManagementSubscriptionDataToMongoDB

func InsertSessionManagementSubscriptionDataToMongoDB(ueId string, servingPlmnId string, smData models.SessionManagementSubscriptionData)

func InsertSmPolicyDataToMongoDB

func InsertSmPolicyDataToMongoDB(ueId string, smPolicyData models.SmPolicyData)

func InsertSmfSelectionSubscriptionDataToMongoDB

func InsertSmfSelectionSubscriptionDataToMongoDB(ueId string, smfSelData models.SmfSelectionSubscriptionData, servingPlmnId string)

func NASDecode

func NASDecode(ue *RanUeContext, securityHeaderType uint8, payload []byte) (msg *nas.Message, err error)

func NASEncode

func NASEncode(ue *RanUeContext, msg *nas.Message, securityContextAvailable bool, newSecurityContext bool) (payload []byte, err error)

func NewSupi

func NewSupi() string

example: imsi-2089300007484

func TestNon3GPPUE

func TestNon3GPPUE(t *testing.T)

Types

type NasUeContext

type NasUeContext struct {
	// static data
	// todo
	// dynamic data
	Guti5G string         `json:"guti5G"`
	Status int            `json:"status"`
	Snssai *models.Snssai `json:"snssai"`
}

func NewNasUeContext

func NewNasUeContext(snssai *models.Snssai) *NasUeContext

type NgRan

type NgRan struct {
	// global configure data
	ServingPlmn        string         `json:"servingPlmn"`
	CurrentRanUeNgapId int64          `json:"currentRanUeNgapId"`
	InitAmfUeNgapId    int64          `json:"initAmfUeNgapId"`
	ServingSnssai      *models.Snssai `json:"servingSnssai"`
	// initAmfNgapId int64
	// supportedTai
	// supportedCells
	// static data
	N2Cfg struct {
		AmfIp     string `json:"amfIp"`
		AmfPort   int    `json:"amfPort"`
		NgRanIp   string `json:"ngRanIp"`
		NgRanPort int    `json:"ngRanPort"`
		GNBId     int    `json:"gnbId"`
		GNBName   string `json:"gnbName"`
	}
	N3Cfg struct {
		UpfIP       string `json:"upfIp"`
		UpfPort     int    `json:"upfPort"`
		NgRanUpIp   string `json:"ngRanUpIp"`
		NgRanUpPort int    `json:"ngRanUpPort"`
	}
	// dynamic data
	Status     int                   `json:"status"`
	SctpConn   *sctp.SCTPConn        `json:"sctpConn"`
	UpConn     *net.UDPConn          `json:"upConn"`
	UeContexts map[string]*UeContext `json:"ueContexts"` // key is supi
}

func NewNgRan

func NewNgRan() *NgRan

func (*NgRan) DeRegistration

func (ngRan *NgRan) DeRegistration(supi string) (err error)

func (*NgRan) EstablishPduSession

func (ngRan *NgRan) EstablishPduSession(supi string, pduSessionId uint8, dnn string) (err error)

func (*NgRan) ModifyPduSession

func (ngRan *NgRan) ModifyPduSession(supi string, pduSessionId uint8) error

func (*NgRan) N2Release

func (ngRan *NgRan) N2Release(supi string) (err error)

func (*NgRan) NGReset

func (ngRan *NgRan) NGReset() (err error)

func (*NgRan) NGSetup

func (ngRan *NgRan) NGSetup() (err error)

Connect to AMF, and setup NgAp connection and UPF tunnel

func (*NgRan) Registration

func (ngRan *NgRan) Registration(supi string) (err error)

supi example: "imsi-2089300007487"

func (*NgRan) ReleasePduSession

func (ngRan *NgRan) ReleasePduSession(supi string, pduSessionId uint8) (err error)

func (*NgRan) ServiceRequest

func (ngRan *NgRan) ServiceRequest(supi string, pduSessionId uint8) (err error)

func (*NgRan) ShowUeContext

func (ngRan *NgRan) ShowUeContext(supi string) string

func (*NgRan) String

func (ngRan *NgRan) String() string

type PduSessionContext

type PduSessionContext struct {
	PduSessionId uint8          `json:"pduSessionId"`
	Dnn          string         `json:"dnn"`
	Snssai       *models.Snssai `json:"snssai"`
	// dynamic data
	Status                                 int          `json:"status"`
	NasMsg                                 *nas.Message `json:"nasMsg"`
	PDUSessionResourceSetupRequestTransfer []byte       `json:"pduSessionResourceSetupRequestTransfer"`
	PduAddr                                []byte       `json:"pduAddr"`
}

func NewPduSessionContext

func NewPduSessionContext(id uint8, dnn string, snssai *models.Snssai) *PduSessionContext

type RanUeContext

type RanUeContext struct {
	Supi               string
	RanUeNgapId        int64
	AmfUeNgapId        int64
	ULCount            security.Count
	DLCount            security.Count
	CipheringAlg       uint8
	IntegrityAlg       uint8
	KnasEnc            [16]uint8
	KnasInt            [16]uint8
	Kamf               []uint8
	AuthenticationSubs models.AuthenticationSubscription
}

func NewRanUeContext

func NewRanUeContext(supi string, ranUeNgapId int64, cipheringAlg, integrityAlg uint8) *RanUeContext

func (*RanUeContext) DerivateAlgKey

func (ue *RanUeContext) DerivateAlgKey()

Algorithm key Derivation function defined in TS 33.501 Annex A.9

func (*RanUeContext) DerivateKamf

func (ue *RanUeContext) DerivateKamf(key []byte, snName string, SQN, AK []byte)

func (*RanUeContext) DeriveRESstarAndSetKey

func (ue *RanUeContext) DeriveRESstarAndSetKey(authSubs models.AuthenticationSubscription, RAND []byte, snNmae string) []byte

type UeContext

type UeContext struct {
	RanUeCtx      *RanUeContext         `json:"ranUeContext"`
	NasUeCtx      *NasUeContext         `json:"nasContext"`
	UePduSessions [2]*PduSessionContext `json:"nasUePduSessionContexts"` // save pduSession Info in NAS and AS
}

func NewUeContext

func NewUeContext(supi string, ranUeNgapId int64, snssai *models.Snssai) *UeContext

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL