nas

package
v0.6.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	QFDParamID5QI    uint8 = 0x01
	QFDParamIDGfbrUl uint8 = 0x02
	QFDParamIDGfbrDl uint8 = 0x03
	QFDParamIDMfbrUl uint8 = 0x04
	QFDParamIDMfbrDl uint8 = 0x05
	QFDParamIDAvgWnd uint8 = 0x06
	QFDParamIDEpsBId uint8 = 0x07
)

---- QFD constants (TS 24.501 §9.11.4.12) ----

View Source
const (
	QFDQfiBitmask    uint8 = 0x3f // bits 6..1
	QFDOpCodeBitmask uint8 = 0xe0 // bits 8..6
	QFDEbit          uint8 = 0x40 // bit 6 in the NumOfParam octet
)
View Source
const (
	QFRateUnit1Kbps uint8 = 0x01
	QFRateUnit1Mbps uint8 = 0x06
	QFRateUnit1Gbps uint8 = 0x0B
)

Unit codes used in rate params

View Source
const QFDFixLen uint8 = 0x03

Variables

This section is empty.

Functions

This section is empty.

Types

type AMBR

type AMBR struct {
	Value uint64 `json:"value"`
	Unit  string `json:"unit"`
}

type Additional5GSecurityInformation

type Additional5GSecurityInformation struct {
	RINMR uint8 `json:"rinmr"`
	HDP   uint8 `json:"hdp"`
}

type AllowedPDUSessionStatus

type AllowedPDUSessionStatus struct {
	PDUSessionID int  `json:"pdu_session_id"`
	Active       bool `json:"active"`
}

type AuthenticationFailure

type AuthenticationFailure struct {
	ExtendedProtocolDiscriminator       uint8                  `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                  `json:"spare_half_octet_and_security_header_type"`
	Cause5GMM                           utils.EnumField[uint8] `json:"cause"`

	AuthenticationFailureParameter *string `json:"authentication_failure_parameter,omitempty"`
}

type AuthenticationReject

type AuthenticationReject struct {
	ExtendedProtocolDiscriminator       uint8  `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8  `json:"spare_half_octet_and_security_header_type"`
	EAPMessage                          []byte `json:"eap_message,omitempty"`
}

type AuthenticationRequest

type AuthenticationRequest struct {
	ExtendedProtocolDiscriminator       uint8     `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8     `json:"spare_half_octet_and_security_header_type"`
	SpareHalfOctetAndNgksi              uint8     `json:"spare_half_octet_and_ngksi"`
	ABBA                                []uint8   `json:"abba"`
	AuthenticationParameterAUTN         [16]uint8 `json:"authentication_parameter_autn,omitempty"`
	AuthenticationParameterRAND         [16]uint8 `json:"authentication_parameter_rand,omitempty"`
	EAPMessage                          []byte    `json:"eap_message,omitempty"`
}

type AuthenticationResponse

type AuthenticationResponse struct {
	ExtendedProtocolDiscriminator       uint8                            `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                            `json:"spare_half_octet_and_security_header_type"`
	AuthenticationResponseParameter     *AuthenticationResponseParameter `json:"authentication_response_parameter,omitempty"`
	EAPMessage                          []byte                           `json:"eap_message,omitempty"`
}

type AuthenticationResponseParameter

type AuthenticationResponseParameter struct {
	ResStar [16]uint8 `json:"res_star"`
}

type Capability5GSM

type Capability5GSM struct {
	RqoS   uint8 `json:"rqo_s"`
	MH6PDU uint8 `json:"mh_6_pdu"`
}

type CipheringAlgorithm

type CipheringAlgorithm struct {
	NEA0 bool `json:"nea0"`
	NEA1 bool `json:"nea1"`
	NEA2 bool `json:"nea2"`
	NEA3 bool `json:"nea3"`
}

type DLNASTransport

type DLNASTransport struct {
	ExtendedProtocolDiscriminator         uint8                   `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType   uint8                   `json:"spare_half_octet_and_security_header_type"`
	SpareHalfOctetAndPayloadContainerType uint8                   `json:"spare_half_octet_and_payload_container_type"`
	PayloadContainer                      PayloadContainer        `json:"payload_container"`
	PduSessionID2Value                    *uint8                  `json:"pdu_session_id_2_value,omitempty"`
	Cause5GMM                             *utils.EnumField[uint8] `json:"cause_5gmm,omitempty"`
	BackoffTimerValue                     *uint8                  `json:"backoff_timer_value,omitempty"`

	AdditionalInformation *UnsupportedIE `json:"additional_information,omitempty"`
}

type ExtendedProtocolConfigurationOptions

type ExtendedProtocolConfigurationOptions struct {
	PCSCFIPv6AddressRequestUL                                     *bool `json:"pcscf_ipv6_address_request_ul,omitempty"`
	IMCNSubsystemSignalingFlagUL                                  *bool `json:"imcn_subsystem_signaling_flag_ul,omitempty"`
	DNSServerIPv6AddressRequestUL                                 *bool `json:"dns_server_ipv6_address_request_ul,omitempty"`
	NotSupportedUL                                                *bool `json:"not_supported_ul,omitempty"`
	MSSupportOfNetworkRequestedBearerControlIndicatorUL           *bool `json:"ms_support_of_network_requested_bearer_control_indicator_ul,omitempty"`
	DSMIPv6HomeAgentAddressRequestUL                              *bool `json:"dsm_ipv6_home_agent_address_request_ul,omitempty"`
	DSMIPv6HomeNetworkPrefixRequestUL                             *bool `json:"dsm_ipv6_home_network_prefix_request_ul,omitempty"`
	DSMIPv6IPv4HomeAgentAddressRequestUL                          *bool `json:"dsm_ipv6_ipv4_home_agent_address_request_ul,omitempty"`
	IPAddressAllocationViaNASSignallingUL                         *bool `json:"ip_address_allocation_via_nas_signalling_ul,omitempty"`
	IPv4AddressAllocationViaDHCPv4UL                              *bool `json:"ipv4_address_allocation_via_dhcpv4_ul,omitempty"`
	PCSCFIPv4AddressRequestUL                                     *bool `json:"pcscf_ipv4_address_request_ul,omitempty"`
	DNSServerIPv4AddressRequestUL                                 *bool `json:"dns_server_ipv4_address_request_ul,omitempty"`
	MSISDNRequestUL                                               *bool `json:"msisdn_request_ul,omitempty"`
	IFOMSupportRequestUL                                          *bool `json:"ifom_support_request_ul,omitempty"`
	MSSupportOfLocalAddressInTFTIndicatorUL                       *bool `json:"ms_support_of_local_address_in_tft_indicator_ul,omitempty"`
	PCSCFReSelectionSupportUL                                     *bool `json:"pcscf_re_selection_support_ul,omitempty"`
	NBIFOMRequestIndicatorUL                                      *bool `json:"nbifom_request_indicator_ul,omitempty"`
	NBIFOMModeUL                                                  *bool `json:"nbifom_mode_ul,omitempty"`
	NonIPLinkMTURequestUL                                         *bool `json:"non_ip_link_mtu_request_ul,omitempty"`
	APNRateControlSupportIndicatorUL                              *bool `json:"apn_rate_control_support_indicator_ul,omitempty"`
	UEStatus3GPPPSDataOffUL                                       *bool `json:"ue_status_3gpp_ps_data_off_ul,omitempty"`
	ReliableDataServiceRequestIndicatorUL                         *bool `json:"reliable_data_service_request_indicator_ul,omitempty"`
	AdditionalAPNRateControlForExceptionDataSupportIndicatorUL    *bool `json:"additional_apn_rate_control_for_exception_data_support_indicator_ul,omitempty"`
	PDUSessionIDUL                                                *bool `json:"pdu_session_id_ul,omitempty"`
	EthernetFramePayloadMTURequestUL                              *bool `json:"ethernet_frame_payload_mtu_request_ul,omitempty"`
	UnstructuredLinkMTURequestUL                                  *bool `json:"unstructured_link_mtu_request_ul,omitempty"`
	I5GSMCauseValueUL                                             *bool `json:"i5gsm_cause_value_ul,omitempty"`
	QoSRulesWithTheLengthOfTwoOctetsSupportIndicatorUL            *bool `json:"qos_rules_with_the_length_of_two_octets_support_indicator_ul,omitempty"`
	QoSFlowDescriptionsWithTheLengthOfTwoOctetsSupportIndicatorUL *bool `json:"qos_flow_descriptions_with_the_length_of_two_octets_support_indicator_ul,omitempty"`
	LinkControlProtocolUL                                         *bool `json:"link_control_protocol_ul,omitempty"`
	PushAccessControlProtocolUL                                   *bool `json:"push_access_control_protocol_ul,omitempty"`
	ChallengeHandshakeAuthenticationProtocolUL                    *bool `json:"challenge_handshake_authentication_protocol_ul,omitempty"`
	InternetProtocolControlProtocolUL                             *bool `json:"internet_protocol_control_protocol_ul,omitempty"`

	Error string `json:"error,omitempty"` // Reserved field for decoding errors
}

type GmmHeader

type GmmHeader struct {
	MessageType utils.EnumField[uint8] `json:"message_type"`
}

type GmmMessage

type GmmMessage struct {
	GmmHeader GmmHeader `json:"gmm_header"`
	Error     string    `json:"error,omitempty"`

	RegistrationRequest    *RegistrationRequest    `json:"registration_request,omitempty"`
	RegistrationAccept     *RegistrationAccept     `json:"registration_accept,omitempty"`
	RegistrationReject     *RegistrationReject     `json:"registration_reject,omitempty"`
	RegistrationComplete   *RegistrationComplete   `json:"registration_complete,omitempty"`
	AuthenticationRequest  *AuthenticationRequest  `json:"authentication_request,omitempty"`
	AuthenticationFailure  *AuthenticationFailure  `json:"authentication_failure,omitempty"`
	AuthenticationReject   *AuthenticationReject   `json:"authentication_reject,omitempty"`
	AuthenticationResponse *AuthenticationResponse `json:"authentication_response,omitempty"`
	ULNASTransport         *ULNASTransport         `json:"ul_nas_transport,omitempty"`
	DLNASTransport         *DLNASTransport         `json:"dl_nas_transport,omitempty"`
	SecurityModeCommand    *SecurityModeCommand    `json:"security_mode_command,omitempty"`
	SecurityModeComplete   *SecurityModeComplete   `json:"security_mode_complete,omitempty"`
	ServiceRequest         *ServiceRequest         `json:"service_request,omitempty"`
	ServiceAccept          *ServiceAccept          `json:"service_accept,omitempty"`
	ServiceReject          *ServiceReject          `json:"service_reject,omitempty"`
	IdentityRequest        *IdentityRequest        `json:"identity_request,omitempty"`
	IdentityResponse       *IdentityResponse       `json:"identity_response,omitempty"`
}

type GsmHeader

type GsmHeader struct {
	MessageType utils.EnumField[uint8] `json:"message_type"`
}

type GsmMessage

type GsmMessage struct {
	GsmHeader GsmHeader `json:"gsm_header"`
	Error     string    `json:"error,omitempty"`

	PDUSessionEstablishmentRequest *PDUSessionEstablishmentRequest `json:"pdu_session_establishment_request,omitempty"`
	PDUSessionEstablishmentAccept  *PDUSessionEstablishmentAccept  `json:"pdu_session_establishment_accept,omitempty"`
}

type IdentityRequest

type IdentityRequest struct {
	ExtendedProtocolDiscriminator       uint8                  `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                  `json:"spare_half_octet_and_security_header_type"`
	TypeOfIdentity                      utils.EnumField[uint8] `json:"type_of_identity"`
}

type IdentityResponse

type IdentityResponse struct {
	ExtendedProtocolDiscriminator       uint8          `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8          `json:"spare_half_octet_and_security_header_type"`
	MobileIdentity                      MobileIdentity `json:"mobile_identity"`
}

type IntegrityAlgorithm

type IntegrityAlgorithm struct {
	NIA0 bool `json:"nia0"`
	NIA1 bool `json:"nia1"`
	NIA2 bool `json:"nia2"`
	NIA3 bool `json:"nia3"`
}

type IntegrityProtectionMaximumDataRate

type IntegrityProtectionMaximumDataRate struct {
	Uplink   uint8 `json:"uplink"`
	Downlink uint8 `json:"downlink"`
}

type MobileIdentity

type MobileIdentity struct {
	Identity utils.EnumField[uint8] `json:"identity_type"`
	PLMNID   *PLMNID                `json:"plmn_id,omitempty"`
	SUCI     *string                `json:"suci,omitempty"`
	GUTI     *string                `json:"guti,omitempty"`
	STMSI    *string                `json:"s_tmsi,omitempty"`
	IMEI     *string                `json:"imei,omitempty"`
	IMEISV   *string                `json:"imeisv,omitempty"`
}

type MobileIdentity5GS

type MobileIdentity5GS struct {
	Identity utils.EnumField[uint8] `json:"identity_type"`
	PLMNID   *PLMNID                `json:"plmn_id,omitempty"`
	SUCI     *string                `json:"suci,omitempty"`
	GUTI     *string                `json:"guti,omitempty"`
	STMSI    *string                `json:"s_tmsi,omitempty"`
	IMEI     *string                `json:"imei,omitempty"`
	IMEISV   *string                `json:"imeisv,omitempty"`
}

type NASMessage

type NASMessage struct {
	SecurityHeader SecurityHeader `json:"security_header"`
	GmmMessage     *GmmMessage    `json:"gmm_message,omitempty"`
	GsmMessage     *GsmMessage    `json:"gsm_message,omitempty"`

	Encrypted bool   `json:"encrypted"`       // Indicates if the message was encrypted
	Error     string `json:"error,omitempty"` // Reserved field for decoding errors
}

func DecodeNASMessage

func DecodeNASMessage(raw []byte) *NASMessage

type NetworkFeatureSupport5GS

type NetworkFeatureSupport5GS struct {
	Emc          uint8 `json:"emc"`
	EmcN3        uint8 `json:"emc_n3"`
	Emf          uint8 `json:"emf"`
	ImsVoPS      uint8 `json:"ims_vops"`
	IwkN26       uint8 `json:"iwk_n26"`
	Mcsi         uint8 `json:"mcsi"`
	Mpsi         uint8 `json:"mpsi"`
	IMSVoPS3GPP  uint8 `json:"ims_vops_3gpp"`
	IMSVoPSN3GPP uint8 `json:"ims_vops_n3gpp"`
}

type PDUSessionCause

type PDUSessionCause struct {
	PDUSessionID uint8                  `json:"pdu_session_id"`
	Cause        utils.EnumField[uint8] `json:"cause"`
}

type PDUSessionEstablishmentAccept

type PDUSessionEstablishmentAccept struct {
	ExtendedProtocolDiscriminator        uint8                                 `json:"extended_protocol_discriminator"`
	PDUSessionID                         uint8                                 `json:"pdu_session_id"`
	PTI                                  uint8                                 `json:"pti"`
	SelectedSSCMode                      uint8                                 `json:"selected_ssc_mode"`
	SelectedPDUSessionType               utils.EnumField[uint8]                `json:"selected_pdu_session_type"`
	AuthorizedQosRules                   []QosRule                             `json:"authorized_qos_rules"`
	SessionAMBR                          SessionAMBR                           `json:"session_ambr"`
	Cause5GSM                            *utils.EnumField[uint8]               `json:"cause_5g_s_m,omitempty"`
	PDUAddress                           *string                               `json:"pdu_address,omitempty"`
	SNSSAI                               *SNSSAI                               `json:"snssai,omitempty"`
	AuthorizedQosFlowDescriptions        []QoSFlowDescription                  `json:"authorized_qos_flow_descriptions,omitempty"`
	ExtendedProtocolConfigurationOptions *ExtendedProtocolConfigurationOptions `json:"extended_protocol_configuration_options,omitempty"`
	DNN                                  *string                               `json:"dnn,omitempty"`

	RQTimerValue                 *UnsupportedIE `json:"rq_timer_value,omitempty"`
	AlwaysonPDUSessionIndication *UnsupportedIE `json:"alwayson_pdu_session_indication,omitempty"`
	MappedEPSBearerContexts      *UnsupportedIE `json:"mapped_eps_bearer_contexts,omitempty"`
	EAPMessage                   *UnsupportedIE `json:"eap_message,omitempty"`
}

type PDUSessionEstablishmentRequest

type PDUSessionEstablishmentRequest struct {
	ExtendedProtocolDiscriminator                 uint8                                 `json:"extended_protocol_discriminator"`
	PDUSessionID                                  uint8                                 `json:"pdu_session_id"`
	PTI                                           uint8                                 `json:"pti"`
	PDUSESSIONESTABLISHMENTREQUESTMessageIdentity uint8                                 `json:"pdu_session_establishment_request_message_identity"`
	IntegrityProtectionMaximumDataRate            IntegrityProtectionMaximumDataRate    `json:"integrity_protection_maximum_data_rate"`
	PDUSessionType                                *utils.EnumField[uint8]               `json:"pdu_session_type,omitempty"`
	SSCMode                                       *uint8                                `json:"ssc_mode,omitempty"`
	Capability5GSM                                *Capability5GSM                       `json:"capability_5g_s_m,omitempty"`
	ExtendedProtocolConfigurationOptions          *ExtendedProtocolConfigurationOptions `json:"extended_protocol_configuration_options,omitempty"`

	MaximumNumberOfSupportedPacketFilters *UnsupportedIE `json:"maximum_number_of_supported_packet_filters,omitempty"`
	AlwaysonPDUSessionRequested           *UnsupportedIE `json:"alwayson_pdu_session_requested,omitempty"`
	SMPDUDNRequestContainer               *UnsupportedIE `json:"smpdu_dn_request_container,omitempty"`
}

type PDUSessionReactivateResultPDU

type PDUSessionReactivateResultPDU struct {
	PDUSessionID int  `json:"pdu_session_id"`
	Active       bool `json:"active"`
}

type PDUSessionStatusPDU

type PDUSessionStatusPDU struct {
	PDUSessionID int  `json:"pdu_session_id"`
	Active       bool `json:"active"`
}

type PLMNID

type PLMNID struct {
	Mcc string `json:"mcc"`
	Mnc string `json:"mnc"`
}

type PacketFilter

type PacketFilter struct {
	Content       []PacketFilterComponent `json:"content"`
	Direction     utils.EnumField[uint8]  `json:"direction"`
	Identifier    uint8                   `json:"identifier"` // only 0-15
	ContentLength uint8                   `json:"content_length"`
}

type PacketFilterComponent

type PacketFilterComponent struct {
	ComponentValue []byte                 `json:"component_value"`
	ComponentType  utils.EnumField[uint8] `json:"component_type"`
}

type PayloadContainer

type PayloadContainer struct {
	Raw        []byte      `json:"raw"`
	GsmMessage *GsmMessage `json:"gsm_message,omitempty"`

	Error string `json:"error,omitempty"` // Reserved field for decoding errors
}

type QoSFlowDescription

type QoSFlowDescription struct {
	ParamList  []QosFlowParameter     `json:"param_list"`
	Qfi        uint8                  `json:"qfi"`
	OpCode     utils.EnumField[uint8] `json:"op_code"`
	EBit       bool                   `json:"e_bit"`
	ParamCount uint8                  `json:"param_count"`
	QFDLen     uint8                  `json:"qfd_len"`
}

func ParseAuthorizedQosFlowDescriptions

func ParseAuthorizedQosFlowDescriptions(content []byte) ([]QoSFlowDescription, error)

type QosFlowParameter

type QosFlowParameter struct {
	ParamID  utils.EnumField[uint8] `json:"identifier"`
	ParamLen uint8                  `json:"length"`

	// Decoded variants (only one or few will be set depending on ParamID):
	FiveQI      *uint8  `json:"five_qi,omitempty"`
	GfbrUlKbps  *uint64 `json:"gfbr_ul_kbps,omitempty"`
	GfbrDlKbps  *uint64 `json:"gfbr_dl_kbps,omitempty"`
	MfbrUlKbps  *uint64 `json:"mfbr_ul_kbps,omitempty"`
	MfbrDlKbps  *uint64 `json:"mfbr_dl_kbps,omitempty"`
	AvgWindowMs *uint16 `json:"averaging_window_ms,omitempty"`
	EpsBearerID *uint8  `json:"eps_bearer_id,omitempty"`
}

type QosRule

type QosRule struct {
	PacketFilterList []PacketFilter         `json:"packet_filter_list"`
	Identifier       uint8                  `json:"identifier"`
	OperationCode    uint8                  `json:"operation_code"`
	DQR              utils.EnumField[uint8] `json:"dqr"`
	Segregation      uint8                  `json:"segregation"`
	Precedence       uint8                  `json:"precedence"`
	QFI              uint8                  `json:"qfi"`
	Length           uint8                  `json:"length"`
}

func UnmarshalQosRules

func UnmarshalQosRules(data []byte) ([]QosRule, error)

type RegistrationAccept

type RegistrationAccept struct {
	ExtendedProtocolDiscriminator       uint8                     `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                     `json:"spare_half_octet_and_security_header_type"`
	RegistrationResult5GS               utils.EnumField[uint8]    `json:"registration_result_5gs"`
	GUTI5G                              *string                   `json:"guti_5g,omitempty"`
	EquivalentPLMNs                     []PLMNID                  `json:"equivalent_plmns,omitempty"`
	TAIList                             []TAI                     `json:"tai_list,omitempty"`
	AllowedNSSAI                        []SNSSAI                  `json:"allowed_nssai,omitempty"`
	NetworkFeatureSupport5GS            *NetworkFeatureSupport5GS `json:"network_feature_support_5gs,omitempty"`

	RejectedNSSAI                            *UnsupportedIE `json:"rejected_nssai,omitempty"`
	ConfiguredNSSAI                          *UnsupportedIE `json:"configured_nssai,omitempty"`
	PDUSessionStatus                         *UnsupportedIE `json:"pdu_session_status,omitempty"`
	PDUSessionReactivationResult             *UnsupportedIE `json:"pdu_session_reactivation_result,omitempty"`
	PDUSessionReactivationResultErrorCause   *UnsupportedIE `json:"pdu_session_reactivation_result_error_cause,omitempty"`
	LADNInformation                          *UnsupportedIE `json:"ladn_information,omitempty"`
	MICOIndication                           *UnsupportedIE `json:"mico_indication,omitempty"`
	NetworkSlicingIndication                 *UnsupportedIE `json:"network_slicing_indication,omitempty"`
	ServiceAreaList                          *UnsupportedIE `json:"service_area_list,omitempty"`
	T3512Value                               *UnsupportedIE `json:"t3512_value,omitempty"`
	Non3GppDeregistrationTimerValue          *UnsupportedIE `json:"non_3gpp_deregistration_timer_value,omitempty"`
	T3502Value                               *UnsupportedIE `json:"t3502_value,omitempty"`
	EmergencyNumberList                      *UnsupportedIE `json:"emergency_number_list,omitempty"`
	ExtendedEmergencyNumberList              *UnsupportedIE `json:"extended_emergency_number_list,omitempty"`
	SORTransparentContainer                  *UnsupportedIE `json:"sor_transparent_container,omitempty"`
	EAPMessage                               *UnsupportedIE `json:"eap_message,omitempty"`
	NSSAIInclusionMode                       *UnsupportedIE `json:"nssai_inclusion_mode,omitempty"`
	OperatordefinedAccessCategoryDefinitions *UnsupportedIE `json:"operatordefined_access_category_definitions,omitempty"`
	NegotiatedDRXParameters                  *UnsupportedIE `json:"negotiated_drx_parameters,omitempty"`
}

type RegistrationComplete

type RegistrationComplete struct {
	ExtendedProtocolDiscriminator       uint8   `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8   `json:"spare_half_octet_and_security_header_type"`
	GetSORContent                       []uint8 `json:"sor_transparent_container,omitempty"`
}

type RegistrationReject

type RegistrationReject struct {
	ExtendedProtocolDiscriminator       uint8                  `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                  `json:"spare_half_octet_and_security_header_type"`
	Cause5GMM                           utils.EnumField[uint8] `json:"cause_5gmm"`

	T3346Value *UnsupportedIE `json:"t3346_value,omitempty"`
	T3502Value *UnsupportedIE `json:"t3502_value,omitempty"`
	EAPMessage *UnsupportedIE `json:"eap_message,omitempty"`
}

type RegistrationRequest

type RegistrationRequest struct {
	ExtendedProtocolDiscriminator       uint8                  `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                  `json:"spare_half_octet_and_security_header_type"`
	NasKeySetIdentifier                 uint8                  `json:"nas_key_set_identifier,omitempty"`
	RegistrationType5GS                 utils.EnumField[uint8] `json:"registration_type_5gs"`
	MobileIdentity5GS                   MobileIdentity5GS      `json:"mobile_identity_5gs"`
	UESecurityCapability                *UESecurityCapability  `json:"ue_security_capability,omitempty"`
	NASMessageContainer                 []byte                 `json:"nas_message_container,omitempty"`

	NoncurrentNativeNASKeySetIdentifier *UnsupportedIE `json:"noncurrent_native_nas_key_set_identifier,omitempty"`
	Capability5GMM                      *UnsupportedIE `json:"capability_5gmm,omitempty"`
	RequestedNSSAI                      *UnsupportedIE `json:"requested_nssai,omitempty"`
	LastVisitedRegisteredTAI            *UnsupportedIE `json:"last_visited_registered_tai,omitempty"`
	S1UENetworkCapability               *UnsupportedIE `json:"s1_ue_network_capability,omitempty"`
	UplinkDataStatus                    *UnsupportedIE `json:"uplink_data_status,omitempty"`
	PDUSessionStatus                    *UnsupportedIE `json:"pdu_session_status,omitempty"`
	MICOIndication                      *UnsupportedIE `json:"mico_indication,omitempty"`
	UEStatus                            *UnsupportedIE `json:"ue_status,omitempty"`
	AdditionalGUTI                      *UnsupportedIE `json:"additional_guti,omitempty"`
	AllowedPDUSessionStatus             *UnsupportedIE `json:"allowed_pdu_session_status,omitempty"`
	UesUsageSetting                     *UnsupportedIE `json:"ues_usage_setting,omitempty"`
	RequestedDRXParameters              *UnsupportedIE `json:"requested_drx_parameters,omitempty"`
	EPSNASMessageContainer              *UnsupportedIE `json:"eps_nas_message_container,omitempty"`
	LADNIndication                      *UnsupportedIE `json:"ladn_indication,omitempty"`
	PayloadContainer                    *UnsupportedIE `json:"payload_container,omitempty"`
	NetworkSlicingIndication            *UnsupportedIE `json:"network_slicing_indication,omitempty"`
	UpdateType5GS                       *UnsupportedIE `json:"update_type_5gs,omitempty"`
}

type SNSSAI

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

type SecurityHeader

type SecurityHeader struct {
	ProtocolDiscriminator     utils.EnumField[uint8] `json:"protocol_discriminator"`
	SecurityHeaderType        utils.EnumField[uint8] `json:"security_header_type"`
	MessageAuthenticationCode uint32                 `json:"authentication_code,omitempty"`
	SequenceNumber            uint8                  `json:"sequence_number"`
}

type SecurityModeCommand

type SecurityModeCommand struct {
	ExtendedProtocolDiscriminator       uint8                            `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                            `json:"spare_half_octet_and_security_header_type"`
	SelectedNASSecurityAlgorithms       SelectedNASSecurityAlgorithms    `json:"selected_nas_security_algorithms"`
	SpareHalfOctetAndNgksi              uint8                            `json:"spare_half_octet_and_ngksi"`
	ReplayedUESecurityCapabilities      UESecurityCapability             `json:"replayed_ue_security_capabilities"`
	IMEISVRequest                       *utils.EnumField[uint8]          `json:"imeisv_request,omitempty"`
	SelectedEPSNASSecurityAlgorithms    *utils.EnumField[uint8]          `json:"selected_eps_nas_security_algorithms,omitempty"`
	Additional5GSecurityInformation     *Additional5GSecurityInformation `json:"additional_5g_security_information,omitempty"`
	EAPMessage                          []byte                           `json:"eap_message,omitempty"`
	ABBA                                []uint8                          `json:"abba,omitempty"`

	ReplayedS1UESecurityCapabilities *UnsupportedIE `json:"replayed_s1_ue_security_capabilities,omitempty"`
}

type SecurityModeComplete

type SecurityModeComplete struct {
	ExtendedProtocolDiscriminator       uint8   `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8   `json:"spare_half_octet_and_security_header_type"`
	IMEISV                              *string `json:"imeisv,omitempty"`
	NASMessageContainer                 []byte  `json:"nas_message_container,omitempty"`
}

type SelectedNASSecurityAlgorithms

type SelectedNASSecurityAlgorithms struct {
	Integrity utils.EnumField[uint8] `json:"integrity"`
	Ciphering utils.EnumField[uint8] `json:"ciphering"`
}

type ServiceAccept

type ServiceAccept struct {
	ExtendedProtocolDiscriminator          uint8                           `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType    uint8                           `json:"spare_half_octet_and_security_header_type"`
	PDUSessionStatus                       []PDUSessionStatusPDU           `json:"pdu_session_status,omitempty"`
	PDUSessionReactivationResult           []PDUSessionReactivateResultPDU `json:"pdu_session_reactivation_result,omitempty"`
	PDUSessionReactivationResultErrorCause []PDUSessionCause               `json:"pdu_session_reactivation_result_error_cause,omitempty"`
	EAPMessage                             []byte                          `json:"eap_message,omitempty"`
}

type ServiceReject

type ServiceReject struct {
	ExtendedProtocolDiscriminator       uint8                  `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                  `json:"spare_half_octet_and_security_header_type"`
	Cause5GMM                           utils.EnumField[uint8] `json:"cause"`
	PDUSessionStatus                    []PDUSessionStatusPDU  `json:"pdu_session_status,omitempty"`
	T3346Value                          *uint8                 `json:"t3346_value,omitempty"`
	EAPMessage                          []byte                 `json:"eap_message,omitempty"`
}

type ServiceRequest

type ServiceRequest struct {
	ExtendedProtocolDiscriminator       uint8                     `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType uint8                     `json:"spare_half_octet_and_security_header_type"`
	ServiceTypeAndNgksi                 ServiceTypeAndNgksi       `json:"service_type_and_ngksi"`
	TMSI5GS                             TMSI5GS                   `json:"tmsi_5gs,omitempty"`
	UplinkDataStatus                    []UplinkDataStatusPDU     `json:"uplink_data_status,omitempty"`
	PDUSessionStatus                    []PDUSessionStatusPDU     `json:"pdu_session_status,omitempty"`
	AllowedPDUSessionStatus             []AllowedPDUSessionStatus `json:"allowed_pdu_session_status,omitempty"`
	NASMessageContainer                 []byte                    `json:"nas_message_container,omitempty"`
}

type ServiceTypeAndNgksi

type ServiceTypeAndNgksi struct {
	ServiceType          utils.EnumField[uint8] `json:"service_type"`
	TSC                  utils.EnumField[uint8] `json:"tsc"`
	NasKeySetIdentifiler uint8                  `json:"nas_key_set_identifier"`
}

type SessionAMBR

type SessionAMBR struct {
	Uplink   AMBR `json:"uplink"`
	Downlink AMBR `json:"downlink"`
}

type TAI

type TAI struct {
	PLMNID PLMNID `json:"plmn_id"`
	TAC    string `json:"tac"`
}

type TMSI5GS

type TMSI5GS struct {
	TypeOfIdentity utils.EnumField[uint8] `json:"type_of_identity"`
	AMFSetID       uint16                 `json:"amf_set_id"`
	AMFPointer     uint8                  `json:"amf_pointer"`
	TMSI5G         [4]uint8               `json:"tmsi_5g"`
}

type UESecurityCapability

type UESecurityCapability struct {
	IntegrityAlgorithm IntegrityAlgorithm `json:"integrity_algorithm"`
	CipheringAlgorithm CipheringAlgorithm `json:"ciphering_algorithm"`
}

type ULNASTransport

type ULNASTransport struct {
	ExtendedProtocolDiscriminator         uint8                   `json:"extended_protocol_discriminator"`
	SpareHalfOctetAndSecurityHeaderType   uint8                   `json:"spare_half_octet_and_security_header_type"`
	SpareHalfOctetAndPayloadContainerType uint8                   `json:"spare_half_octet_and_payload_container_type"`
	PayloadContainer                      PayloadContainer        `json:"payload_container"`
	PduSessionID2Value                    *uint8                  `json:"pdu_session_id_2_value,omitempty"`
	OldPDUSessionID                       *uint8                  `json:"old_pdu_session_id,omitempty"`
	RequestType                           *utils.EnumField[uint8] `json:"request_type,omitempty"`
	SNSSAI                                *SNSSAI                 `json:"snssai,omitempty"`
	DNN                                   *string                 `json:"dnn,omitempty"`

	AdditionalInformation *UnsupportedIE `json:"additional_information,omitempty"`
}

type UnsupportedIE

type UnsupportedIE struct {
	Status string `json:"status"`
}

type UplinkDataStatusPDU

type UplinkDataStatusPDU struct {
	PDUSessionID int  `json:"pdu_session_id"`
	Active       bool `json:"active"`
}

Jump to

Keyboard shortcuts

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