pcf

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2025 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConvertBitRateToKbps

func ConvertBitRateToKbps(bitRate string) (kBitRate float64, err error)

Convert bitRate string to float64 with uint Kbps

func CreateAMPolicy

func CreateAMPolicy(policyAssociationRequest models.PolicyAssociationRequest) (*models.PolicyAssociation, string, error)

func CreateSMPolicy

func CreateSMPolicy(request models.SmPolicyContextData) (
	response *models.SmPolicyDecision, err1 error,
)

func DeleteAMPolicy

func DeleteAMPolicy(polAssoId string) error

func DeleteSMPolicy

func DeleteSMPolicy(smPolicyID string) error

func GetAmPolicyData added in v0.0.5

func GetAmPolicyData(ueId string) (*models.AmPolicyData, error)

func GetSMPolicyDnnData

func GetSMPolicyDnnData(data models.SmPolicyData, snssai *models.Snssai, dnn string) (result *models.SmPolicyDnnData)

GetSMPolicyDnnData returns SMPolicyDnnData derived from SmPolicy data which snssai and dnn match

func GetSmPolicyData added in v0.0.5

func GetSmPolicyData(ueId string) (*models.SmPolicyData, error)

func PolicyControlReqTrigToArray

func PolicyControlReqTrigToArray(bitMap uint64) (trigger []models.PolicyControlRequestTrigger)

Use BitMap to generate requested policy control triggers, 1 means yes, 0 means no, see subscaulse 5.6.3.6-1 in TS29512

func SnssaiModelsToHex

func SnssaiModelsToHex(snssai models.Snssai) string

Convert Snssai form models to hexString(sst(2)+sd(6))

func Start

func Start(dbInstance *db.Database) error

func UpdateAMPolicy

func UpdateAMPolicy(polAssoId string, policyAssociationUpdateRequest models.PolicyAssociationUpdateRequest) (*models.PolicyUpdate, error)

Types

type PCFContext

type PCFContext struct {
	PcfSuppFeats           map[models.ServiceName]openapi.SupportedFeature
	UePool                 sync.Map
	AppSessionPool         sync.Map
	SessionRuleIDGenerator *idgenerator.IDGenerator
	QoSDataIDGenerator     *idgenerator.IDGenerator
	DbInstance             *db.Database
}

func (*PCFContext) NewPCFUe

func (c *PCFContext) NewPCFUe(Supi string) (*UeContext, error)

Allocate PCF Ue with supi and add to pcf Context and returns allocated ue

func (*PCFContext) PCFUeFindByPolicyId

func (c *PCFContext) PCFUeFindByPolicyId(PolicyId string) *UeContext

Find PcfUe which the policyId belongs to

type PccPolicy

type PccPolicy struct {
	PccRules      map[string]*models.PccRule
	QosDecs       map[string]*models.QosData
	TraffContDecs map[string]*models.TrafficControlData
	SessionPolicy map[string]*SessionPolicy // dnn is key
}

type PcfSubscriberPolicyData

type PcfSubscriberPolicyData struct {
	PccPolicy map[string]*PccPolicy // sst+sd is key
	Supi      string
}

func GetSubscriberPolicy

func GetSubscriberPolicy(imsi string) *PcfSubscriberPolicyData

type SessionPolicy

type SessionPolicy struct {
	SessionRules map[string]*models.SessionRule
}

type UeAMPolicyData

type UeAMPolicyData struct {
	PolAssoId         string
	AccessType        models.AccessType
	NotificationUri   string
	ServingPlmn       *models.NetworkId
	AltNotifIpv4Addrs []string
	AltNotifIpv6Addrs []string
	AmfStatusUri      string
	Guami             *models.Guami
	ServiveName       string
	// TraceReq *TraceData
	// about AF request
	Pras map[string]models.PresenceInfo
	// related to UDR Subscription Data
	AmPolicyData *models.AmPolicyData // Svbscription Data
	// Corresponding UE
	PcfUe *UeContext
	// Policy Association
	ServAreaRes *models.ServiceAreaRestriction
	UserLoc     *models.UserLocation
	TimeZone    string
	SuppFeat    string
	Triggers    []models.RequestTrigger
	Rfsp        int32
}

type UeContext

type UeContext struct {
	SmPolicyData                map[string]*UeSmPolicyData // use smPolicyId(ue.Supi-pduSessionId) as key
	AfRoutReq                   *models.AfRoutingRequirement
	AspId                       string
	PolicyDataSubscriptionStore *models.PolicyDataSubscription
	PolicyDataChangeStore       *models.PolicyDataChangeNotification
	Supi                        string
	Gpsi                        string
	Pei                         string
	AMPolicyData                map[string]*UeAMPolicyData // use PolAssoId(ue.Supi-numPolId) as key
	GroupIds                    []string
	PolAssociationIDGenerator   uint32
}

func (*UeContext) FindAMPolicy

func (ue *UeContext) FindAMPolicy(anType models.AccessType, plmnId *models.NetworkId) *UeAMPolicyData

returns AM Policy which AccessType and plmnId match

func (*UeContext) NewUeAMPolicyData

func (ue *UeContext) NewUeAMPolicyData(assolId string, req models.PolicyAssociationRequest) *UeAMPolicyData

func (*UeContext) NewUeSmPolicyData

func (ue *UeContext) NewUeSmPolicyData(
	key string, request models.SmPolicyContextData, smData *models.SmPolicyData,
) *UeSmPolicyData

returns UeSmPolicyData and insert related info to Ue with smPolId

type UeSmPolicyData

type UeSmPolicyData struct {
	PackFiltMapToPccRuleId map[string]string // use PackFiltId as Key
	RemainGbrUL            *float64
	RemainGbrDL            *float64
	SmPolicyData           *models.SmPolicyData // Svbscription Data
	PolicyContext          *models.SmPolicyContextData
	AppSessions            map[string]bool // related appSessionId
	PcfUe                  *UeContext
}

Jump to

Keyboard shortcuts

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