Documentation
¶
Index ¶
- Constants
- func CreateBAR(c *Client, link *Link, barid int, attrs []nl.Attr) error
- func CreateBAROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- func CreateFAR(c *Client, link *Link, farid int, attrs []nl.Attr) error
- func CreateFAROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- func CreatePDR(c *Client, link *Link, pdrid int, attrs []nl.Attr) error
- func CreatePDROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- func CreateQER(c *Client, link *Link, qerid int, attrs []nl.Attr) error
- func CreateQEROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- func CreateURR(c *Client, link *Link, urrid int, attrs []nl.Attr) error
- func CreateURROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- func DecodeVersion(b []byte) (string, error)
- func GetVersion(c *Client) (string, error)
- func MaxNetlinkUsageReportNum() int
- func NativeEndian() binary.ByteOrder
- func RemoveBAR(c *Client, link *Link, barid int) error
- func RemoveBAROID(c *Client, link *Link, oid OID) error
- func RemoveFAR(c *Client, link *Link, farid int) error
- func RemoveFAROID(c *Client, link *Link, oid OID) error
- func RemovePDR(c *Client, link *Link, pdrid int) error
- func RemovePDROID(c *Client, link *Link, oid OID) error
- func RemoveQER(c *Client, link *Link, qerid int) error
- func RemoveQEROID(c *Client, link *Link, oid OID) error
- func UpdateBAR(c *Client, link *Link, barid int, attrs []nl.Attr) error
- func UpdateBAROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- func UpdateFAR(c *Client, link *Link, farid int, attrs []nl.Attr) error
- func UpdateFAROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- func UpdatePDR(c *Client, link *Link, pdrid int, attrs []nl.Attr) error
- func UpdatePDROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- func UpdateQER(c *Client, link *Link, qerid int, attrs []nl.Attr) error
- func UpdateQEROID(c *Client, link *Link, oid OID, attrs []nl.Attr) error
- type BAR
- type Client
- type EthPktFilter
- type FAR
- type FTEID
- type FlowDesc
- type ForwardParam
- type GBR
- type HeaderCreation
- type Link
- type MACAddrFields
- type MBR
- type OID
- type PDI
- type PDR
- type QER
- type SDFFilter
- type URR
- type USAReport
- func DecodeAllUSAReports(b []byte) ([]USAReport, error)
- func GetMultiReports(c *Client, link *Link, lSeidUrridsMap map[uint64][]uint32) ([]USAReport, error)
- func GetMultiReportsOID(c *Client, link *Link, oids []OID) ([]USAReport, error)
- func GetReport(c *Client, link *Link, urrid uint64, seid uint64) ([]USAReport, error)
- func GetReportOID(c *Client, link *Link, oid OID) ([]USAReport, error)
- func RemoveURR(c *Client, link *Link, urrid int) ([]USAReport, error)
- func RemoveURROID(c *Client, link *Link, oid OID) ([]USAReport, error)
- func UpdateURR(c *Client, link *Link, urrid int, attrs []nl.Attr) ([]USAReport, error)
- func UpdateURROID(c *Client, link *Link, oid OID, attrs []nl.Attr) ([]USAReport, error)
- type UsageStatistic
- type VolumeMeasurement
- type VolumeQuota
- type VolumeThreshold
Constants ¶
const ( LINK = iota + 1 NET_NS_FD )
const ( BAR_ID = iota + 3 BAR_DOWNLINK_DATA_NOTIFICATION_DELAY BAR_BUFFERING_PACKETS_COUNT BAR_SEID )
const ( FAR_ID = iota + 3 FAR_APPLY_ACTION FAR_FORWARDING_PARAMETER FAR_RELATED_TO_PDR FAR_SEID FAR_BAR_ID )
const ( FORWARDING_PARAMETER_OUTER_HEADER_CREATION = iota + 1 FORWARDING_PARAMETER_FORWARDING_POLICY FORWARDING_PARAMETER_PFCPSM_REQ_FLAGS FORWARDING_PARAMETER_TOS_TC )
const ( OUTER_HEADER_CREATION_DESCRIPTION = iota + 1 OUTER_HEADER_CREATION_O_TEID OUTER_HEADER_CREATION_PEER_ADDR_IPV4 OUTER_HEADER_CREATION_PORT )
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 PDR_PDN_TYPE )
const ( PDI_UE_ADDR_IPV4 = iota + 1 PDI_F_TEID PDI_SDF_FILTER PDI_SRC_INTF PDI_ETHERNET_PACKET_FILTER )
const ( F_TEID_I_TEID = iota + 1 F_TEID_GTPU_ADDR_IPV4 )
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 )
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 )
const ( SDF_FILTER_ACTION_UNSPEC = iota SDF_FILTER_PERMIT )
const ( SDF_FILTER_DIRECTION_UNSPEC = iota SDF_FILTER_IN SDF_FILTER_OUT )
const ( EPF_FILTER_ETHERNET_FILTER_ID = iota + 1 EPF_FILTER_ETHERNET_FILTER_PROPERTIES EPF_FILTER_MACADDRESS EPF_FILTER_ETHERTYPE EPF_FILTER_CTAG EPF_FILTER_STAG EPF_FILTER_SDF_FILTER )
const ( MACADDRESS_SRC = iota + 1 MACADDRESS_DST MACADDRESS_UPPER_SRC MACADDRESS_UPPER_DST )
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 )
const ( QER_MBR_UL_HIGH32 = iota + 1 QER_MBR_UL_LOW8 QER_MBR_DL_HIGH32 QER_MBR_DL_LOW8 )
const ( QER_GBR_UL_HIGH32 = iota + 1 QER_GBR_UL_LOW8 QER_GBR_DL_HIGH32 QER_GBR_DL_LOW8 )
const ( USTAT_UL_VOL_RX = iota + 1 USTAT_UL_VOL_TX USTAT_DL_VOL_RX USTAT_DL_VOL_TX USTAT_UL_PKT_RX USTAT_UL_PKT_TX USTAT_DL_PKT_RX USTAT_DL_PKT_TX )
for UPF Usage Statistic
const ( UR_URRID = iota + 3 UR_USAGE_REPORT_TRIGGER UR_URSEQN UR_VOLUME_MEASUREMENT UR_QUERY_URR_REFERENCE UR_START_TIME UR_END_TIME UR_SEID )
const ( UR_VOLUME_MEASUREMENT_FLAGS = iota + 1 UR_VOLUME_MEASUREMENT_TOVOL UR_VOLUME_MEASUREMENT_UVOL UR_VOLUME_MEASUREMENT_DVOL UR_VOLUME_MEASUREMENT_TOPACKET UR_VOLUME_MEASUREMENT_UPACKET UR_VOLUME_MEASUREMENT_DPACKET )
const ( TOVOL uint8 = 1 << iota ULVOL DLVOL TONOP ULNOP DLNOP )
const ( MAX_NETLINK_MSG_BODY_SIZE = 7856 NETLIMK_ATTR_HDR_SIZE = 4 )
The maximun netlink message size is 16K, and the body for the attibutes are 7856 Bytes
const ( URR_ID = iota + 3 URR_MEASUREMENT_METHOD URR_REPORTING_TRIGGER URR_MEASUREMENT_PERIOD URR_MEASUREMENT_INFO URR_SEID URR_VOLUME_THRESHOLD URR_VOLUME_QUOTA URR_MULTI_SEID_URRID URR_NUM )
const ( URR_VOLUME_QUOTA_FLAG = iota + 1 URR_VOLUME_QUOTA_TOVOL URR_VOLUME_QUOTA_UVOL URR_VOLUME_QUOTA_DVOL )
const ( URR_VOLUME_THRESHOLD_FLAG = iota + 1 URR_VOLUME_THRESHOLD_TOVOL URR_VOLUME_THRESHOLD_UVOL URR_VOLUME_THRESHOLD_DVOL )
const ( BUFFER = iota + 1 REPORT )
const ( BUFFER_PAD = iota + 3 BUFFER_PACKET BUFFER_ID BUFFER_SEID BUFFER_ACTION )
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 CMD_GET_VERSION CMD_GET_REPORT CMD_BUFFER_GTPU CMD_GET_MULTI_REPORTS CMD_GET_USAGE_STATISTIC )
const ( IFLA_UNSPEC = iota IFLA_FD1 IFLA_HASHSIZE IFLA_ROLE IFLA_ETHERNET_N6_DEV )
const (
ATTR_MAX = 0x10
)
const (
GENL_MCGRP = iota
)
const PdrAddrForNetlink = "/"
const (
UR = iota + 5
)
Variables ¶
This section is empty.
Functions ¶
func CreateBAR ¶
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 CreateFAR ¶
m LINK: ifindex m FAR_ID: u32 m FAR_APPLY_ACTION: u16 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 CreatePDR ¶
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 CreateQER ¶
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 CreateURR ¶
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 DecodeVersion ¶
func GetVersion ¶
func MaxNetlinkUsageReportNum ¶
func MaxNetlinkUsageReportNum() int
The netlink attribute size of UR need to count the UR header(4) + size of the attributes (and it's header) in UR
func NativeEndian ¶
Types ¶
type EthPktFilter ¶ added in v1.0.1
type EthPktFilter struct {
EthFilterID *uint32
MACAddrs []MACAddrFields
Ethertype *uint16
}
func DecodeEthPktFilter ¶ added in v1.0.1
func DecodeEthPktFilter(b []byte) (EthPktFilter, error)
type FAR ¶
type FTEID ¶
func DecodeFTEID ¶
type FlowDesc ¶
type FlowDesc struct {
Action uint8
Dir uint8
Proto uint8
Src net.IPNet
Dst net.IPNet
SrcPorts [][]uint16
DstPorts [][]uint16
}
func DecodeFlowDesc ¶
type ForwardParam ¶
type ForwardParam struct {
Creation *HeaderCreation
Policy *string
TosTc uint8
}
func DecodeForwardParam ¶
func DecodeForwardParam(b []byte) (ForwardParam, error)
type GBR ¶
type HeaderCreation ¶
func DecodeHeaderCreation ¶
func DecodeHeaderCreation(b []byte) (HeaderCreation, error)
type MACAddrFields ¶ added in v1.0.1
type MACAddrFields struct {
SourceMACAddress string
DestinationMACAddress string
UpperSourceMACAddress string
UpperDestinationMACAddress string
}
func DecodeMACAddrFields ¶ added in v1.0.1
func DecodeMACAddrFields(b []byte) (MACAddrFields, error)
type MBR ¶
type PDR ¶
type QER ¶
type SDFFilter ¶
func DecodeSDFFilter ¶
type URR ¶
type URR struct {
ID uint32
Method uint8
Trigger uint32
Period *uint32
Info *uint8
SEID *uint64
VolThreshold *VolumeThreshold
VolQuota *VolumeQuota
}
type USAReport ¶
type USAReport struct {
URRID uint32
URSEQN uint32
USARTrigger uint32
VolMeasurement VolumeMeasurement
QueryUrrRef uint32
StartTime time.Time
EndTime time.Time
SEID uint64
}
func DecodeAllUSAReports ¶
func GetMultiReports ¶
func GetMultiReports(c *Client, link *Link, lSeidUrridsMap map[uint64][]uint32) ([]USAReport, error)
map[uint64][]uint32 // key: seid, value: urrids
func GetMultiReportsOID ¶
type UsageStatistic ¶ added in v1.0.1
type UsageStatistic struct {
TotalVolRx uint64
TotalVolTx uint64
UlVolRx uint64
UlVolTx uint64
DlVolRx uint64
DlVolTx uint64
TotalPktRx uint64
TotalPktTx uint64
UlPktRx uint64
UlPktTx uint64
DlPktRx uint64
DlPktTx uint64
}
func DecodeUsageStatistic ¶ added in v1.0.1
func DecodeUsageStatistic(b []byte) (*UsageStatistic, error)
func GetUsageStatistic ¶ added in v1.0.1
func GetUsageStatistic(c *Client, link *Link) (*UsageStatistic, error)
type VolumeMeasurement ¶
type VolumeQuota ¶
type VolumeQuota struct {
// contains filtered or unexported fields
}
type VolumeThreshold ¶
type VolumeThreshold struct {
// contains filtered or unexported fields
}