gtp5gnl

package module
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Jun 27, 2022 License: MIT Imports: 8 Imported by: 0

README

go-gtp5gnl

go-gtp5gnl provides a netlink library about gtp5g for Go.

License

This software is released under the MIT License, see LICENSE

Documentation

Index

Constants

View Source
const (
	LINK = iota + 1
	NET_NS_FD
)
View Source
const (
	BAR_ID = iota + 3
	BAR_DOWNLINK_DATA_NOTIFICATION_DELAY
	BAR_BUFFERING_PACKETS_COUNT
	BAR_SEID
)
View Source
const (
	FAR_ID = iota + 3
	FAR_APPLY_ACTION
	FAR_FORWARDING_PARAMETER
	FAR_RELATED_TO_PDR
	FAR_SEID
	FAR_BAR_ID
)
View Source
const (
	FORWARDING_PARAMETER_OUTER_HEADER_CREATION = iota + 1
	FORWARDING_PARAMETER_FORWARDING_POLICY
	FORWARDING_PARAMETER_PFCPSM_REQ_FLAGS
)
View Source
const (
	OUTER_HEADER_CREATION_DESCRIPTION = iota + 1
	OUTER_HEADER_CREATION_O_TEID
	OUTER_HEADER_CREATION_PEER_ADDR_IPV4
	OUTER_HEADER_CREATION_PORT
)
View Source
const (
	PDR_ID = iota + 3
	PDR_PRECEDENCE
	PDR_PDI
	PDR_OUTER_HEADER_REMOVAL
	PDR_FAR_ID
	PDR_ROLE_ADDR_IPV4
	PDR_UNIX_SOCKET_PATH
	PDR_QER_ID
	PDR_SEID
	PDR_URR_ID
)
View Source
const (
	PDI_UE_ADDR_IPV4 = iota + 1
	PDI_F_TEID
	PDI_SDF_FILTER
)
View Source
const (
	F_TEID_I_TEID = iota + 1
	F_TEID_GTPU_ADDR_IPV4
)
View Source
const (
	SDF_FILTER_FLOW_DESCRIPTION = iota + 1
	SDF_FILTER_TOS_TRAFFIC_CLASS
	SDF_FILTER_SECURITY_PARAMETER_INDEX
	SDF_FILTER_FLOW_LABEL
	SDF_FILTER_SDF_FILTER_ID
)
View Source
const (
	FLOW_DESCRIPTION_ACTION = iota + 1
	FLOW_DESCRIPTION_DIRECTION
	FLOW_DESCRIPTION_PROTOCOL
	FLOW_DESCRIPTION_SRC_IPV4
	FLOW_DESCRIPTION_SRC_MASK
	FLOW_DESCRIPTION_DEST_IPV4
	FLOW_DESCRIPTION_DEST_MASK
	FLOW_DESCRIPTION_SRC_PORT
	FLOW_DESCRIPTION_DEST_PORT
)
View Source
const (
	SDF_FILTER_ACTION_UNSPEC = iota
	SDF_FILTER_PERMIT
)
View Source
const (
	SDF_FILTER_DIRECTION_UNSPEC = iota
	SDF_FILTER_IN
	SDF_FILTER_OUT
)
View Source
const (
	QER_ID = iota + 3
	QER_GATE
	QER_MBR
	QER_GBR
	QER_CORR_ID
	QER_RQI
	QER_QFI
	QER_PPI
	QER_RCSR // deplicated
	QER_RELATED_TO_PDR
	QER_SEID
)
View Source
const (
	QER_MBR_UL_HIGH32 = iota + 1
	QER_MBR_UL_LOW8
	QER_MBR_DL_HIGH32
	QER_MBR_DL_LOW8
)
View Source
const (
	QER_GBR_UL_HIGH32 = iota + 1
	QER_GBR_UL_LOW8
	QER_GBR_DL_HIGH32
	QER_GBR_DL_LOW8
)
View Source
const (
	URR_ID = iota + 3
	URR_MEASUREMENT_METHOD
	URR_REPORTING_TRIGGER
	URR_MEASUREMENT_PERIOD
	URR_MEASUREMENT_INFO
	URR_SEQ
	URR_SEID
)
View Source
const (
	CMD_UNSPEC = iota

	CMD_ADD_PDR
	CMD_ADD_FAR
	CMD_ADD_QER

	CMD_DEL_PDR
	CMD_DEL_FAR
	CMD_DEL_QER

	CMD_GET_PDR
	CMD_GET_FAR
	CMD_GET_QER

	CMD_ADD_URR
	CMD_ADD_BAR
	CMD_DEL_URR
	CMD_DEL_BAR
	CMD_GET_URR
	CMD_GET_BAR
)
View Source
const (
	IFLA_UNSPEC = iota
	IFLA_FD1
	IFLA_HASHSIZE
	IFLA_ROLE
)
View Source
const (
	ATTR_MAX = 0x10
)

Variables

This section is empty.

Functions

func CreateBAR added in v1.3.0

func CreateBAR(c *Client, link *Link, barid int, attrs []nl.Attr) error

m LINK: ifindex o BAR_SEID: u64 m BAR_ID: u8 o BAR_DOWNLINK_DATA_NOTIFICATION_DELAY: u8 o BAR_BUFFERING_PACKETS_COUNT: u16

func CreateBAROID added in v1.3.0

func CreateBAROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func CreateFAR

func CreateFAR(c *Client, link *Link, farid int, attrs []nl.Attr) error

m LINK: ifindex m FAR_ID: u32 m FAR_APPLY_ACTION: u8 m FAR_FORWARDING_PARAMETER {

m   FORWARDING_PARAMETER_OUTER_HEADER_CREATION {
      OUTER_HEADER_CREATION_DESCRIPTION: u16
      OUTER_HEADER_CREATION_O_TEID: u32
      OUTER_HEADER_CREATION_PEER_ADDR_IPV4: [4]byte IP
      OUTER_HEADER_CREATION_PORT: u16
    }

o FORWARDING_PARAMETER_FORWARDING_POLICY: string

}

func CreateFAROID added in v1.2.0

func CreateFAROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func CreatePDR

func CreatePDR(c *Client, link *Link, pdrid int, attrs []nl.Attr) error

m LINK: ifindex m PDR_ID: u16 o PDR_PRECEDENCE: u32 o PDR_OUTER_HEADER_REMOVAL: u8 o PDR_FAR_ID: u32 o PDR_QER_ID: u32 o PDR_PDI { o PDI_UE_ADDR_IPV4: u32

o   PDI_F_TEID {
      F_TEID_I_TEID: u32
      F_TEID_GTPU_ADDR_IPV4: u32
    }
o   PDI_SDF_FILTER {
    }
  }

func CreatePDROID added in v1.2.0

func CreatePDROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func CreateQER

func CreateQER(c *Client, link *Link, qerid int, attrs []nl.Attr) error

m QER_ID: u32 o QER_GATE: u8 o QER_MBR { m QER_MBR_UL_HIGH32: u32 m QER_MBR_UL_LOW8: u8 m QER_MBR_DL_HIGH32: u32 m QER_MBR_DL_LOW8: u8

}

o QER_GBR { m QER_GBR_UL_HIGH32: u32 m QER_GBR_UL_LOW8: u8 m QER_GBR_DL_HIGH32: u32 m QER_GBR_DL_LOW8: u8

}

o QER_CORR_ID: u32 o QER_RQI: u8 o QER_QFI: u8 o QER_PPI: u8

func CreateQEROID added in v1.2.0

func CreateQEROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func CreateURR added in v1.3.0

func CreateURR(c *Client, link *Link, urrid int, attrs []nl.Attr) error

m LINK: ifindex o URR_SEID: u64 m URR_ID: u32 o URR_MEASUREMENT_METHOD: u64 o URR_REPORTING_TRIGGER: u64 o URR_MEASUREMENT_PERIOD: u64 o URR_MEASUREMENT_INFO: u64 o URR_SEQ: u64

func CreateURROID added in v1.3.0

func CreateURROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func NativeEndian

func NativeEndian() binary.ByteOrder

func RemoveBAR added in v1.3.0

func RemoveBAR(c *Client, link *Link, barid int) error

func RemoveBAROID added in v1.3.0

func RemoveBAROID(c *Client, link *Link, oid OID) error

func RemoveFAR

func RemoveFAR(c *Client, link *Link, farid int) error

func RemoveFAROID added in v1.2.0

func RemoveFAROID(c *Client, link *Link, oid OID) error

func RemovePDR

func RemovePDR(c *Client, link *Link, pdrid int) error

func RemovePDROID added in v1.2.0

func RemovePDROID(c *Client, link *Link, oid OID) error

func RemoveQER

func RemoveQER(c *Client, link *Link, qerid int) error

func RemoveQEROID added in v1.2.0

func RemoveQEROID(c *Client, link *Link, oid OID) error

func RemoveURR added in v1.3.0

func RemoveURR(c *Client, link *Link, urrid int) error

func RemoveURROID added in v1.3.0

func RemoveURROID(c *Client, link *Link, oid OID) error

func UpdateBAR added in v1.3.0

func UpdateBAR(c *Client, link *Link, barid int, attrs []nl.Attr) error

func UpdateBAROID added in v1.3.0

func UpdateBAROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func UpdateFAR

func UpdateFAR(c *Client, link *Link, farid int, attrs []nl.Attr) error

func UpdateFAROID added in v1.2.0

func UpdateFAROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func UpdatePDR

func UpdatePDR(c *Client, link *Link, pdrid int, attrs []nl.Attr) error

func UpdatePDROID added in v1.2.0

func UpdatePDROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func UpdateQER

func UpdateQER(c *Client, link *Link, qerid int, attrs []nl.Attr) error

func UpdateQEROID added in v1.2.0

func UpdateQEROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

func UpdateURR added in v1.3.0

func UpdateURR(c *Client, link *Link, urrid int, attrs []nl.Attr) error

func UpdateURROID added in v1.3.0

func UpdateURROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error

Types

type BAR added in v1.3.0

type BAR struct {
	ID    uint8
	Delay *uint8
	Count *uint16
	SEID  *uint64
}

func DecodeBAR added in v1.3.0

func DecodeBAR(b []byte) (*BAR, error)

func GetBAR added in v1.3.0

func GetBAR(c *Client, link *Link, barid int) (*BAR, error)

func GetBARAll added in v1.3.0

func GetBARAll(c *Client) ([]BAR, error)

func GetBAROID added in v1.3.0

func GetBAROID(c *Client, link *Link, oid OID) (*BAR, error)

type Client

type Client struct {
	Client *nl.Client
	ID     int
}

func NewClient

func NewClient(conn *nl.Conn, mux *nl.Mux) (*Client, error)

func (*Client) Do

func (c *Client) Do(req *nl.Request) ([]nl.Msg, error)

type FAR

type FAR struct {
	ID     uint32
	Action uint8
	Param  *ForwardParam
	PDRIDs []uint16
	BARID  *uint8
	SEID   *uint64
}

func DecodeFAR

func DecodeFAR(b []byte) (*FAR, error)

func GetFAR

func GetFAR(c *Client, link *Link, farid int) (*FAR, error)

func GetFARAll

func GetFARAll(c *Client) ([]FAR, error)

func GetFAROID added in v1.2.0

func GetFAROID(c *Client, link *Link, oid OID) (*FAR, error)

type FTEID

type FTEID struct {
	TEID     uint32
	GTPuAddr net.IP
}

func DecodeFTEID

func DecodeFTEID(b []byte) (FTEID, error)

type FlowDesc

type FlowDesc struct {
	Action   uint8
	Dir      uint8
	Proto    uint8
	Src      net.IPNet
	Dst      net.IPNet
	SrcPorts [][]uint16
	DstPorts [][]uint16
}

func DecodeFlowDesc

func DecodeFlowDesc(b []byte) (FlowDesc, error)

type ForwardParam

type ForwardParam struct {
	Creation *HeaderCreation
	Policy   *string
}

func DecodeForwardParam

func DecodeForwardParam(b []byte) (ForwardParam, error)

type GBR

type GBR struct {
	ULHigh uint32
	ULLow  uint8
	DLHigh uint32
	DLLow  uint8
}

func DecodeGBR

func DecodeGBR(b []byte) (GBR, error)

type HeaderCreation

type HeaderCreation struct {
	Desc     uint16
	TEID     uint32
	PeerAddr net.IP
	Port     uint16
}

func DecodeHeaderCreation

func DecodeHeaderCreation(b []byte) (HeaderCreation, error)
type Link struct {
	Name  string
	Index int
}
func GetLink(name string) (*Link, error)

type MBR

type MBR struct {
	ULHigh uint32
	ULLow  uint8
	DLHigh uint32
	DLLow  uint8
}

func DecodeMBR

func DecodeMBR(b []byte) (MBR, error)

type OID added in v1.2.0

type OID []uint64

func (OID) Equal added in v1.2.0

func (oid OID) Equal(a OID) bool

func (OID) ID added in v1.2.0

func (oid OID) ID() (int, bool)

func (OID) SEID added in v1.2.0

func (oid OID) SEID() (uint64, bool)

type PDI

type PDI struct {
	UEAddr net.IP
	FTEID  *FTEID
	SDF    *SDFFilter
}

func DecodePDI

func DecodePDI(b []byte) (PDI, error)

type PDR

type PDR struct {
	ID              uint16
	Precedence      *uint32
	PDI             *PDI
	OuterHdrRemoval *uint8
	FARID           *uint32
	QERID           *uint32
	URRID           *uint32
	SEID            *uint64
}

func DecodePDR

func DecodePDR(b []byte) (*PDR, error)

func GetPDR

func GetPDR(c *Client, link *Link, pdrid int) (*PDR, error)

func GetPDRAll

func GetPDRAll(c *Client) ([]PDR, error)

func GetPDROID added in v1.2.0

func GetPDROID(c *Client, link *Link, oid OID) (*PDR, error)

type QER

type QER struct {
	ID     uint32
	Gate   uint8
	MBR    MBR
	GBR    GBR
	CorrID uint32
	RQI    uint8
	QFI    uint8
	PPI    uint8
	PDRIDs []uint16
	SEID   *uint64
}

func DecodeQER

func DecodeQER(b []byte) (*QER, error)

func GetQER

func GetQER(c *Client, link *Link, qerid int) (*QER, error)

func GetQERAll

func GetQERAll(c *Client) ([]QER, error)

func GetQEROID added in v1.2.0

func GetQEROID(c *Client, link *Link, oid OID) (*QER, error)

type SDFFilter

type SDFFilter struct {
	FD  *FlowDesc
	TTC *uint16
	SPI *uint32
	FL  *uint32
	BID *uint32
}

func DecodeSDFFilter

func DecodeSDFFilter(b []byte) (SDFFilter, error)

type URR added in v1.3.0

type URR struct {
	ID      uint32
	Method  uint64
	Trigger uint64
	Period  *uint64
	Info    *uint64
	Seq     *uint64
	SEID    *uint64
}

func DecodeURR added in v1.3.0

func DecodeURR(b []byte) (*URR, error)

func GetURR added in v1.3.0

func GetURR(c *Client, link *Link, urrid int) (*URR, error)

func GetURRAll added in v1.3.0

func GetURRAll(c *Client) ([]URR, error)

func GetURROID added in v1.3.0

func GetURROID(c *Client, link *Link, oid OID) (*URR, error)

Directories

Path Synopsis
cmd
gogtp5g-link command
gogtp5g-tunnel command

Jump to

Keyboard shortcuts

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