cnca

package
v0.0.0-...-462693d Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2020 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NgcOAMServiceEndpoint      = "http://localhost:8070/ngcoam/v1/af"
	NgcAFServiceEndpoint       = "http://localhost:8050/af/v1"
	LteOAMServiceEndpoint      = "http://localhost:8082"
	NgcOAMServiceHTTP2Endpoint = "https://localhost:8070/ngcoam/v1/af"
	NgcAFServiceHTTP2Endpoint  = "https://localhost:8050/af/v1"
	LteOAMServiceHTTP2Endpoint = "https://localhost:8082"
)

Connectivity constants

View Source
const (
	UseHTTPProtocol      = HTTP2
	TLSCAFile            = "root-ca-cert.pem"
	DefaultTLSCAFilePath = "/etc/certs/"
)

HTTP2/HTTPS constants

View Source
const (
	// This value indicates that something functions wrongly in PFD
	// provisioning or the PFD provisioning does not function at all.
	Malfunction FailureCode = "MALFUNCTION"
	// This value indicates there is resource limitation for PFD storage.
	ResourceLimitation = "RESOURCE_LIMITATION"
	// This value indicates that the allowed delay is too short and PFD(s) are
	// not stored
	ShortDelay = "SHORT_DELAY"
	// The received external application identifier(s) are already provisioned
	AppIDDuplicated = "APP_ID_DUPLICATED"
	// Other reason specified
	OtherReason = "OTHER_REASON"
)

Possible values of FailureCode

Variables

View Source
var HTTP2ClientTLSCAPath string

Functions

func AFCreatePfdTransaction

func AFCreatePfdTransaction(trans []byte) ([]byte, string, error)

AFCreatePfdTransaction create new PFD transaction at AF

func AFCreateSubscription

func AFCreateSubscription(sub []byte) (string, error)

AFCreateSubscription create new Traffic Influence Subscription at AF

func AFDeletePfdApplication

func AFDeletePfdApplication(transID string, appID string) error

AFDeletePfdApplication delete an active PFD Application for the AF

func AFDeletePfdTransaction

func AFDeletePfdTransaction(transID string) error

AFDeletePfdTransaction delete an active PFD Transaction for the AF

func AFDeleteSubscription

func AFDeleteSubscription(subID string) error

AFDeleteSubscription delete an active Traffic Influence Subscription for AF

func AFGetPfdApplication

func AFGetPfdApplication(transID string, appID string) ([]byte, error)

AFGetPfdApplication get the active PFD Application for the AF

func AFGetPfdTransaction

func AFGetPfdTransaction(transID string) ([]byte, error)

AFGetPfdTransaction get the active PFD Transaction for the AF

func AFGetSubscription

func AFGetSubscription(subID string) ([]byte, error)

AFGetSubscription get the active Traffic Influence Subscription for the AF

func AFPatchPfdApplication

func AFPatchPfdApplication(transID string, appID string, trans []byte) ([]byte, error)

AFPatchPfdApplication update an active PFD Application for the AF

func AFPatchPfdTransaction

func AFPatchPfdTransaction(transID string, trans []byte) ([]byte, error)

AFPatchPfdTransaction update an active PFD Transaction for the AF

func AFPatchSubscription

func AFPatchSubscription(subID string, sub []byte) error

AFPatchSubscription update an active subscription for the AF

func Execute

func Execute() error

Execute CNCA agent

func InitHTTP2Client

func InitHTTP2Client(clientCertData string) error

func InitHTTPClient

func InitHTTPClient()

func LteCreateUserplane

func LteCreateUserplane(up []byte) (string, error)

LteCreateUserplane create new LTE userplane

func LteDeleteUserplane

func LteDeleteUserplane(upID string) error

LteDeleteUserplane delete an active LTE CUPS userplane

func LteGetUserplane

func LteGetUserplane(upID string) ([]byte, error)

LteGetUserplane get the active CUPS userplane

func LtePatchUserplane

func LtePatchUserplane(upID string, up []byte) error

LtePatchUserplane update an active LTE CUPS userplane

func OAM5gRegisterAFService

func OAM5gRegisterAFService(locService []byte) (string, error)

OAM5gRegisterAFService register controller to AF services registry

func OAM5gUnregisterAFService

func OAM5gUnregisterAFService(serviceID string) error

OAM5gUnregisterAFService unregister controller from AF services registry

Types

type AFPfdData

type AFPfdData struct {
	H      Header
	Policy struct {
		// Each element uniquely identifies external application identifier
		ExternalAppID string `yaml:"externalAppID"`
		// Link to the resource. This parameter shall be supplied by the AF in
		// HTTP responses that include an object of PfdData type
		Self string `yaml:"self,omitempty"`
		// Contains the PFDs of the external application identifier. Each PFD is
		// identified in the map via a key containing the PFD identifier.
		Pfds []struct {
			// Identifies a PDF of an application identifier.
			PfdID string `yaml:"pfdID"`
			// Represents a 3-tuple with protocol, server ip and server port for UL/DL
			// application traffic. The content of the string has the same encoding as
			// the IPFilterRule AVP value as defined in IETFÂ RFCÂ 6733.
			FlowDescriptions []string `yaml:"flowDescriptions,omitempty"`
			// Indicates a URL or a regular expression which is used to match the
			// significant parts of the URL.
			Urls []string `yaml:"urls,omitempty"`
			// Indicates an FQDN or a regular expression as a domain name matching
			// criteria.
			DomainNames []string `yaml:"domainNames,omitempty"`
		} `yaml:"pfds"`
		// Indicates that the list of PFDs in this request should be deployed
		// within the time interval indicated by the Allowed Delay
		AllowedDelay *uint64 `yaml:"allowedDelay,omitempty"`
		// SCEF supplied property, inclusion of this property means the allowed
		// delayed cannot be satisfied, i.e. it is smaller than the caching time,
		// but the PFD data is still stored.
		CachingTime *uint64 `yaml:"cachingTime,omitempty"`
	} `yaml:"policy"`
}

AFPfdData describes NGC AF Pfd Application

type AFPfdManagement

type AFPfdManagement struct {
	H      Header
	Policy struct {
		// Link to the resource "Individual PFD Management Transaction".
		// This parameter shall be supplied by the AF in HTTP responses.
		Self string `yaml:"self,omitempty"`
		// String identifying supported optional features of PFD Management
		// This attribute shall be provided in the POST request and in the
		// response of successful resource creation.
		SuppFeat *string `yaml:"suppFeat,omitempty"`
		// Each element uniquely identifies the PFDs for an external application
		// identifier. Each element is identified in the map via an external
		// application identifier as key. The response shall include successfully
		// provisioned PFD data of application(s).
		PfdDatas []struct {
			// Each element uniquely identifies external application identifier
			ExternalAppID string `yaml:"externalAppID"`
			// Link to the resource. This parameter shall be supplied by the AF in
			// HTTP responses that include an object of PfdData type
			Self string `yaml:"self,omitempty"`
			// Contains the PFDs of the external application identifier. Each PFD is
			// identified in the map via a key containing the PFD identifier.
			Pfds []struct {
				// Identifies a PDF of an application identifier.
				PfdID string `yaml:"pfdID"`
				// Represents a 3-tuple with protocol, server ip and server port for UL/DL
				// application traffic. The content of the string has the same encoding as
				// the IPFilterRule AVP value as defined in IETFÂ RFCÂ 6733.
				FlowDescriptions []string `yaml:"flowDescriptions,omitempty"`
				// Indicates a URL or a regular expression which is used to match the
				// significant parts of the URL.
				Urls []string `yaml:"urls,omitempty"`
				// Indicates an FQDN or a regular expression as a domain name matching
				// criteria.
				DomainNames []string `yaml:"domainNames,omitempty"`
			} `yaml:"pfds"`
			// Indicates that the list of PFDs in this request should be deployed
			// within the time interval indicated by the Allowed Delay
			AllowedDelay *uint64 `yaml:"allowedDelay,omitempty"`
			// SCEF supplied property, inclusion of this property means the allowed
			// delayed cannot be satisfied, i.e. it is smaller than the caching time,
			// but the PFD data is still stored.
			CachingTime *uint64 `yaml:"cachingTime,omitempty"`
		} `yaml:"pfdDatas"`
		// Supplied by the AF and contains the external application identifiers
		// for which PFD(s) are not added or modified successfully. The failure
		// reason is also included. Each element provides the related information
		// for one or more external application identifier(s) and is identified in
		// the map via the failure identifier as key.
		PfdReports map[string]PfdReport `yaml:"pfdReports,omitempty"`
	} `yaml:"policy"`
}

AFPfdManagement describes NGC AF Pfd Transaction

type AFService

type AFService struct {
	AFServiceID     string          `json:"afServiceId,omitempty"`
	LocationService LocationService `json:"locationService,omitempty"`
}

AFService JSON struct

type AFServiceID

type AFServiceID struct {
	AFServiceID string `json:"afServiceId,omitempty"`
}

AFServiceID identifies AF Service ID

type AFServiceList

type AFServiceList struct {
	AfServiceList []AFService `json:"afServiceList,omitempty"`
}

AFServiceList JSON struct

type AFTrafficInfluSub

type AFTrafficInfluSub struct {
	H      Header
	Policy struct {
		// Identifies a service on behalf of which the AF is issuing the request.
		AfServiceID string `yaml:"afServiceId,omitempty"`
		// Identifies an application.
		AfAppID string `yaml:"afAppId,omitempty"`
		// Identifies an NEF Northbound interface transaction, generated by the AF.
		AfTransID string `yaml:"afTransId,omitempty"`
		// Identifies whether an application can be relocated once a location of the application has been selected.
		AppReloInd bool `yaml:"appReloInd,omitempty"`
		// Identifies data network name
		DNN string `yaml:"dnn,omitempty"`
		// Snssai
		SNSSAI struct {
			SST int32  `yaml:"sst"`
			SD  string `yaml:"sd,omitempty"`
		} `yaml:"snssai,omitempty"`
		// string containing a local identifier followed by \"@\" and a domain identifier. Both the local identifier
		// and the domain identifier shall be encoded as strings that do not contain any \"@\" characters.
		// See Clauses 4.6.2 and 4.6.3 of 3GPP TS 23.682 for more information.
		ExternalGroupID string `yaml:"externalGroupId,omitempty"`
		// Identifies whether the AF request applies to any UE.
		AnyUeInd bool `yaml:"anyUeInd,omitempty"`
		// Identifies the requirement to be notified of the event(s):
		// - UP_PATH_CHANGE
		SubscribedEvents []string `yaml:"subscribedEvents,omitempty"`
		// Gpsi
		GPSI string `yaml:"gpsi,omitempty"`
		// string identifying a Ipv4 address formatted in the \"dotted decimal\" notation as defined in IETF RFC 1166.
		IPv4Addr string `yaml:"ipv4Addr,omitempty"`
		// string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952.
		IPv6Addr string `yaml:"ipv6Addr,omitempty"`
		// string identifying MAC Address
		MACAddr string `yaml:"macAddr,omitempty"`
		// Identifies the type of notification regarding UP path management event. Possible values are
		// EARLY - early notification of UP path reconfiguration.
		// EARLY_LATE - early and late notification of UP path reconfiguration. This value shall only be present in
		//              the subscription to the DNAI change event.
		// LATE - late notification of UP path reconfiguration.
		DNAIChgType string `yaml:"dnaiChgType,omitempty"`
		// string formatted according to IETF RFC 3986 identifying a referenced resource.
		NotificationDestination string `yaml:"notificationDestination,omitempty"`
		// Set to true by the AF to request the NEF to send a test notification. Set to false or omitted otherwise.
		RequestTestNotification bool `yaml:"requestTestNotification,omitempty"`
		// WebsockNotifConfig
		WebsockNotifConfig struct {
			WebsocketURI        string `yaml:"websocketUri,omitempty"`
			RequestWebsocketURI bool   `yaml:"requestWebsocketUri,omitempty"`
		} `yaml:"websockNotifConfig,omitempty"`
		// Identifies IP packet filters.
		TrafficFilters []struct {
			// Indicates the IP flow.
			FlowID int32 `yaml:"flowId"`
			// Indicates the packet filters of the IP flow. Refer to subclause 5.3.8 of 3GPP TS 29.214 for encoding.
			// It shall contain UL and/or DL IP flow description.
			FlowDescriptions []string `yaml:"flowDescriptions,omitempty"`
		} `yaml:"trafficFilters,omitempty"`
		// Identifies Ethernet packet filters.
		EthTrafficFilters []struct {
			DestMACAddr string `yaml:"destMacAddr,omitempty"`
			EthType     string `yaml:"ethType"`
			// Defines a packet filter of an IP flow.
			FDesc string `yaml:"fDesc,omitempty"`
			// Possible values are :
			// - DOWNLINK - The corresponding filter applies for traffic to the UE.
			// - UPLINK - The corresponding filter applies for traffic from the UE.
			// - BIDIRECTIONAL The corresponding filter applies for traffic both to and from the UE.
			// UNSPECIFIED - The corresponding filter applies for traffic to the UE (downlink), but has no specific
			//              direction declared. The service data flow detection shall apply the filter for uplink
			//              traffic as if the filter was bidirectional.
			FDir          string   `yaml:"fDir,omitempty"`
			SourceMACAddr string   `yaml:"sourceMacAddr,omitempty"`
			VLANTags      []string `yaml:"vlanTags,omitempty"`
		} `yaml:"ethTrafficFilters,omitempty"`
		// Identifies the N6 traffic routing requirement.
		TrafficRoutes []struct {
			DNAI      string `yaml:"dnai"`
			RouteInfo struct {
				IPv4Addr   string `yaml:"ipv4Addr,omitempty"`
				IPv6Addr   string `yaml:"ipv6Addr,omitempty"`
				PortNumber int32  `yaml:"portNumber"`
			} `yaml:"routeInfo,omitempty"`
			RouteProfID string `yaml:"routeProfId,omitempty"`
		} `yaml:"trafficRoutes,omitempty"`
		// Indicates the time interval(s) during which the AF request is to be applied
		TempValidities []struct {
			// string with format \"date-time\" as defined in OpenAPI.
			StartTime string `yaml:"startTime,omitempty"`
			// string with format \"date-time\" as defined in OpenAPI.
			StopTime string `yaml:"stopTime,omitempty"`
		} `yaml:"tempValidities,omitempty"`
		// Identifies a geographic zone that the AF request applies only to the traffic of UE(s) located in this
		// specific zone.
		ValidGeoZoneIds []string `yaml:"validGeoZoneIds,omitempty"`
	} `yaml:"policy"`
}

AFTrafficInfluSub describes NGC AF Traffic Influence Subscription

type ConfigInfoCpup

type ConfigInfoCpup struct {
	CpIPAddress string `json:"cp_ip_address,omitempty"`
	UpIPAddress string `json:"up_ip_address,omitempty"`
}

ConfigInfoCpup Information that the userplane should configure, which relates to the control plane (CP) side and the user plane (UP) side.

type ConfigInfoUp

type ConfigInfoUp struct {
	UpIPAddress string `json:"up_ip_address,omitempty"`
}

ConfigInfoUp Information that the userplane should configure, which relates to the user plane (UP) side only.

type CupsUserplane

type CupsUserplane struct {
	ID        string              `json:"id,omitempty"`
	UUID      string              `json:"uuid,omitempty"`
	Function  *UserplaneFunction  `json:"function,omitempty"`
	Config    *UserplaneConfig    `json:"config,omitempty"`
	Selectors []UserplaneSelector `json:"selectors,omitempty"`
	// The UEs that should be entitled to access privileged networks via this
	// userplane.  Note: UEs not in this list will still be able to get a bearer
	// via the userplane. The UEs in this list are just for entitlement
	// purposes. (optional)
	Entitlements []UserplaneEntitlement `json:"entitlements,omitempty"`
}

CupsUserplane CupsUserplane

type CupsUserplaneID

type CupsUserplaneID struct {
	ID string `json:"id,omitempty"`
}

CupsUserplaneID identifies CUPS userplane ID

type DNAI

type DNAI string

DNAI type

type DNAIChangeType

type DNAIChangeType string

DNAIChangeType type

const (
	Early     DNAIChangeType = "EARLY"
	EarlyLate DNAIChangeType = "EARLY_LATE"
	Late      DNAIChangeType = "LATE"
)

List of DnaiChangeType

type DurationSec

type DurationSec uint64

DurationSec is unsigned integer identifying a period of time in units of seconds.

type DurationSecRm

type DurationSecRm DurationSec

DurationSecRm is unsigned integer identifying a period of time in units of seconds with "nullable=true" property.

type DurationSecRo

type DurationSecRo DurationSec

DurationSecRo is unsigned integer identifying a period of time in units of seconds with "readOnly=true" property.

type EntitlementImsiList

type EntitlementImsiList struct {
	Begin string `json:"begin,omitempty"`
	End   string `json:"end,omitempty"`
}

EntitlementImsiList EntitlementImsiList

type EthFlowDescription

type EthFlowDescription struct {
	DestMacAddr string `json:"destMacAddr,omitempty"`
	//EtherType number
	EthType string `json:"ethType"`
	// Defines a packet filter of an IP flow.
	FDesc string `json:"fDesc,omitempty"`
	// Possible values are DOWNLINK - The corresponding filter applies for
	// traffic to the UE.
	// UPLINK - The corresponding filter applies for traffic from the UE.
	// BIDIRECTIONAL The corresponding filter applies for traffic both to and
	// from the UE.
	// UNSPECIFIED - The corresponding filter applies for traffic to the UE
	// (downlink), but has no specific direction declared.
	// The service data flow detection shall apply the filter for uplink traffic
	// as if the filter was bidirectional.
	FDir string `json:"fDir,omitempty"`
	// Source mac address
	SourceMacAddr string `json:"sourceMacAddr,omitempty"`
	// Vlan tags
	VLANTags []string `json:"vlanTags,omitempty"`
}

EthFlowDescription Identifies an Ethernet flow

type EventNotification

type EventNotification struct {
	// AfTransID
	AFTransID string `json:"afTransId,omitempty"`
	// DnaiChgType
	DNAIChgType DNAIChangeType `json:"dnaiChgType,omitempty"`
	// SourceTrafficRoute
	SourceTrafficRoute RouteToLocation `json:"sourceTrafficRoute,omitempty"`
	// SubscribedEvent
	SubscribedEvent SubscribedEvent `json:"subscribedEvent,omitempty"`
	// TargetTrafficRoute
	TargetTrafficRoute RouteToLocation `json:"targetTrafficRoute,omitempty"`
	// Gpsi
	GPSI string `json:"gpsi,omitempty"`
	// SrcUeIpv4Addr
	SrcUEIPv4Addr SrcUEIPv4Addr `json:"srcUeIpv4Addr,omitempty"`
	// SrcUeIpv6Prefix
	SrcUEIPv6Prefix SrcUEIPv6Prefix `json:"srcUeIpv6Prefix,omitempty"`
	// TgtUeIpv4Addr
	TgtUEIP4Addr TgtUEIPv4Addr `json:"tgtUeIpv4Addr,omitempty"`
	// TgtUeIpv6Prefix
	TgtUEIPv6Prefix TgtUEIPv6Prefix `json:"tgtUeIpv6Prefix,omitempty"`
	// UeMac
	UEMac UEMac `json:"ueMac,omitempty"`
}

EventNotification structure

type FailureCode

type FailureCode string

FailureCode represents the failure reason of the PFD management

type FlowInfo

type FlowInfo struct {
	// Indicates the packet filters of the IP flow. Refer to subclause 5.3.8 of
	//3GPP TS 29.214 for encoding.
	// It shall contain UL and/or DL IP flow description.
	FlowDescriptions []string `json:"flowDescriptions,omitempty"`
	// Indicates the IP flow.
	FlowID int32 `json:"flowId"`
}

FlowInfo Flow information struct

type GPSI

type GPSI string

GPSI type

type HTTPProtocol

type HTTPProtocol int
const (
	HTTP HTTPProtocol = 1 + iota
	HTTP2
)
type Header struct {
	Version string `yaml:"apiVersion"`
	//  ngc: 5G Traffic Influence Subscription, or
	//  lte: LTE CUPS Userplane, or
	//  ngc_pfd: 5G PFD Transaction
	Kind string `yaml:"kind"`
}

Header holds version & type of YAML configuration

type IPv4Addr

type IPv4Addr string

IPv4Addr type

type IPv6Addr

type IPv6Addr string

IPv6Addr type

type InvalidParam

type InvalidParam struct {
	// Attribute”s name encoded as a JSON Pointer, or header”s name.
	Param string `json:"param"`
	// A human-readable reason, e.g. \"must be a positive integer\".
	Reason string `json:"reason,omitempty"`
}

InvalidParam Invalid Parameters struct

type LTEUserplane

type LTEUserplane struct {
	H      Header
	Policy struct {
		ID       string `yaml:"id,omitempty"`
		UUID     string `yaml:"uuid,omitempty"`
		Function string `yaml:"function,omitempty"`
		Config   struct {
			Sxa      LteConfigInfoCpup `yaml:"sxa,omitempty"`
			Sxb      LteConfigInfoCpup `yaml:"sxb,omitempty"`
			S1u      LteConfigInfoUp   `yaml:"s1u,omitempty"`
			S5uSGW   LteConfigInfoUp   `yaml:"s5u_sgw,omitempty"`
			S5uPGW   LteConfigInfoUp   `yaml:"s5u_pgw,omitempty"`
			SGi      LteConfigInfoUp   `yaml:"sgi,omitempty"`
			Breakout []LteConfigInfoUp `yaml:"breakout,omitempty"`
			DNS      []LteConfigInfoUp `yaml:"dns,omitempty"`
		} `yaml:"config,omitempty"`

		Selectors []struct {
			ID      string `yaml:"id,omitempty"`
			Network struct {
				MCC string `yaml:"mcc,omitempty"`
				MNC string `yaml:"mnc,omitempty"`
			} `yaml:"network,omitempty"`
			ULI struct {
				TAI struct {
					// Tracking area code (TAC), which is typically an unsigned integer
					// from 1 to 2^16, inclusive.
					TAC int64 `yaml:"tac,omitempty"`
				} `yaml:"tai,omitempty"`
				ECGI struct {
					// E-UTRAN cell identifier (ECI), which is typically an unsigned integer
					// from 1 to 2^32, inclusive.
					ECI int64 `yaml:"eci,omitempty"`
				} `yaml:"ecgi,omitempty"`
			} `yaml:"uli,omitempty"`
			PDN struct {
				APNs []string `yaml:"apns,omitempty"`
			} `yaml:"pdn,omitempty"`
		} `yaml:"selectors,omitempty"`

		// The UEs that should be entitled to access privileged networks via this
		// userplane.  Note: UEs not in this list will still be able to get a bearer
		// via the userplane. The UEs in this list are just for entitlement
		// purposes. (optional)
		Entitlements []struct {
			ID    string   `yaml:"id,omitempty"`
			APNs  []string `yaml:"apns,omitempty"`
			IMSIs []struct {
				Begin string `yaml:"begin,omitempty"`
				End   string `yaml:"end,omitempty"`
			} `yaml:"imsis,omitempty"`
		} `yaml:"entitlements,omitempty"`
	}
}

LTEUserplane describes LTE Userplane Configuration

type Link string

Link is a string identifying the referenced resource URI URI string formatted accordingding to IETF RFC 3986

type LocationService

type LocationService struct {
	DNAI   string `json:"dnai,omitempty"` //DNAI value
	DNN    string `json:"dnn,omitempty"`  //DNN value
	TAC    int    `json:"tac,omitempty"`
	PriDNS string `json:"priDns,omitempty"`
	SecDNS string `json:"secDns,omitempty"`
	UPFIP  string `json:"upfIp,omitempty"`
	SNSSAI string `json:"snssai,omitempty"`
}

LocationService JSON struct

type LteConfigInfoCpup

type LteConfigInfoCpup struct {
	CpIPAddress string `yaml:"cp_ip_address,omitempty"`
	UpIPAddress string `yaml:"up_ip_address,omitempty"`
}

LteConfigInfoCpup Information that the userplane should configure, which relates to the control plane (CP) side and the user plane (UP) side.

type LteConfigInfoUp

type LteConfigInfoUp struct {
	UpIPAddress string `yaml:"up_ip_address,omitempty"`
}

LteConfigInfoUp Information that the userplane should configure, which relates to the user plane (UP) side only.

type MacAddr

type MacAddr string

MacAddr type

type Pfd

type Pfd struct {
	// Identifies a PDF of an application identifier.
	PfdID string `json:"pfdID"`
	// Represents a 3-tuple with protocol, server ip and server port for UL/DL
	// application traffic. The content of the string has the same encoding as
	// the IPFilterRule AVP value as defined in IETFÂ RFCÂ 6733.
	FlowDescriptions []string `json:"flowDescriptions,omitempty"`
	// Indicates a URL or a regular expression which is used to match the
	// significant parts of the URL.
	Urls []string `json:"urls,omitempty"`
	// Indicates an FQDN or a regular expression as a domain name matching
	// criteria.
	DomainNames []string `json:"domainNames,omitempty"`
}

Pfd is the structure of Packet Flow Description for an external Application Identifier

type PfdData

type PfdData struct {
	// Each element uniquely identifies external application identifier
	ExternalAppID string `json:"externalAppID"`
	// Link to the resource. This parameter shall be supplied by the AF in
	// HTTP responses that include an object of PfdData type
	Self Link `json:"self,omitempty"`
	// Contains the PFDs of the external application identifier. Each PFD is
	// identified in the map via a key containing the PFD identifier.
	Pfds map[string]Pfd `json:"pfds"`
	// Indicates that the list of PFDs in this request should be deployed
	// within the time interval indicated by the Allowed Delay
	AllowedDelay *DurationSecRm `json:"allowedDelay,omitempty"`
	// SCEF supplied property, inclusion of this property means the allowed
	// delayed cannot be satisfied, i.e. it is smaller than the caching time,
	// but the PFD data is still stored.
	CachingTime *DurationSecRo `json:"cachingTime,omitempty"`
}

PfdData is the type that represents a PFD request to add, update or remove PFD(s) for one external application identifier provided by AF

type PfdManagement

type PfdManagement struct {
	// Link to the resource "Individual PFD Management Transaction".
	// This parameter shall be supplied by the AF in HTTP responses.
	Self Link `json:"self,omitempty"`
	// String identifying supported optional features of PFD Management
	// This attribute shall be provided in the POST request and in the
	// response of successful resource creation.
	SuppFeat *SupportedFeatures `json:"suppFeat,omitempty"`
	// Each element uniquely identifies the PFDs for an external application
	// identifier. Each element is identified in the map via an external
	// application identifier as key. The response shall include successfully
	// provisioned PFD data of application(s).
	PfdDatas map[string]PfdData `json:"pfdDatas"`
	// Supplied by the AF and contains the external application identifiers
	// for which PFD(s) are not added or modified successfully. The failure
	// reason is also included. Each element provides the related information
	// for one or more external application identifier(s) and is identified in
	// the map via the failure identifier as key.
	PfdReports map[string]PfdReport `json:"pfdReports,omitempty"`
}

PfdManagement resource for a PFD management request

type PfdReport

type PfdReport struct {
	// Identifies the external application identifier(s) which PFD(s) are not
	// added or modified successfully
	ExternalAppIds []string `json:"externalAppIds"`
	// Identifies the failure reason
	FailureCode FailureCode `json:"failureCode"`
	// It shall be included when the allowed delayed cannot be satisfied, i.e.
	// it is smaller than the caching time configured in fetching PFD.
	CachingTime *DurationSec `json:"cachingTime,omitempty"`
}

PfdReport is the type that represents a PFD report to indicate the external application identifier(s) which PFD(s) are not added or modified successfully and corresponding failure reason.

type ProblemDetails

type ProblemDetails struct {
	// problem type
	Type Link `json:"type,omitempty"`
	// A short, human-readable summary of the problem type.
	// It should not change from occurrence to occurrence of the problem.
	Title string `json:"title,omitempty"`
	// A human-readable explanation specific to this occurrence of the problem.
	Detail string `json:"detail,omitempty"`
	// URL to problem instance
	Instance Link `json:"instance,omitempty"`
	// A machine-readable application error cause specific to this occurrence
	// of the problem.
	// This IE should be present and provide application-related error
	// information, if available.
	Cause string `json:"cause,omitempty"`
	// Description of invalid parameters, for a request rejected due to
	// invalid parameters.
	InvalidParams []InvalidParam `json:"invalidParams,omitempty"`
	// The HTTP status code for this occurrence of the problem.
	Status int `json:"status,omitempty"`
}

ProblemDetails Problem details struct

type RouteInformation

type RouteInformation struct {
	// string identifying a Ipv4 address formatted in the \"dotted decimal\"
	// notation as defined in IETF RFC 1166.
	IPv4Addr IPv4Addr `json:"ipv4Addr,omitempty"`
	// string identifying a Ipv6 address formatted according to clause 4 in
	// IETF RFC 5952.
	// The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall
	// not be used.
	IPv6Addr IPv6Addr `json:"ipv6Addr,omitempty"`
	// Port number
	PortNumber int32 `json:"portNumber"`
}

RouteInformation Route information struct

type RouteToLocation

type RouteToLocation struct {
	// Data network access identifier
	DNAI DNAI `json:"dnai"`
	// Dnai route profile identifier
	RouteProfID string `json:"routeProfId,omitempty"`
	// Additional route information about the route to Dnai
	RouteInfo RouteInformation `json:"routeInfo,omitempty"`
}

RouteToLocation Route to location structure

type SNSSAI

type SNSSAI struct {
	SST int32  `json:"sst"`
	SD  string `json:"sd,omitempty"`
}

SNSSAI Network slice identifier

type SelectorNetwork

type SelectorNetwork struct {
	MCC string `json:"mcc,omitempty"`
	MNC string `json:"mnc,omitempty"`
}

SelectorNetwork SelectorNetwork

type SelectorPdn

type SelectorPdn struct {
	APNs []string `json:"apns,omitempty"`
}

SelectorPdn SelectorPdn

type SelectorUli

type SelectorUli struct {
	TAI  *Ulitai  `json:"tai,omitempty"`
	ECGI *Uliecgi `json:"ecgi,omitempty"`
}

SelectorUli SelectorUli

type SrcUEIPv4Addr

type SrcUEIPv4Addr string

SrcUEIPv4Addr type

type SrcUEIPv6Prefix

type SrcUEIPv6Prefix string

SrcUEIPv6Prefix type

type SubscribedEvent

type SubscribedEvent string

SubscribedEvent : The possible value is CHANGE_OF_DNAI - the AF requests to be notified when the UP path changes for the PDU isession.

const (
	//UP_PATH_CHANGE SubscribedEvent = "UP_PATH_CHANGE" >> causing lint error
	UPPathChange SubscribedEvent = "UP_PATH_CHANGE"
)

List of SubscribedEvent

type SupportedFeatures

type SupportedFeatures string

SupportedFeatures string used to indicate the features supported by an API that is used (subclause 6.6 in 3GPP TS 29.500). The string shall contain a bitmask indicating supported features in hexadecimal representation. Each character in the string shall take a value of "0" to "9" or "A" to "F" and shall represent the support of 4 features as described in table 5.2.2-3. The most significant character representing the highest-numbered features shall appear first in the string, and the character representing features 1 to 4 shall appear last in the string. The list of features and their numbering (starting with 1) are defined separately for each API. Possible features for traffic influencing are Notification_websocket( takes vlue of 1) and Notification_test_event(takes value of 2) pattern: '^[A-Fa-f0-9]*$'

type TemporalValidity

type TemporalValidity struct {
	// string with format \"date-time\" as defined in OpenAPI.
	StartTime string `json:"startTime,omitempty"`
	// string with format \"date-time\" as defined in OpenAPI.
	StopTime string `json:"stopTime,omitempty"`
}

TemporalValidity Indicates the time interval(s) during which the AF request is to be applied

type TgtUEIPv4Addr

type TgtUEIPv4Addr string

TgtUEIPv4Addr type

type TgtUEIPv6Prefix

type TgtUEIPv6Prefix string

TgtUEIPv6Prefix type

type TrafficInfluSub

type TrafficInfluSub struct {
	// Identifies a service on behalf of which the AF is issuing the request.
	AFServiceID string `json:"afServiceId,omitempty"`
	// Identifies an application.
	AFAppID string `json:"afAppId,omitempty"`
	// Identifies an NEF Northbound interface transaction, generated by the AF.
	AFTransID string `json:"afTransId,omitempty"`
	// Identifies data network name
	DNN string `json:"dnn,omitempty"`
	// Network slice identifier
	SNSSAI SNSSAI `json:"snssai,omitempty"` //p
	// string containing a local identifier followed by \"@\" and
	// a domain identifier.
	// Both the local identifier and the domain identifier shall be encoded as
	// strings that do not contain any \"@\" characters.
	// See Clauses 4.6.2 and 4.6.3 of 3GPP TS 23.682 for more information.
	ExternalGroupID string `json:"externalGroupId,omitempty"`
	// Identifies the requirement to be notified of the event(s).
	SubscribedEvents []SubscribedEvent `json:"subscribedEvents,omitempty"`
	//Generic Public Servie Identifiers asssociated wit the UE
	GPSI GPSI `json:"gpsi,omitempty"`
	// string identifying a Ipv4 address formatted in the \"dotted decimal\"
	//notation as defined in IETF RFC 1166.
	IPv4Addr IPv4Addr `json:"ipv4Addr,omitempty"`
	// string identifying a Ipv6 address formatted according to clause 4
	// in IETF RFC 5952.
	IPv6Addr IPv6Addr `json:"ipv6Addr,omitempty"`
	// string identifying mac address of UE
	MacAddr MacAddr `json:"macAddr,omitempty"`
	// Identifies the type of notification regarding UP path management event.
	// Possible values are:
	// EARLY - early notification of UP path reconfiguration.
	// EARLY_LATE - early and late notification of UP path reconfiguration.
	// This value shall only be present in the subscription to the
	// DNAI change event.
	// LATE - late notification of UP path reconfiguration.
	DNAIChgType DNAIChangeType `json:"dnaiChgType,omitempty"`
	// URL where notifications shall be sent
	NotificationDestination Link `json:"notificationDestination,omitempty"`
	// URL of created subscription resource
	Self Link `json:"self,omitempty"`
	// Identifies IP packet filters.
	TrafficFilters []FlowInfo `json:"trafficFilters,omitempty"`
	// Identifies Ethernet packet filters.
	EthTrafficFilters []EthFlowDescription `json:"ethTrafficFilters,omitempty"`
	// Identifies the N6 traffic routing requirement.
	TrafficRoutes []RouteToLocation `json:"trafficRoutes,omitempty"`
	// Settings for temporary validity of the subscription
	TempValidities []TemporalValidity `json:"tempValidities,omitempty"`
	// Identifies a geographic zone that the AF request applies only to the
	// traffic of UE(s) located in this specific zone.
	ValidGeoZoneIDs []string `json:"validGeoZoneIds,omitempty"`
	// String identifying supported features per Traffic Influence service
	SuppFeat SupportedFeatures `json:"suppFeat,omitempty"`
	// Configuration used for sending notifications though web sockets
	WebsockNotifConfig WebsockNotifConfig `json:"websockNotifConfig,omitempty"`
	// Set to true by the AF to request the NEF to send a test notification.
	//Set to false or omitted otherwise.
	RequestTestNotification bool `json:"requestTestNotification,omitempty"`
	// Identifies whether an application can be relocated once a location of
	// the application has been selected.
	AppReloInd bool `json:"appReloInd,omitempty"`
	// Identifies whether the AF request applies to any UE.
	AnyUEInd bool `json:"anyUeInd,omitempty"`
}

TrafficInfluSub is Traffic Influence Subscription structure

type TrafficInfluSubPatch

type TrafficInfluSubPatch struct {
	// Identifies IP packet filters.
	TrafficFilters []FlowInfo `json:"trafficFilters,omitempty"`
	// Identifies whether an application can be relocated once a location of
	// the application has been selected.
	AppReloInd bool `json:"appReloInd,omitempty"`
	// Identifies Ethernet packet filters.
	EthTrafficFilters []EthFlowDescription `json:"ethTrafficFilters,omitempty"`
	// Identifies the N6 traffic routing requirement.
	TrafficRoutes []RouteToLocation `json:"trafficRoutes,omitempty"`
	// Settings for temporary validity of the subscription
	TempValidities []TemporalValidity `json:"tempValidities,omitempty"`
	// Identifies a geographic zone that the AF request applies only to the
	// traffic of UE(s) located in this specific zone.
	ValidGeoZoneIDs []string `json:"validGeoZoneIds,omitempty"`
}

TrafficInfluSubPatch Traffic Influence Subscription Patch structure

type UEMac

type UEMac string

UEMac type

type Uliecgi

type Uliecgi struct {
	// E-UTRAN cell identifier (ECI), which is typically an unsigned integer
	// from 1 to 2^32, inclusive.
	ECI int64 `json:"eci,omitempty"`
}

Uliecgi Uliecgi

type Ulitai

type Ulitai struct {
	// Tracking area code (TAC), which is typically an unsigned integer
	// from 1 to 2^16, inclusive.
	TAC int64 `json:"tac,omitempty"`
}

Ulitai Ulitai

type UserplaneConfig

type UserplaneConfig struct {
	Sxa      *ConfigInfoCpup `json:"sxa,omitempty"`
	Sxb      *ConfigInfoCpup `json:"sxb,omitempty"`
	S1u      *ConfigInfoUp   `json:"s1u,omitempty"`
	S5uSGW   *ConfigInfoUp   `json:"s5u_sgw,omitempty"`
	S5uPGW   *ConfigInfoUp   `json:"s5u_pgw,omitempty"`
	SGi      *ConfigInfoUp   `json:"sgi,omitempty"`
	Breakout []ConfigInfoUp  `json:"breakout,omitempty"`
	DNS      []ConfigInfoUp  `json:"dns,omitempty"`
}

UserplaneConfig UserplaneConfig

type UserplaneEntitlement

type UserplaneEntitlement struct {
	ID    string                `json:"id,omitempty"`
	APNs  []string              `json:"apns,omitempty"`
	IMSIs []EntitlementImsiList `json:"imsis,omitempty"`
}

UserplaneEntitlement UserplaneEntitlement

type UserplaneFunction

type UserplaneFunction string

UserplaneFunction :

  • NONE: No function
  • SGWU: 4G serving gateway userplane (SGW-U)
  • PGWU: 4G packet data network (PDN) gateway userplane (PGW-U)
  • SAEGWU: 4G combination SGW-U and PGW-U
const (
	// NONE: No function
	NONE UserplaneFunction = "NONE"
	// SGWU: 4G serving gateway userplane (SGW-U)
	SGWU UserplaneFunction = "SGWU"
	// PGWU: 4G packet data network (PDN) gateway userplane (PGW-U)
	PGWU UserplaneFunction = "PGWU"
	// SAEGWU: 4G combination SGW-U and PGW-U
	SAEGWU UserplaneFunction = "SAEGWU"
)

List of UserplaneFunction

type UserplaneSelector

type UserplaneSelector struct {
	ID      string           `json:"id,omitempty"`
	Network *SelectorNetwork `json:"network,omitempty"`
	ULI     *SelectorUli     `json:"uli,omitempty"`
	PDN     *SelectorPdn     `json:"pdn,omitempty"`
}

UserplaneSelector UserplaneSelector

type WebsockNotifConfig

type WebsockNotifConfig struct {
	// string formatted according to IETF RFC 3986 identifying a
	// referenced resource.
	WebsocketURI string `json:"websocketUri,omitempty"`
	// Set by the AF to indicate that the Websocket delivery is requested.
	RequestWebsocketURI bool `json:"requestWebsocketUri,omitempty"`
}

WebsockNotifConfig Websocket noticcation configuration

Jump to

Keyboard shortcuts

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