smf

package
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Jan 16, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FteidTypeIPv4                  = 0x01
	UEIpAddrTypeIPv4               = 0x02
	OuterHeaderRemoveGtpuUdpIpv4   = 0x00
	ApplyActionForw                = 0x02
	OuterHeaderCreationGtpuUdpIpv4 = 0x0100
)

PFCP Constants

Variables

View Source
var (
	ErrDnnNotFound        = errors.New("DNN not found")
	ErrPDUSessionNotFound = errors.New("PDU Session not found")
	ErrAreaNotFound       = errors.New("RAN Area not found for this gNB")
	ErrPathNotFound       = errors.New("Path not found for this RAN Area")

	ErrUpfNotAssociated    = errors.New("UPF not associated")
	ErrUpfNotFound         = errors.New("UPF not found")
	ErrInterfaceNotFound   = errors.New("interface not found")
	ErrNoPFCPRule          = errors.New("no PFCP rule to push")
	ErrNoIpAvailableInPool = errors.New("no IP address available in pool")

	ErrNilCtx            = errors.New("nil context")
	ErrSmfNotStarted     = errors.New("SMF not started")
	ErrSmfAlreadyStarted = errors.New("SMF already started")
)

Functions

func NewUpfInterfaceMap

func NewUpfInterfaceMap(ifaces []config.Interface) map[netip.Addr]*UpfInterface

Types

type AreasMap added in v0.0.5

type AreasMap struct {
	// contains filtered or unexported fields
}

func NewAreasMap added in v0.0.5

func NewAreasMap(areas map[string]config.Area) AreasMap

func (AreasMap) Area added in v0.0.5

func (a AreasMap) Area(gnb jsonapi.ControlURI) (string, bool)

func (AreasMap) Contains added in v0.0.5

func (a AreasMap) Contains(areaName string, gnb jsonapi.ControlURI) bool

type PduSessionN3

type PduSessionN3 struct {
	UeIpAddr          netip.Addr
	UplinkFteid       *jsonapi.Fteid
	DownlinkFteid     *jsonapi.Fteid
	NextDownlinkFteid *jsonapi.Fteid // Handover
	DlFarId           uint32
}

type Pfcprules

type Pfcprules struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewPfcpRules

func NewPfcpRules() *Pfcprules

type Sessions added in v0.0.3

type Sessions struct {
	// contains filtered or unexported fields
}

type SessionsMap

type SessionsMap struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewSessionsMap added in v0.0.3

func NewSessionsMap() *SessionsMap

func (*SessionsMap) Add added in v0.0.3

func (s *SessionsMap) Add(ueCtrl jsonapi.ControlURI, session *PduSessionN3)

func (*SessionsMap) Get added in v0.0.3

func (s *SessionsMap) Get(ueCtrl jsonapi.ControlURI, ueAddr netip.Addr) (*PduSessionN3, error)

func (*SessionsMap) SetNextDownlinkFteid added in v0.0.3

func (s *SessionsMap) SetNextDownlinkFteid(ueCtrl jsonapi.ControlURI, ueAddr netip.Addr, fteid *jsonapi.Fteid) error

type Slice

type Slice struct {
	Upfs []netip.Addr
	Pool *UeIpPool

	Paths map[string][]netip.Addr
	// contains filtered or unexported fields
}

func NewSlice

func NewSlice(pool netip.Prefix, upfs []netip.Addr, paths map[string][]netip.Addr) *Slice

type SlicesMap

type SlicesMap struct {
	sync.Map // slice name: Slice
}

func NewSlicesMap

func NewSlicesMap(slices map[string]config.Slice, areas map[string]config.Area) *SlicesMap

type Smf

type Smf struct {
	// contains filtered or unexported fields
}

func NewSmf

func NewSmf(addr netip.Addr, slices map[string]config.Slice, areas map[string]config.Area) *Smf

func (*Smf) Context added in v0.0.3

func (smf *Smf) Context() context.Context
func (smf *Smf) CreateSessionDownlink(ueCtrl jsonapi.ControlURI, ueIp netip.Addr, dnn string, gnbCtrl jsonapi.ControlURI, gnbFteid jsonapi.Fteid) (*PduSessionN3, error)

func (*Smf) CreateSessionDownlinkContext added in v0.0.3

func (smf *Smf) CreateSessionDownlinkContext(ctx context.Context, ueCtrl jsonapi.ControlURI, ueIp netip.Addr, dnn string, gnbCtrl jsonapi.ControlURI, gnbFteid jsonapi.Fteid) (*PduSessionN3, error)
func (smf *Smf) CreateSessionUplink(ueCtrl jsonapi.ControlURI, gnbCtrl jsonapi.ControlURI, dnn string) (*PduSessionN3, error)

func (*Smf) CreateSessionUplinkContext added in v0.0.3

func (smf *Smf) CreateSessionUplinkContext(ctx context.Context, ueCtrl jsonapi.ControlURI, gnbCtrl jsonapi.ControlURI, dnn string) (*PduSessionN3, error)

func (*Smf) GetSessionDownlinkFteid added in v0.0.3

func (smf *Smf) GetSessionDownlinkFteid(ueCtrl jsonapi.ControlURI, ueAddr netip.Addr, dnn string) (*jsonapi.Fteid, error)

func (*Smf) GetSessionUplinkFteid added in v0.0.3

func (smf *Smf) GetSessionUplinkFteid(ueCtrl jsonapi.ControlURI, ueAddr netip.Addr, dnn string) (*jsonapi.Fteid, error)

func (*Smf) Start

func (smf *Smf) Start(ctx context.Context) error

func (*Smf) StoreNextDownlinkFteid added in v0.0.3

func (smf *Smf) StoreNextDownlinkFteid(ueCtrl jsonapi.ControlURI, ueAddr netip.Addr, dnn string, fteid *jsonapi.Fteid) error
func (smf *Smf) UpdateSessionDownlink(ueCtrl jsonapi.ControlURI, ueAddr netip.Addr, dnn string, oldGnbCtrl jsonapi.ControlURI) error

func (*Smf) UpdateSessionDownlinkContext added in v0.0.3

func (smf *Smf) UpdateSessionDownlinkContext(ctx context.Context, ueCtrl jsonapi.ControlURI, ueAddr netip.Addr, dnn string, oldGnbCtrl jsonapi.ControlURI) error

Updates Session to NextDownlinkFteid

func (*Smf) WaitShutdown

func (smf *Smf) WaitShutdown(ctx context.Context) error

type TEIDsPool

type TEIDsPool struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewTEIDsPool

func NewTEIDsPool() *TEIDsPool

func (*TEIDsPool) Delete

func (t *TEIDsPool) Delete(teid uint32)

func (*TEIDsPool) Init added in v0.0.3

func (t *TEIDsPool) Init(ctx context.Context) error

func (*TEIDsPool) Next

func (t *TEIDsPool) Next(ctx context.Context) (uint32, error)

Returns next TEID from the pool. warning: the pool must first be initialized using `Init(ctx)`

type UeIpPool

type UeIpPool struct {
	// contains filtered or unexported fields
}

func NewUeIpPool

func NewUeIpPool(pool netip.Prefix) *UeIpPool

func (*UeIpPool) Next

func (p *UeIpPool) Next() (netip.Addr, error)

type Upf

type Upf struct {
	// contains filtered or unexported fields
}

func NewUpf

func NewUpf(interfaces []config.Interface) *Upf

func (*Upf) Associate

func (upf *Upf) Associate(ctx context.Context, a pfcpapi.PFCPAssociationInterface) error

func (*Upf) CreateSession

func (upf *Upf) CreateSession(ue netip.Addr) error

func (*Upf) CreateUplinkAnchor

func (upf *Upf) CreateUplinkAnchor(ueIp netip.Addr, dnn string, listenInterface netip.Addr) (*jsonapi.Fteid, error)

func (*Upf) CreateUplinkAnchorContext added in v0.0.3

func (upf *Upf) CreateUplinkAnchorContext(ctx context.Context, ueIp netip.Addr, dnn string, listenInterface netip.Addr) (*jsonapi.Fteid, error)

func (*Upf) CreateUplinkAnchorWithFteid

func (upf *Upf) CreateUplinkAnchorWithFteid(ueIp netip.Addr, dnn string, listenFteid *jsonapi.Fteid)

func (*Upf) CreateUplinkIntermediate

func (upf *Upf) CreateUplinkIntermediate(ueIp netip.Addr, dnn string, listenInterface netip.Addr, forwardFteid *jsonapi.Fteid) (*jsonapi.Fteid, error)

func (*Upf) CreateUplinkIntermediateContext added in v0.0.3

func (upf *Upf) CreateUplinkIntermediateContext(ctx context.Context, ueIp netip.Addr, dnn string, listenInterface netip.Addr, forwardFteid *jsonapi.Fteid) (*jsonapi.Fteid, error)

func (*Upf) CreateUplinkIntermediateWithFteid

func (upf *Upf) CreateUplinkIntermediateWithFteid(ueIp netip.Addr, dnn string, listenFteid *jsonapi.Fteid, forwardFteid *jsonapi.Fteid)

func (*Upf) GetN3

func (upf *Upf) GetN3() (netip.Addr, error)

func (*Upf) GetN9

func (upf *Upf) GetN9() (netip.Addr, error)

func (*Upf) NextListenFteid

func (upf *Upf) NextListenFteid(listenInterface netip.Addr) (*jsonapi.Fteid, error)

func (*Upf) NextListenFteidContext added in v0.0.3

func (upf *Upf) NextListenFteidContext(ctx context.Context, listenInterface netip.Addr) (*jsonapi.Fteid, error)

func (*Upf) Rules

func (upf *Upf) Rules(ueIp netip.Addr) *Pfcprules

func (*Upf) UpdateDownlinkAnchor

func (upf *Upf) UpdateDownlinkAnchor(ueIp netip.Addr, dnn string, forwardFteid *jsonapi.Fteid) uint32

func (*Upf) UpdateDownlinkIntermediate

func (upf *Upf) UpdateDownlinkIntermediate(ueIp netip.Addr, dnn string, listenInterface netip.Addr, forwardFteid *jsonapi.Fteid) (*jsonapi.Fteid, uint32, error)

func (*Upf) UpdateDownlinkIntermediateContext added in v0.0.3

func (upf *Upf) UpdateDownlinkIntermediateContext(ctx context.Context, ueIp netip.Addr, dnn string, listenInterface netip.Addr, forwardFteid *jsonapi.Fteid) (*jsonapi.Fteid, uint32, error)

func (*Upf) UpdateDownlinkIntermediateDirectForward added in v0.0.3

func (upf *Upf) UpdateDownlinkIntermediateDirectForward(ueIp netip.Addr, dnn string, farid uint32, fteid *jsonapi.Fteid)

func (*Upf) UpdateDownlinkIntermediateWithFteid

func (upf *Upf) UpdateDownlinkIntermediateWithFteid(ueIp netip.Addr, dnn string, listenFteid *jsonapi.Fteid, forwardFteid *jsonapi.Fteid) uint32

func (*Upf) UpdateSession

func (upf *Upf) UpdateSession(ue netip.Addr) error

type UpfInterface

type UpfInterface struct {
	Teids *TEIDsPool
	Types []string
}

func NewUpfInterface

func NewUpfInterface(t string) *UpfInterface

func (*UpfInterface) IsN3

func (iface *UpfInterface) IsN3() bool

func (*UpfInterface) IsN9

func (iface *UpfInterface) IsN9() bool

type UpfPath

type UpfPath []netip.Addr

type UpfsMap

type UpfsMap struct {
	sync.Map
}

func NewUpfsMap

func NewUpfsMap(slices map[string]config.Slice) *UpfsMap

Jump to

Keyboard shortcuts

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