-
Notifications
You must be signed in to change notification settings - Fork 0
/
packet.go
103 lines (86 loc) · 4.15 KB
/
packet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package test
import (
"free5gc/lib/nas"
"free5gc/lib/nas/nasMessage"
// Nausf_UEAU_Client "free5gc/lib/openapi/Nausf_UEAuthentication"
"free5gc/lib/ngap"
"free5gc/src/test/ngapTestpacket"
// "free5gc/lib/openapi/models"
)
func GetNGSetupRequest(gnbId []byte, bitlength uint64, name string) ([]byte, error) {
message := ngapTestpacket.BuildNGSetupRequest()
// GlobalRANNodeID
ie := message.InitiatingMessage.Value.NGSetupRequest.ProtocolIEs.List[0]
gnbID := ie.Value.GlobalRANNodeID.GlobalGNBID.GNBID.GNBID
gnbID.Bytes = gnbId
gnbID.BitLength = bitlength
// RANNodeName
ie = message.InitiatingMessage.Value.NGSetupRequest.ProtocolIEs.List[1]
ie.Value.RANNodeName.Value = name
return ngap.Encoder(message)
}
func GetInitialUEMessage(ranUeNgapID int64, nasPdu []byte, fiveGSTmsi string) ([]byte, error) {
message := ngapTestpacket.BuildInitialUEMessage(ranUeNgapID, nasPdu, fiveGSTmsi)
return ngap.Encoder(message)
}
func GetUplinkNASTransport(amfUeNgapID, ranUeNgapID int64, nasPdu []byte) ([]byte, error) {
message := ngapTestpacket.BuildUplinkNasTransport(amfUeNgapID, ranUeNgapID, nasPdu)
return ngap.Encoder(message)
}
func GetInitialContextSetupResponse(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error) {
message := ngapTestpacket.BuildInitialContextSetupResponseForRegistraionTest(amfUeNgapID, ranUeNgapID)
return ngap.Encoder(message)
}
func GetInitialContextSetupResponseForServiceRequest(amfUeNgapID int64, ranUeNgapID int64, ipv4 string) ([]byte, error) {
message := ngapTestpacket.BuildInitialContextSetupResponse(amfUeNgapID, ranUeNgapID, ipv4, nil)
return ngap.Encoder(message)
}
func GetPDUSessionResourceSetupResponse(amfUeNgapID int64, ranUeNgapID int64, ipv4 string) ([]byte, error) {
message := ngapTestpacket.BuildPDUSessionResourceSetupResponseForRegistrationTest(amfUeNgapID, ranUeNgapID, ipv4)
return ngap.Encoder(message)
}
func EncodeNasPduWithSecurity(ue *RanUeContext, pdu []byte) ([]byte, error) {
m := nas.NewMessage()
err := m.PlainNasDecode(&pdu)
if err != nil {
return nil, err
}
m.SecurityHeader = nas.SecurityHeader{
ProtocolDiscriminator: nasMessage.Epd5GSMobilityManagementMessage,
SecurityHeaderType: nas.SecurityHeaderTypeIntegrityProtectedAndCiphered,
}
return NASEncode(ue, m)
}
func GetUEContextReleaseComplete(amfUeNgapID int64, ranUeNgapID int64, pduSessionIDList []int64) ([]byte, error) {
message := ngapTestpacket.BuildUEContextReleaseComplete(amfUeNgapID, ranUeNgapID, pduSessionIDList)
return ngap.Encoder(message)
}
func GetUEContextReleaseRequest(amfUeNgapID int64, ranUeNgapID int64, pduSessionIDList []int64) ([]byte, error) {
message := ngapTestpacket.BuildUEContextReleaseRequest(amfUeNgapID, ranUeNgapID, pduSessionIDList)
return ngap.Encoder(message)
}
func GetPDUSessionResourceReleaseResponse(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error) {
message := ngapTestpacket.BuildPDUSessionResourceReleaseResponseForReleaseTest(amfUeNgapID, ranUeNgapID)
return ngap.Encoder(message)
}
func GetPathSwitchRequest(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error) {
message := ngapTestpacket.BuildPathSwitchRequest(amfUeNgapID, ranUeNgapID)
message.InitiatingMessage.Value.PathSwitchRequest.ProtocolIEs.List = message.InitiatingMessage.Value.PathSwitchRequest.ProtocolIEs.List[0:5]
return ngap.Encoder(message)
}
func GetHandoverRequired(amfUeNgapID int64, ranUeNgapID int64, targetGNBID []byte, targetCellID []byte) ([]byte, error) {
message := ngapTestpacket.BuildHandoverRequired(amfUeNgapID, ranUeNgapID, targetGNBID, targetCellID)
return ngap.Encoder(message)
}
func GetHandoverRequestAcknowledge(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error) {
message := ngapTestpacket.BuildHandoverRequestAcknowledge(amfUeNgapID, ranUeNgapID)
return ngap.Encoder(message)
}
func GetHandoverNotify(amfUeNgapID int64, ranUeNgapID int64) ([]byte, error) {
message := ngapTestpacket.BuildHandoverNotify(amfUeNgapID, ranUeNgapID)
return ngap.Encoder(message)
}
func GetPDUSessionResourceSetupResponseForPaging(amfUeNgapID int64, ranUeNgapID int64, ipv4 string) ([]byte, error) {
message := ngapTestpacket.BuildPDUSessionResourceSetupResponseForPaging(amfUeNgapID, ranUeNgapID, ipv4)
return ngap.Encoder(message)
}