2017-10-20 07:15:32 +00:00
|
|
|
#define TRACE_MODULE _testpacket
|
2017-02-13 07:03:12 +00:00
|
|
|
|
|
|
|
#include "core_debug.h"
|
|
|
|
#include "core_pkbuf.h"
|
2017-03-05 07:49:57 +00:00
|
|
|
#include "core_lib.h"
|
2017-03-05 06:02:12 +00:00
|
|
|
|
2017-02-20 10:46:58 +00:00
|
|
|
#include "s1ap_build.h"
|
2017-02-13 07:03:12 +00:00
|
|
|
#include "s1ap_conv.h"
|
2017-03-05 06:02:12 +00:00
|
|
|
#include "s1ap_path.h"
|
|
|
|
|
2017-11-30 11:13:15 +00:00
|
|
|
#include "gtp_message.h"
|
|
|
|
#include "gtp_node.h"
|
|
|
|
#include "gtp_path.h"
|
|
|
|
|
|
|
|
#include "mme_context.h"
|
|
|
|
|
2017-10-27 16:15:14 +00:00
|
|
|
extern int test_only_control_plane;
|
|
|
|
|
2017-11-24 13:02:40 +00:00
|
|
|
status_t tests1ap_enb_connect(sock_id *new)
|
|
|
|
{
|
|
|
|
status_t rv;
|
|
|
|
|
2017-11-25 00:58:04 +00:00
|
|
|
rv = s1ap_client(new, AF_UNSPEC, SOCK_STREAM, NULL, S1AP_SCTP_PORT);
|
2017-11-24 13:02:40 +00:00
|
|
|
d_assert(rv == CORE_OK, return CORE_ERROR,);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_enb_close(sock_id id)
|
|
|
|
{
|
2017-11-24 15:04:45 +00:00
|
|
|
return s1ap_delete(id);
|
2017-11-24 13:02:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_enb_read(sock_id id, pkbuf_t *recvbuf)
|
|
|
|
{
|
|
|
|
return s1ap_recv(id, recvbuf);
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_enb_send(sock_id id, pkbuf_t *sendbuf)
|
|
|
|
{
|
|
|
|
return s1ap_send(id, sendbuf, NULL);
|
|
|
|
}
|
|
|
|
|
2017-11-24 15:04:45 +00:00
|
|
|
status_t testgtpu_enb_connect(sock_id *new)
|
2017-10-14 15:45:49 +00:00
|
|
|
{
|
|
|
|
char buf[INET_ADDRSTRLEN];
|
2017-11-22 15:19:28 +00:00
|
|
|
status_t rv;
|
2017-10-14 15:45:49 +00:00
|
|
|
mme_context_t *mme = mme_self();
|
2017-11-22 15:19:28 +00:00
|
|
|
c_sockaddr_t addr;
|
|
|
|
|
2017-11-24 15:04:45 +00:00
|
|
|
if (test_only_control_plane) return CORE_OK;
|
2017-11-22 15:19:28 +00:00
|
|
|
|
2017-11-24 15:04:45 +00:00
|
|
|
if (!mme) return CORE_ERROR;
|
2017-10-14 15:45:49 +00:00
|
|
|
|
2017-11-22 15:19:28 +00:00
|
|
|
memset(&addr, 0, sizeof(c_sockaddr_t));
|
|
|
|
addr.sin.sin_addr.s_addr = mme->gtpc_addr;
|
|
|
|
addr.c_sa_family = AF_INET;
|
|
|
|
addr.c_sa_port = htons(GTPV1_U_UDP_PORT);
|
2017-10-27 16:15:14 +00:00
|
|
|
|
2017-11-24 15:04:45 +00:00
|
|
|
rv = udp_socket(new, AF_INET);
|
|
|
|
d_assert(rv == CORE_OK, return CORE_ERROR,);
|
2017-10-14 15:45:49 +00:00
|
|
|
|
2017-11-24 15:04:45 +00:00
|
|
|
rv = sock_bind(*new, &addr);
|
|
|
|
d_assert(rv == CORE_OK, return CORE_ERROR,);
|
2017-10-14 15:45:49 +00:00
|
|
|
|
2017-11-24 15:04:45 +00:00
|
|
|
return CORE_OK;
|
2017-10-14 15:45:49 +00:00
|
|
|
}
|
|
|
|
|
2017-11-22 15:19:28 +00:00
|
|
|
status_t testgtpu_enb_close(sock_id sock)
|
2017-10-14 15:45:49 +00:00
|
|
|
{
|
2017-10-27 16:15:14 +00:00
|
|
|
if (test_only_control_plane) return CORE_OK;
|
|
|
|
|
2017-11-22 15:19:28 +00:00
|
|
|
return sock_delete(sock);
|
2017-10-14 15:45:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static uint16_t in_cksum(uint16_t *addr, int len)
|
|
|
|
{
|
|
|
|
int nleft = len;
|
|
|
|
uint32_t sum = 0;
|
|
|
|
uint16_t *w = addr;
|
|
|
|
uint16_t answer = 0;
|
|
|
|
|
|
|
|
// Adding 16 bits sequentially in sum
|
|
|
|
while (nleft > 1) {
|
|
|
|
sum += *w;
|
|
|
|
nleft -= 2;
|
|
|
|
w++;
|
|
|
|
}
|
|
|
|
|
|
|
|
// If an odd byte is left
|
|
|
|
if (nleft == 1) {
|
|
|
|
*(unsigned char *) (&answer) = *(unsigned char *) w;
|
|
|
|
sum += answer;
|
|
|
|
}
|
|
|
|
|
|
|
|
sum = (sum >> 16) + (sum & 0xffff);
|
|
|
|
sum += (sum >> 16);
|
|
|
|
answer = ~sum;
|
|
|
|
|
|
|
|
return answer;
|
|
|
|
}
|
|
|
|
|
2017-11-24 13:02:40 +00:00
|
|
|
status_t testgtpu_enb_send(sock_id sock, c_uint32_t src_ip, c_uint32_t dst_ip)
|
2017-10-14 15:45:49 +00:00
|
|
|
{
|
2017-10-20 09:01:47 +00:00
|
|
|
hash_index_t *hi = NULL;
|
|
|
|
mme_ue_t *mme_ue = NULL;
|
|
|
|
mme_sess_t *sess = NULL;
|
|
|
|
mme_bearer_t *bearer = NULL;
|
2017-10-14 15:45:49 +00:00
|
|
|
|
|
|
|
status_t rv;
|
|
|
|
pkbuf_t *pkbuf = NULL;
|
|
|
|
gtp_header_t *gtp_h = NULL;
|
|
|
|
gtp_node_t gnode;
|
|
|
|
struct ip *ip_h = NULL;
|
|
|
|
struct icmp_header_t {
|
|
|
|
c_int8_t type;
|
|
|
|
c_int8_t code;
|
|
|
|
c_int16_t checksum;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
c_int16_t id;
|
|
|
|
c_int16_t sequence;
|
|
|
|
} echo; /* echo datagram */
|
|
|
|
u_int32_t gateway; /* gateway address */
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
c_int16_t __glibc_reserved;
|
|
|
|
c_int16_t mtu;
|
|
|
|
} frag; /* path mtu discovery */
|
|
|
|
} un;
|
|
|
|
} *icmp_h = NULL;
|
|
|
|
|
2017-10-27 16:15:14 +00:00
|
|
|
if (test_only_control_plane) return 0;
|
|
|
|
|
2017-10-20 09:01:47 +00:00
|
|
|
hi = mme_ue_first();
|
|
|
|
if (!hi) return -1;
|
|
|
|
mme_ue = mme_ue_this(hi);
|
|
|
|
if (!mme_ue) return -1;
|
|
|
|
sess = mme_sess_first(mme_ue);
|
|
|
|
if (!sess) return -1;
|
|
|
|
bearer = mme_bearer_first(sess);
|
|
|
|
if (!bearer) return -1;
|
|
|
|
|
2017-10-14 15:45:49 +00:00
|
|
|
pkbuf = pkbuf_alloc(0, 100 /* enough for ICMP; use smaller buffer */);
|
|
|
|
d_assert(pkbuf, return CORE_ERROR,);
|
|
|
|
memset(pkbuf->payload, 0, pkbuf->len);
|
|
|
|
|
|
|
|
gtp_h = (gtp_header_t *)pkbuf->payload;
|
|
|
|
ip_h = (struct ip *)(pkbuf->payload + GTPV1U_HEADER_LEN);
|
|
|
|
icmp_h = (struct icmp_header_t *)
|
|
|
|
(pkbuf->payload + GTPV1U_HEADER_LEN + sizeof(struct ip));
|
|
|
|
|
|
|
|
gtp_h->flags = 0x30;
|
|
|
|
gtp_h->type = GTPU_MSGTYPE_GPDU;
|
|
|
|
gtp_h->teid = htonl(1);
|
|
|
|
gtp_h->length = htons(sizeof(struct ip) + sizeof(struct icmp_header_t));
|
|
|
|
|
|
|
|
ip_h->ip_v = 4;
|
|
|
|
ip_h->ip_hl = 5;
|
|
|
|
ip_h->ip_tos = 0;
|
|
|
|
ip_h->ip_id = rand();
|
|
|
|
ip_h->ip_off = 0;
|
|
|
|
ip_h->ip_ttl = 255;
|
|
|
|
ip_h->ip_p = IPPROTO_ICMP;
|
|
|
|
ip_h->ip_len = gtp_h->length;
|
2017-10-17 04:53:55 +00:00
|
|
|
ip_h->ip_src.s_addr = src_ip;
|
|
|
|
ip_h->ip_dst.s_addr = dst_ip;
|
2017-10-14 15:45:49 +00:00
|
|
|
ip_h->ip_sum = in_cksum(
|
|
|
|
(unsigned short *)ip_h, sizeof(struct ip));
|
|
|
|
|
|
|
|
icmp_h->type = 8;
|
|
|
|
icmp_h->un.echo.sequence = rand();
|
|
|
|
icmp_h->un.echo.id = rand();
|
|
|
|
icmp_h->checksum = in_cksum(
|
|
|
|
(unsigned short *)icmp_h, sizeof(struct icmp_header_t));
|
|
|
|
|
2017-11-25 14:41:00 +00:00
|
|
|
gnode.old_addr.sin.sin_addr.s_addr = bearer->sgw_s1u_addr;
|
|
|
|
gnode.old_addr.c_sa_port = htons(GTPV1_U_UDP_PORT);
|
|
|
|
gnode.old_addr.c_sa_family = AF_INET;
|
2017-10-14 15:45:49 +00:00
|
|
|
gnode.sock = sock;
|
|
|
|
|
|
|
|
rv = gtp_send(&gnode, pkbuf);
|
|
|
|
pkbuf_free(pkbuf);
|
|
|
|
|
2017-11-24 13:02:40 +00:00
|
|
|
return rv;
|
2017-10-14 15:45:49 +00:00
|
|
|
}
|
|
|
|
|
2017-11-24 13:02:40 +00:00
|
|
|
status_t testgtpu_enb_read(sock_id sock, pkbuf_t *recvbuf)
|
2017-10-14 15:45:49 +00:00
|
|
|
{
|
2017-10-20 07:15:32 +00:00
|
|
|
int rc = 0;
|
|
|
|
|
2017-10-27 16:15:14 +00:00
|
|
|
if (test_only_control_plane) return 0;
|
|
|
|
|
2017-10-20 07:15:32 +00:00
|
|
|
while(1)
|
|
|
|
{
|
2017-11-22 15:19:28 +00:00
|
|
|
rc = core_recv(sock, recvbuf->payload, recvbuf->len, 0);
|
2017-10-20 07:15:32 +00:00
|
|
|
if (rc == -2)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
else if (rc <= 0)
|
|
|
|
{
|
2017-11-22 15:19:28 +00:00
|
|
|
if (errno == EAGAIN)
|
2017-10-20 07:15:32 +00:00
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2017-11-24 13:02:40 +00:00
|
|
|
recvbuf->len = rc;
|
2017-10-20 07:15:32 +00:00
|
|
|
|
2017-11-24 13:02:40 +00:00
|
|
|
return CORE_OK;
|
2017-10-14 15:45:49 +00:00
|
|
|
}
|
2017-02-13 07:03:12 +00:00
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
status_t tests1ap_build_setup_req(
|
|
|
|
pkbuf_t **pkbuf, S1ap_ENB_ID_PR present, c_uint32_t enb_id)
|
2017-02-13 07:03:12 +00:00
|
|
|
{
|
|
|
|
int erval = -1;
|
|
|
|
|
2017-03-06 00:07:59 +00:00
|
|
|
s1ap_message_t message;
|
2017-02-13 07:03:12 +00:00
|
|
|
S1ap_S1SetupRequestIEs_t *ies;
|
|
|
|
S1ap_PLMNidentity_t *plmnIdentity;
|
|
|
|
S1ap_SupportedTAs_Item_t *supportedTA;
|
|
|
|
|
2017-03-06 00:07:59 +00:00
|
|
|
memset(&message, 0, sizeof(s1ap_message_t));
|
2017-02-13 07:03:12 +00:00
|
|
|
|
2017-03-05 02:46:42 +00:00
|
|
|
ies = &message.s1ap_S1SetupRequestIEs;
|
2017-02-13 07:03:12 +00:00
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
s1ap_uint32_to_ENB_ID(present, enb_id, &ies->global_ENB_ID.eNB_ID);
|
2017-07-14 15:27:22 +00:00
|
|
|
s1ap_buffer_to_OCTET_STRING(&mme_self()->served_tai[0].plmn_id,
|
|
|
|
PLMN_ID_LEN, &ies->global_ENB_ID.pLMNidentity);
|
2017-02-13 07:03:12 +00:00
|
|
|
|
|
|
|
supportedTA = (S1ap_SupportedTAs_Item_t *)
|
|
|
|
core_calloc(1, sizeof(S1ap_SupportedTAs_Item_t));
|
2017-03-05 02:29:15 +00:00
|
|
|
s1ap_uint16_to_OCTET_STRING(
|
2017-07-14 15:27:22 +00:00
|
|
|
mme_self()->served_tai[0].tac, &supportedTA->tAC);
|
2017-02-13 07:03:12 +00:00
|
|
|
plmnIdentity = (S1ap_PLMNidentity_t *)
|
|
|
|
core_calloc(1, sizeof(S1ap_PLMNidentity_t));
|
2017-07-14 15:27:22 +00:00
|
|
|
s1ap_buffer_to_OCTET_STRING(&mme_self()->served_tai[0].plmn_id,
|
|
|
|
PLMN_ID_LEN, plmnIdentity);
|
2017-02-13 07:03:12 +00:00
|
|
|
ASN_SEQUENCE_ADD(&supportedTA->broadcastPLMNs, plmnIdentity);
|
|
|
|
|
|
|
|
ASN_SEQUENCE_ADD(&ies->supportedTAs, supportedTA);
|
|
|
|
|
2017-07-14 11:46:15 +00:00
|
|
|
ies->defaultPagingDRX = S1ap_PagingDRX_v64;
|
2017-02-14 00:09:01 +00:00
|
|
|
|
2017-02-13 07:03:12 +00:00
|
|
|
message.direction = S1AP_PDU_PR_initiatingMessage;
|
|
|
|
message.procedureCode = S1ap_ProcedureCode_id_S1Setup;
|
|
|
|
|
|
|
|
erval = s1ap_encode_pdu(pkbuf, &message);
|
|
|
|
s1ap_free_pdu(&message);
|
|
|
|
|
|
|
|
if (erval < 0)
|
|
|
|
{
|
|
|
|
d_error("s1ap_encode_error : (%d)", erval);
|
|
|
|
return CORE_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-09-12 04:54:55 +00:00
|
|
|
#define TESTS1AP_MAX_MESSAGE 32
|
2017-02-13 07:03:12 +00:00
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
status_t tests1ap_build_initial_ue_msg(pkbuf_t **pkbuf, int i)
|
2017-03-05 07:49:57 +00:00
|
|
|
{
|
2017-04-14 11:20:00 +00:00
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000c405800000500 0800020001001a00 302f177ca0b38802 0741020809101010"
|
|
|
|
"3254869104e060c0 4000050221d011d1 5c0a003103e5e034 9011035758a65d01"
|
|
|
|
"00004300060000f1 105ba00064400800 00f1101079baf000 86400130",
|
|
|
|
|
2017-07-28 03:48:49 +00:00
|
|
|
"000c40809c00"
|
2017-07-28 05:19:43 +00:00
|
|
|
"0005000800030002 00001a0073721711 a73a12070741020b f600f11000020100"
|
2017-07-28 03:48:49 +00:00
|
|
|
"00000105e060c040 0100210221d011d1 271a808021100100 0010810600000000"
|
|
|
|
"830600000000000d 00000a005255f501 10225c0a003103e5 c03e1355f501aaaa"
|
|
|
|
"11035758a6200b60 1404ef65233b8878 d290400804026004 00021f025d0107e0"
|
|
|
|
"004300060055f501 1022006440080055 f5010019d0100086 400130",
|
|
|
|
|
2017-07-27 12:50:55 +00:00
|
|
|
"000c40809c00"
|
|
|
|
"0005000800030001 00001a007372178c 3e3cff070741020b f600f11000020100"
|
2017-07-28 03:48:49 +00:00
|
|
|
"00000905e060c040 0100210204d011d1 271a808021100100 0010810600000000"
|
2017-07-27 12:50:55 +00:00
|
|
|
"830600000000000d 00000a005255f501 10225c0a003103e5 c03e1355f501aaaa"
|
|
|
|
"11035758a6200b60 1404ef65233b8878 d290400804026004 00021f025d0107e0"
|
|
|
|
"004300060055f501 1022006440080055 f5010019d0100086 400130",
|
2017-07-26 09:49:56 +00:00
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
"000c406800000500 080002001f001a00 403f074172080910 10103254866202e0"
|
|
|
|
"600021023cd011d1 271a808021100100 0010810600000000 830600000000000d"
|
|
|
|
"00000a005c0a0090 11034f18a6f15d01 00004300060000f1 1030390064400800"
|
|
|
|
"00f110002343d000 86400130",
|
2017-07-25 07:22:53 +00:00
|
|
|
|
2017-07-28 15:33:48 +00:00
|
|
|
"000c405300000500 080003001100001a 002a2917acba67c4 8207410108091010"
|
2017-07-26 14:27:03 +00:00
|
|
|
"103254866205f0f0 000000000e023cd0 11d1270780000a00 000d00c100430006"
|
2017-07-26 12:58:14 +00:00
|
|
|
"0000f1102b670064 40080000f1109d67 aa500086400130",
|
|
|
|
|
2017-07-28 15:33:48 +00:00
|
|
|
"000c405300000500 080003002100001a 002a2917bcba67c4 8207410108091010"
|
2017-07-27 12:50:55 +00:00
|
|
|
"103254866205f0f0 000000000e023cd0 11d1270780000a00 000d00c100430006"
|
|
|
|
"0000f1102b670064 40080000f1109d67 aa500086400130",
|
2017-07-26 09:49:56 +00:00
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
"000c"
|
|
|
|
"404c000005000800 020002001a002423 0741710809101010 3254767905f0f000"
|
|
|
|
"0000000e0201d011 d1270780000a0000 0d00c10043000600 00f1102b67006440"
|
|
|
|
"080000f11054f640 100086400130",
|
2017-07-26 02:28:43 +00:00
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
"000c"
|
|
|
|
"4068000005000800 020001001a00403f 0741720809101010 3254861002e06000"
|
|
|
|
"210207d011d1271a 8080211001000010 8106000000008306 00000000000d0000"
|
|
|
|
"0a005c0a00901103 4f18a6f15d010000 4300060000f1105b a0006440080000f1"
|
|
|
|
"1004615380008640 0130",
|
2017-09-12 04:54:55 +00:00
|
|
|
|
|
|
|
"000c"
|
2017-09-12 14:07:55 +00:00
|
|
|
"4080830000060008 0002000c001a0050 4f1744b524490507 41020bf600f11000"
|
|
|
|
"0201010003e802e0 6000210204d011d1 271a808021100100 0010810600000000"
|
|
|
|
"830600000000000d 00000a005200f110 30395c0a00901103 4f18a6f15d0100e0"
|
|
|
|
"004300060000f110 3039006440080000 f110001f20a00086 400130004b000700"
|
|
|
|
"00f110000201",
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
92,
|
2017-07-27 12:50:55 +00:00
|
|
|
161,
|
2017-07-28 03:48:49 +00:00
|
|
|
161,
|
2017-07-26 09:49:56 +00:00
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
108,
|
2017-07-26 12:58:14 +00:00
|
|
|
87,
|
2017-07-27 12:50:55 +00:00
|
|
|
87,
|
2017-07-26 09:49:56 +00:00
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
80,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
108,
|
2017-09-12 14:07:55 +00:00
|
|
|
136,
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
2017-03-25 01:45:49 +00:00
|
|
|
char hexbuf[MAX_SDU_LEN];
|
2017-03-05 07:49:57 +00:00
|
|
|
|
2017-03-24 12:19:24 +00:00
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
2017-03-05 07:49:57 +00:00
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
2017-03-25 01:45:49 +00:00
|
|
|
(*pkbuf)->len);
|
2017-03-05 07:49:57 +00:00
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
2017-03-06 12:45:41 +00:00
|
|
|
|
2017-07-28 03:48:49 +00:00
|
|
|
status_t tests1ap_build_identity_response(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"000d"
|
2017-08-11 05:51:05 +00:00
|
|
|
"403f000005000000 05c00100009f0008 0003000100001a00 121117d7e3248b57"
|
2017-07-28 03:48:49 +00:00
|
|
|
"0756080910101032 5486510064400800 00f11054f6401000 4340060000f1105b"
|
|
|
|
"a0",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"",
|
|
|
|
"000d"
|
|
|
|
"403e000005000000 05c0020000c40008 0002000c001a0012 1117c07eb5f50607"
|
|
|
|
"5608091010103254 8651006440080000 f110001f20a00043 40060000f1103039",
|
2017-07-28 03:48:49 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
67,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
0,
|
|
|
|
66,
|
2017-07-28 03:48:49 +00:00
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
status_t tests1ap_build_authentication_response(pkbuf_t **pkbuf, int i)
|
2017-03-06 12:45:41 +00:00
|
|
|
{
|
2017-04-14 11:20:00 +00:00
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000d403e00000500 000005c00100009d 000800020001001a 001211177c0bca9d"
|
|
|
|
"030753086a91970e 838fd07900644008 0000f1101079baf0 004340060000f110"
|
|
|
|
"5ba0",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
"000d403500000500 0000020001000800 02001f001a000c0b 07530831c964f076"
|
2017-07-25 07:22:53 +00:00
|
|
|
"1378760064400800 00f110002343d000 4340060000f11030 39",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
"000d"
|
|
|
|
"4038000005000000 05c0020000c80008 00020002001a000c 0b0753087dc78e7c"
|
|
|
|
"421f9eb900644008 0000f11054f64010 004340060000f110 2b67",
|
2017-07-26 02:28:43 +00:00
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-09-11 09:41:14 +00:00
|
|
|
|
2017-09-12 14:07:55 +00:00
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
"000d"
|
|
|
|
"4038000005000000 05c0010001da0008 00020001001a000c 0b0753084ce11ef1"
|
|
|
|
"24b1854500644008 0000f11004615380 004340060000f110 5ba0",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"000d"
|
|
|
|
"403e000005000000 05c0020000c40008 0002000c001a0012 1117deff957c0707"
|
|
|
|
"5308e3b925330735 7093006440080000 f110001f20a00043 40060000f1103039",
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
2017-07-25 07:22:53 +00:00
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
66,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
57,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
60,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
60,
|
2017-09-12 14:07:55 +00:00
|
|
|
66,
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
2017-03-25 01:45:49 +00:00
|
|
|
char hexbuf[MAX_SDU_LEN];
|
2017-03-06 12:45:41 +00:00
|
|
|
|
2017-03-24 12:19:24 +00:00
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
2017-03-06 12:45:41 +00:00
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
2017-03-25 01:45:49 +00:00
|
|
|
(*pkbuf)->len);
|
2017-03-06 12:45:41 +00:00
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
2017-03-07 05:47:17 +00:00
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
status_t tests1ap_build_security_mode_complete(pkbuf_t **pkbuf, int i)
|
2017-03-07 05:47:17 +00:00
|
|
|
{
|
2017-04-14 11:20:00 +00:00
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000d403500000500 000005c00100009d 000800020001001a 000908476b8f5f64"
|
|
|
|
"00075e0064400800 00f1101079baf000 4340060000f1105b a0",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
"000d403200000500 0000020001000800 02001f001a000908 473c0c819e00075e"
|
|
|
|
"006440080000f110 002343d000434006 0000f1103039",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
"000d"
|
|
|
|
"4035000005000000 05c0020000c80008 00020002001a0009 0847c0eb1eb80007"
|
|
|
|
"5e006440080000f1 1054f64010004340 060000f1102b67",
|
2017-07-26 02:28:43 +00:00
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-07-26 02:28:43 +00:00
|
|
|
|
2017-09-12 14:07:55 +00:00
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
"000d"
|
|
|
|
"4035000005000000 05c0010001da0008 00020001001a0009 0847d3b0ef030007"
|
|
|
|
"5e006440080000f1 1004615380004340 060000f1105ba0",
|
|
|
|
|
2017-09-12 14:07:55 +00:00
|
|
|
"000d"
|
|
|
|
"4035000005000000 05c0020000c40008 0002000c001a0009 084790282df90007"
|
|
|
|
"5e006440080000f1 10001f20a0004340 060000f1103039",
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
57,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
54,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
57,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
57,
|
2017-09-12 14:07:55 +00:00
|
|
|
57,
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
2017-03-25 01:45:49 +00:00
|
|
|
char hexbuf[MAX_SDU_LEN];
|
2017-03-07 05:47:17 +00:00
|
|
|
|
2017-03-24 12:19:24 +00:00
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
2017-03-07 05:47:17 +00:00
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
2017-03-25 01:45:49 +00:00
|
|
|
(*pkbuf)->len);
|
2017-03-07 05:47:17 +00:00
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
2017-04-11 05:26:54 +00:00
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
status_t tests1ap_build_esm_information_response(pkbuf_t **pkbuf, int i)
|
2017-04-11 05:26:54 +00:00
|
|
|
{
|
2017-04-14 11:20:00 +00:00
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
2017-04-11 05:26:54 +00:00
|
|
|
"000d40808d000005 00000005c0010000 9d00080002000100 1a006160275c0667"
|
|
|
|
"58010221da280908 696e7465726e6574 274a80c223150100 001510c09a2626c0"
|
|
|
|
"9a2626c09a2626c0 9a2626c223150200 0015103d3dda5c72 4cc497354ae64653"
|
|
|
|
"45a8088021100100 0010810600000000 830600000000000d 00000a0000644008"
|
2017-04-14 11:20:00 +00:00
|
|
|
"0000f1101079baf0 004340060000f110 5ba0",
|
2017-09-23 16:13:51 +00:00
|
|
|
"000d40808d000005 00000005c0010000 9d00080002000100 1a00616027c963b5"
|
|
|
|
"1b010221da280908 696e7465726e6574 274a80c223150100 001510c09a2626c0"
|
|
|
|
"9a2626c09a2626c0 9a2626c223150200 0015103d3dda5c72 4cc497354ae64653"
|
|
|
|
"45a8088021100100 0010810600000000 830600000000000d 00000a0000644008"
|
|
|
|
"0000f1101079baf0 004340060000f110 5ba0",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
"000d403e00000500 0000020001000800 02001f001a001514 27505a0b5301023c"
|
|
|
|
"da280908696e7465 726e657400644008 0000f110002343d0 004340060000f110"
|
2017-07-25 07:22:53 +00:00
|
|
|
"3039",
|
2017-09-23 16:13:51 +00:00
|
|
|
"000d403e00000500 0000020001000800 02001f001a001514 27b531c64f01023c"
|
|
|
|
"da280908696e7465 726e657400644008 0000f110002343d0 004340060000f110"
|
|
|
|
"3039",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
"000d"
|
|
|
|
"4041000005000000 05c0020000c80008 00020002001a0015 142793b2bedc0102"
|
|
|
|
"01da280908696e74 65726e6574006440 080000f11054f640 10004340060000f1"
|
2017-09-11 09:41:14 +00:00
|
|
|
"102b67",
|
2017-07-26 02:28:43 +00:00
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-09-11 09:41:14 +00:00
|
|
|
|
2017-09-12 14:07:55 +00:00
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
"000d"
|
|
|
|
"4041000005000000 05c0010001da0008 00020001001a0015 14279a2476c80102"
|
|
|
|
"07da280908696e74 65726e6574006440 080000f110046153 80004340060000f1"
|
|
|
|
"105ba0",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"000d"
|
|
|
|
"4041000005000000 05c0020000c40008 0002000c001a0015 14274f280bff0102"
|
|
|
|
"04da280908696e74 65726e6574006440 080000f110001f20 a0004340060000f1"
|
|
|
|
"103039",
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
146,
|
2017-09-23 16:13:51 +00:00
|
|
|
146,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
66,
|
2017-09-23 16:13:51 +00:00
|
|
|
66,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
69,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
69,
|
2017-09-12 14:07:55 +00:00
|
|
|
69,
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
2017-04-11 05:26:54 +00:00
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
2017-04-11 05:26:54 +00:00
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
2017-04-13 14:14:59 +00:00
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
status_t tests1ap_build_ue_capability_info_indication(pkbuf_t **pkbuf, int i)
|
2017-04-13 14:14:59 +00:00
|
|
|
{
|
2017-04-14 11:20:00 +00:00
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"0016"
|
2017-04-13 14:14:59 +00:00
|
|
|
"40809c0000030000 0005c00100009d00 0800020001004a40 8085808304040003"
|
|
|
|
"04ec598007000820 81839b4e1e3ff8ff f1ffc7ff8ffe3ffc 7ff1ffe3ff8fff1f"
|
|
|
|
"fc7ff8ffe3ffc7ff 1ffdfd3ffa7a2060 090e194e9525c8c2 fd80000000e03fe7"
|
|
|
|
"ff5f60000000384f e9ffd3d800000002 1033035758a66014 042f6513b8800d2f"
|
2017-04-14 11:20:00 +00:00
|
|
|
"0831c1a53432b259 ef989007000cdd9c 6331200e0019a332 c662401c003200",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
"0016402d00000300 0000020001000800 02001f004a401a19 00b801014c598080"
|
2017-07-25 07:22:53 +00:00
|
|
|
"9c000bf06ec4d001 40302c0000000000 000000",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
"0016"
|
|
|
|
"403f000003000000 05c0020000c80008 00020002004a4029 28013001023cd980"
|
|
|
|
"00bc000ff06ec4d0 0141b82c00000000 07d404000ef08020 00012a0300008800"
|
|
|
|
"00",
|
2017-07-26 02:28:43 +00:00
|
|
|
|
|
|
|
"0016"
|
|
|
|
"403f000003000000 05c0020000c70008 00020004004a4029 28013001023cd980"
|
|
|
|
"00bc000ff06ec4d0 0141b82c00000000 07d404000ef08020 00012a0300008800"
|
|
|
|
"00",
|
|
|
|
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
"0016"
|
|
|
|
"4030000003000000 05c0010001da0008 00020001004a401a 1900b801014c5980"
|
|
|
|
"809c000bf06ec4d0 0140302c00000000 0000",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"0016"
|
|
|
|
"4030000003000000 05c0020000c40008 0002000c004a401a 1900b801014c5980"
|
|
|
|
"0018000bf06ec4d0 0100302c00000000 0000",
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
161,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
51,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
67,
|
2017-07-26 02:28:43 +00:00
|
|
|
67,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
52,
|
2017-09-12 14:07:55 +00:00
|
|
|
52,
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
2017-04-13 14:14:59 +00:00
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
2017-04-13 14:14:59 +00:00
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
status_t tests1ap_build_initial_context_setup_response(pkbuf_t **pkbuf, int i)
|
2017-04-13 14:14:59 +00:00
|
|
|
{
|
2017-04-14 11:20:00 +00:00
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"2009"
|
2017-10-25 07:30:19 +00:00
|
|
|
"0025000003000040 05c00100009d0008 400200010033400f 000032400a0a1f7f"
|
2017-11-24 04:52:22 +00:00
|
|
|
"00000100000001",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
"2009002200000300 0040020001000840 02001f0033400f00 0032400a0a1f0a01"
|
|
|
|
"23c501000508",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
"2009"
|
|
|
|
"0025000003000040 05c0020000c80008 400200020033400f 000032400a0a1f0a"
|
|
|
|
"0123a701000008",
|
|
|
|
|
2017-07-26 02:28:43 +00:00
|
|
|
"2009"
|
|
|
|
"0025000003000040 05c0020000c70008 400200040033400f 000032400a0a1f0a"
|
|
|
|
"0123a701000208",
|
|
|
|
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
"2009"
|
2017-10-25 10:33:18 +00:00
|
|
|
"0025000003000040 05c0010001da0008 400200010033400f 000032400a0a1f7f"
|
2017-11-24 19:16:18 +00:00
|
|
|
"00000101000008",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"2009"
|
2017-10-25 10:33:18 +00:00
|
|
|
"0025000003000040 05c0020000c40008 4002000c0033400f 000032400a0a1f7f"
|
2017-11-24 19:16:18 +00:00
|
|
|
"00000101000808",
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
41,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
38,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
41,
|
2017-07-26 02:28:43 +00:00
|
|
|
41,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
41,
|
2017-09-12 14:07:55 +00:00
|
|
|
41,
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
2017-04-13 14:14:59 +00:00
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
2017-04-13 14:14:59 +00:00
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
status_t tests1ap_build_attach_complete(pkbuf_t **pkbuf, int i)
|
2017-04-13 14:14:59 +00:00
|
|
|
{
|
2017-07-25 07:22:53 +00:00
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000d"
|
2017-04-13 14:14:59 +00:00
|
|
|
"403a000005000000 05c00100009d0008 00020001001a000e 0d27c183eb950207"
|
2017-04-14 11:20:00 +00:00
|
|
|
"4300035200c20064 40080000f1101079 baf0004340060000 f1105ba0",
|
2017-07-26 02:28:43 +00:00
|
|
|
|
2017-09-03 15:06:39 +00:00
|
|
|
"000d"
|
|
|
|
"403a000005000000 05c00100009e0008 00020002001a000e 0d27e8a2a3f10207"
|
|
|
|
"4300035200c20064 40080000f1101079 baf0004340060000 f1105ba0",
|
2017-07-26 09:49:56 +00:00
|
|
|
|
|
|
|
"",
|
2017-09-03 15:06:39 +00:00
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-09-03 15:06:39 +00:00
|
|
|
"000d"
|
|
|
|
"403a000005000000 05c0010000020008 00020011001a000e 0d27225d92bb0207"
|
|
|
|
"4300035200c20064 40080000f1101079 baf0004340060000 f1105ba0",
|
2017-04-14 11:20:00 +00:00
|
|
|
"",
|
2017-07-25 07:22:53 +00:00
|
|
|
|
|
|
|
"000d"
|
|
|
|
"403a000005000000 05c0020000c80008 00020002001a000e 0d27f190fc2b0207"
|
|
|
|
"4300035200c20064 40080000f11054f6 4010004340060000 f1102b67",
|
2017-07-26 02:28:43 +00:00
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
"000d"
|
|
|
|
"403a000005000000 05c0010001da0008 00020001001a000e 0d272e3456f70207"
|
|
|
|
"4300035200c20064 40080000f1100461 5380004340060000 f1105ba0",
|
|
|
|
|
2017-09-12 14:07:55 +00:00
|
|
|
"000d"
|
|
|
|
"403a000005000000 05c0020000c40008 0002000c001a000e 0d276a543e560207"
|
|
|
|
"4300035200c20064 40080000f110001f 20a0004340060000 f1103039",
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
62,
|
2017-09-03 15:06:39 +00:00
|
|
|
62,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
2017-09-03 15:06:39 +00:00
|
|
|
62,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
|
2017-07-25 07:22:53 +00:00
|
|
|
62,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
62,
|
2017-09-12 14:07:55 +00:00
|
|
|
62,
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
2017-04-13 14:14:59 +00:00
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_build_emm_status(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
2017-04-14 11:20:00 +00:00
|
|
|
|
|
|
|
"000d403300000500 0000020001000800 02001f001a000a09 27574292cc020760"
|
|
|
|
"65006440080000f1 10002343d0004340 060000f1103039",
|
2017-07-25 12:15:25 +00:00
|
|
|
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-07-25 12:15:25 +00:00
|
|
|
"",
|
2017-07-26 02:28:43 +00:00
|
|
|
|
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
55,
|
2017-07-25 12:15:25 +00:00
|
|
|
0,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
2017-07-25 12:15:25 +00:00
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-07-26 05:18:28 +00:00
|
|
|
status_t tests1ap_build_detach_request(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
2017-07-28 03:48:49 +00:00
|
|
|
"000c404900000600 080003000100001a 001615172ba435db 040745090bf600f1"
|
2017-07-26 05:18:28 +00:00
|
|
|
"10000201020003e6 004300060000f110 2b67006440080000 f1109d67aa500086"
|
|
|
|
"4001300060000600 40020003e6",
|
|
|
|
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-07-26 05:18:28 +00:00
|
|
|
"",
|
|
|
|
|
2017-07-26 09:49:56 +00:00
|
|
|
""
|
|
|
|
""
|
2017-07-26 05:18:28 +00:00
|
|
|
""
|
|
|
|
|
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
"",
|
2017-07-26 05:18:28 +00:00
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
77,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-07-26 05:18:28 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-07-25 12:15:25 +00:00
|
|
|
status_t tests1ap_build_ue_context_release_request(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"",
|
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
2017-07-25 12:15:25 +00:00
|
|
|
|
|
|
|
"0012"
|
|
|
|
"4018000003000000 05c0020000c80008 0002000200024002 0280",
|
|
|
|
|
2017-07-26 02:28:43 +00:00
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-07-26 02:28:43 +00:00
|
|
|
|
2017-07-25 12:15:25 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
0,
|
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-07-25 12:15:25 +00:00
|
|
|
28,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-07-25 12:15:25 +00:00
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_build_ue_context_release_complete(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
2017-07-26 05:18:28 +00:00
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"2017001300000200 004005c00100009d 00084003400527",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
2017-07-25 12:15:25 +00:00
|
|
|
"",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
2017-08-11 05:51:05 +00:00
|
|
|
"2017"
|
|
|
|
"0012000002000040 05c00100009f0008 40020001",
|
2017-07-26 09:49:56 +00:00
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
2017-07-25 12:15:25 +00:00
|
|
|
|
|
|
|
"2017"
|
|
|
|
"0012000002000040 05c0020000c80008 40020002",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-07-26 02:28:43 +00:00
|
|
|
"",
|
|
|
|
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"2017"
|
|
|
|
"0012000002000040 05c0020000c40008 4002000c",
|
|
|
|
|
2017-09-14 12:46:56 +00:00
|
|
|
"2017"
|
|
|
|
"0012000002000040 05c0020000c50008 40020008",
|
|
|
|
|
2017-09-15 03:06:26 +00:00
|
|
|
"2017"
|
|
|
|
"0012000002000040 05c0020000c70008 40020008",
|
|
|
|
|
2017-07-25 12:15:25 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
2017-07-26 05:18:28 +00:00
|
|
|
23,
|
2017-07-25 12:15:25 +00:00
|
|
|
0,
|
2017-08-11 05:51:05 +00:00
|
|
|
23,
|
2017-07-26 09:49:56 +00:00
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-07-25 12:15:25 +00:00
|
|
|
22,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-09-12 14:07:55 +00:00
|
|
|
|
2017-09-15 03:06:26 +00:00
|
|
|
22,
|
2017-09-12 14:07:55 +00:00
|
|
|
22,
|
2017-09-14 12:46:56 +00:00
|
|
|
22,
|
2017-04-14 11:20:00 +00:00
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
2017-07-26 05:18:28 +00:00
|
|
|
|
2017-04-14 11:20:00 +00:00
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
2017-04-13 14:14:59 +00:00
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-07-25 14:42:16 +00:00
|
|
|
status_t tests1ap_build_service_request(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"",
|
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
2017-07-25 14:42:16 +00:00
|
|
|
|
|
|
|
"000c"
|
|
|
|
"4037000006000800 020004001a000504 c704d4b800430006 0000f1102b670064"
|
|
|
|
"40080000f11054f6 4010008640014000 6000060040000000 03",
|
|
|
|
|
2017-07-26 02:28:43 +00:00
|
|
|
"",
|
2017-07-26 09:49:56 +00:00
|
|
|
"",
|
2017-07-26 02:28:43 +00:00
|
|
|
|
2017-07-25 14:42:16 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
0,
|
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
2017-07-25 14:42:16 +00:00
|
|
|
59,
|
2017-07-26 02:28:43 +00:00
|
|
|
0,
|
2017-07-26 09:49:56 +00:00
|
|
|
0,
|
2017-07-25 14:42:16 +00:00
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-09-11 12:14:55 +00:00
|
|
|
status_t tests1ap_build_pdn_connectivity_request(
|
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000d40680000"
|
|
|
|
"0500000005c08000 0107000800030001 00001a003b3a277c 81dab50a0205d011"
|
|
|
|
"281208696e746572 6e6574036e673204 6d6e6574271a8080 2110010000108106"
|
|
|
|
"0000000083060000 0000000d00000a00 006440080055f501 0019d01000434006"
|
|
|
|
"0055f5011022",
|
|
|
|
"000d40680000"
|
|
|
|
"0500000005c08000 0107000800030001 00001a003b3a2710 3fdafa0a0209d011"
|
|
|
|
"281208706e746572 6e6574036e673204 6d6e6574271a8080 2110010000108106"
|
|
|
|
"0000000083060000 0000000d00000a00 006440080055f501 0019d01000434006"
|
|
|
|
"0055f5011022",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
108,
|
|
|
|
108,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_build_pdn_disconnectivity_request(
|
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000d40380000"
|
|
|
|
"0500000005c08000 0108000800030001 00001a000b0a2732 423c53040206d206"
|
|
|
|
"006440080055f501 0019d01000434006 0055f5011022",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
60,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-09-04 16:17:24 +00:00
|
|
|
status_t tests1ap_build_e_rab_setup_response(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"2005002600000300 004005c00200003c 0008400300010000 1c400f000027400a"
|
|
|
|
"0c1f0a012da50100 b410",
|
2017-09-06 15:37:16 +00:00
|
|
|
"2005002600000300 004005c00200003c 0008400300010000 1c400f000027400a"
|
|
|
|
"0e1f0a012da50100 b410",
|
2017-09-04 16:17:24 +00:00
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
"2005002600000300 004005c00200003c 0008400300010000 1c400f000027400a"
|
2017-11-24 19:16:18 +00:00
|
|
|
"0c1f7f0000010100 b410",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"2005"
|
2017-10-25 10:33:18 +00:00
|
|
|
"0025000003000040 05c0020000c40008 4002000c001c400f 000027400a0c1f7f"
|
2017-11-24 19:16:18 +00:00
|
|
|
"00000101000810",
|
2017-09-04 16:17:24 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
42,
|
2017-09-06 15:37:16 +00:00
|
|
|
42,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
|
|
|
|
42,
|
2017-09-12 14:07:55 +00:00
|
|
|
41,
|
2017-09-06 15:37:16 +00:00
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-09-07 14:41:05 +00:00
|
|
|
status_t tests1ap_build_e_rab_release_response(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"2007001d0000"
|
|
|
|
"0300004005c08000 0108000840030001 000045400600000f 40010c",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
33,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-09-06 15:37:16 +00:00
|
|
|
status_t tests1ap_build_activate_default_bearer_accept(
|
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000d40370000"
|
|
|
|
"0500000005c08000 0107000800030001 00001a000a0927e7 f5bb400b6200c200"
|
|
|
|
"6440080055f50100 19d0100043400600 55f5011022",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
59,
|
2017-09-04 16:17:24 +00:00
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
59,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_build_activate_dedicated_bearer_accept(
|
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000d403700000500"
|
2017-09-08 08:54:59 +00:00
|
|
|
"000005c00200003c 0008000300010000 1a000a0927078a5f 34037200c6006440"
|
2017-09-04 16:17:24 +00:00
|
|
|
"080000f1109d67aa 50004340060000f1 102b67",
|
2017-09-06 15:37:16 +00:00
|
|
|
"000d403700000500"
|
2017-09-08 08:54:59 +00:00
|
|
|
"000005c00200003c 0008000300010000 1a000a0927c035da 96036200c6006440"
|
2017-09-06 15:37:16 +00:00
|
|
|
"080000f1109d67aa 50004340060000f1 102b67",
|
2017-09-04 16:17:24 +00:00
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
2017-09-11 09:41:14 +00:00
|
|
|
"000d403700000500"
|
|
|
|
"000005c00200003c 0008000300010000 1a000a0927a27f49 d6036200c6006440"
|
|
|
|
"080000f1109d67aa 50004340060000f1 102b67",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"000d"
|
|
|
|
"4036000005000000 05c0020000c40008 0002000c001a000a 0927e3c77e000362"
|
|
|
|
"00c6006440080000 f110001f20a00043 40060000f1103039",
|
2017-09-04 16:17:24 +00:00
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
59,
|
2017-09-06 15:37:16 +00:00
|
|
|
59,
|
2017-09-04 16:17:24 +00:00
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
2017-09-11 09:41:14 +00:00
|
|
|
0,
|
|
|
|
|
|
|
|
59,
|
2017-09-12 14:07:55 +00:00
|
|
|
58,
|
2017-09-04 16:17:24 +00:00
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-09-07 14:41:05 +00:00
|
|
|
status_t tests1ap_build_deactivate_bearer_accept(
|
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"000d40370000"
|
|
|
|
"0500000005c08000 0108000800030001 00001a000a09274c b2ebbd056200ce00"
|
|
|
|
"6440080055f50100 19d0100043400600 55f5011022",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
59,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-09-11 12:14:55 +00:00
|
|
|
status_t tests1ap_build_path_switch_request(
|
2017-09-07 14:41:05 +00:00
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
2017-09-11 12:14:55 +00:00
|
|
|
"0003"
|
2017-11-24 19:16:18 +00:00
|
|
|
"005d000007000800 0200010016001d01 0017000a0a1f7f00 0001010000080017"
|
|
|
|
"000a0c1f7f000001 0100001000580005 c0010001da006440 080000f1103631d6"
|
2017-09-11 12:14:55 +00:00
|
|
|
"20004340060000f1 105ba0006b400518 000c0000009d4007 0000f110000201",
|
2017-09-12 01:41:00 +00:00
|
|
|
"0003"
|
|
|
|
"005d000007000800 0200020016001d01 0017000a0a1f0a01 2d83010001080017"
|
|
|
|
"000a0c1f0a012d83 0100011000580005 c0010001da006440 080000f110046153"
|
|
|
|
"80004340060000f1 105ba0006b400518 000c0000009d4007 0000f110000201",
|
2017-09-07 14:41:05 +00:00
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
2017-09-11 12:14:55 +00:00
|
|
|
97,
|
2017-09-12 01:41:00 +00:00
|
|
|
97,
|
2017-09-07 14:41:05 +00:00
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
status_t tests1ap_build_handover_required(
|
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"0000"
|
|
|
|
"0081030000060000 0005c0020000c400 080002000c000100 0100000240020220"
|
|
|
|
"0004000d0000f110 0000043000f11030 3900680080d080ce 4080ab0f1014c598"
|
|
|
|
"00018000bf06ec4d 00100302c0000000 000015a800140672 0af00348f10013d0"
|
|
|
|
"3bc58414903bc588 09401de2c2100440 13f212249010127d ad808fd50398381c"
|
|
|
|
"08fd503983805f50 37868baa010c846f b057874162d62e82 1f42f2e159f821d0"
|
|
|
|
"9c0009e28aa1a001 2d888026d0600040 8008066072003e41 5250d46210208184"
|
|
|
|
"3423c135002214d6 dfb0a0b06502c402 000004008177faab 4677235334a0e867"
|
|
|
|
"213e804030000100 4e40024500004e40 0246000000f11000 043a000000f11000"
|
|
|
|
"1f20a0000022",
|
2017-09-14 12:46:56 +00:00
|
|
|
|
|
|
|
"0000"
|
|
|
|
"00810e0000060000 0005c0020000c500 0800020008000100 0100000240020220"
|
|
|
|
"0004000d0000f110 00001f2000f11030 3900680080db80d9 4080ab0f1014c598"
|
|
|
|
"00018000bf06ec4d 00100302c0000000 000015a800140672 0af003e8f10013d0"
|
|
|
|
"3bc58414903bc588 09401de2c2100440 13f212249010127d ad808fd50398381c"
|
|
|
|
"08fd503983805f50 37868baa010c846f b057874162d62e82 1f42f2e159f821d0"
|
|
|
|
"9c0009e28aa1a001 2d888050d1bc0040 8008066072000874 1250d46210208184"
|
|
|
|
"3423c135002214d6 dfb0a0b06502c402 000004008177faab 4677235334a0e867"
|
|
|
|
"2134804030000100 4e40024500004e40 0246000000f11000 1f20a10000f11000"
|
|
|
|
"043a000000350000 f110001f20a00000 22",
|
2017-09-15 03:06:26 +00:00
|
|
|
|
|
|
|
"0000"
|
|
|
|
"0081190000060000 0005c0020000c600 080002000d000100 0100000240020220"
|
|
|
|
"0004000d0000f110 0000043000f11030 3900680080e680e4 4080ab0f1014c598"
|
|
|
|
"00018000bf06ec4d 00100302c0000000 000015a800140672 0af00348f10013d0"
|
|
|
|
"3bc58414903bc588 09401de2c2100440 13f212249010127d ad808fd50398381c"
|
|
|
|
"08fd503983805f50 37868baa010c846f b057874162d62e82 1f42f2e159f821d0"
|
|
|
|
"9c0009e28aa1a001 2d888050514c0040 8008066072003e41 5250d46210208184"
|
|
|
|
"3423c135002214d6 dfb0a0b06502c402 000004008177faab 4677235334a0e867"
|
|
|
|
"213e804030000100 4e40024500004e40 0246000000f11000 043a020000f11000"
|
|
|
|
"1f20a00000340000 f11000043a000000 350000f110001f20 a0000022",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
264,
|
2017-09-14 12:46:56 +00:00
|
|
|
275,
|
2017-09-15 03:06:26 +00:00
|
|
|
286,
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_build_handover_request_ack(
|
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"2001"
|
|
|
|
"0080e80000040000 4005c0020000c500 0840020008001240 47010014401f78a1"
|
2017-11-24 19:16:18 +00:00
|
|
|
"f07f000001010007 080f807f00000101 0007090f807f0000 010100070a001440"
|
|
|
|
"1f78c1f07f000001 010007100f807f00 0001010007110f80 7f00000101000712"
|
2017-09-12 14:07:55 +00:00
|
|
|
"007b008086808400 80810bf900d8af40 00a0339057801f47 88009e81de2c20a4"
|
|
|
|
"81de2c404a00ef16 2000010044013f21 2249008093efd243 3914cd2aa0a0142f"
|
|
|
|
"f2214d6dfb82c194 0b10080000020040 bbfd55aeab41ad80 8fd50398381c08fd"
|
|
|
|
"503983804d037868 baa016423342bc3a 18b58fa084ca833f a17970acfc10e84e"
|
|
|
|
"0004f14550d00096 c88900",
|
2017-09-14 12:46:56 +00:00
|
|
|
|
|
|
|
"2001"
|
|
|
|
"0080e80000040000 4005c0020000c600 084002000d001240 47010014401f78a1"
|
|
|
|
"f00a01237b010009 080f800a01237b01 0009090f800a0123 7b0100090a001440"
|
|
|
|
"1f78c1f00a01237b 010009100f800a01 237b010009110f80 0a01237b01000912"
|
|
|
|
"007b008086808400 80810bf900d8af40 00a0339057801a47 88009e81de2c20a4"
|
|
|
|
"81de2c404a00ef16 2000010044013f21 2249008093effa43 3914cd2aa0a0140f"
|
|
|
|
"f2214d6dfb82c194 0b10080000020040 bbfd55aeab01ad80 8fd50398381c08fd"
|
|
|
|
"503983804d037868 baa016423342bc3a 18b58fa084ca833f a17970acfc10e84e"
|
|
|
|
"0004f14550d00096 c88980",
|
2017-09-15 03:06:26 +00:00
|
|
|
|
|
|
|
"2001"
|
|
|
|
"0080e80000040000 4005c0020000c700 0840020009001240 47010014401f78a1"
|
|
|
|
"f00a01237c010008 080f800a01237c01 0008090f800a0123 7c0100080a001440"
|
|
|
|
"1f78c1f00a01237c 010008100f800a01 237c010008110f80 0a01237c01000812"
|
|
|
|
"007b008086808400 80810bf900d8af40 00a0339057801f47 88009e81de2c20a4"
|
|
|
|
"81de2c404a00ef16 2000010044013f21 2249008093efd243 3914cd2aa0a0144f"
|
|
|
|
"f2214d6dfb82c194 0b10080000020040 bbfd55aeab81ad80 8fd50398381c08fd"
|
|
|
|
"503983804d037868 baa016423342bc3a 18b58fa084ca833f a17970acfc10e84e"
|
|
|
|
"0004f14550d00096 c88a00",
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
237,
|
2017-09-14 12:46:56 +00:00
|
|
|
237,
|
2017-09-15 03:06:26 +00:00
|
|
|
237,
|
2017-09-12 14:07:55 +00:00
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
status_t tests1ap_build_enb_status_transfer(
|
|
|
|
pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"0018"
|
|
|
|
"4027000003000000 05c0020000c40008 0002000c005a0011 00000059400b0500"
|
|
|
|
"004b000000001100 00",
|
2017-09-14 12:46:56 +00:00
|
|
|
"0018"
|
|
|
|
"4027000003000000 05c0020000c50008 00020008005a0011 00000059400b0500"
|
|
|
|
"00a8000000004100 00",
|
2017-09-12 14:07:55 +00:00
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
43,
|
2017-09-14 12:46:56 +00:00
|
|
|
43,
|
2017-09-12 14:07:55 +00:00
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
|
|
|
|
2017-09-15 03:06:26 +00:00
|
|
|
status_t tests1ap_build_handover_notify(pkbuf_t **pkbuf, int i)
|
2017-09-12 14:07:55 +00:00
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"0002"
|
2017-09-14 02:12:02 +00:00
|
|
|
"4028000004000000 05c0020000c50008 0002000800644008 0000f11000043a00"
|
2017-09-12 14:07:55 +00:00
|
|
|
"004340060000f110 3039",
|
2017-09-14 12:46:56 +00:00
|
|
|
"0002"
|
|
|
|
"4028000004000000 05c0020000c60008 0002000d00644008 0000f110001f20a0"
|
|
|
|
"004340060000f110 3039",
|
2017-09-12 14:07:55 +00:00
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
44,
|
2017-09-14 12:46:56 +00:00
|
|
|
44,
|
2017-09-12 14:07:55 +00:00
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|
2017-09-15 03:06:26 +00:00
|
|
|
|
|
|
|
status_t tests1ap_build_handover_cancel(pkbuf_t **pkbuf, int i)
|
|
|
|
{
|
|
|
|
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
"0004"
|
|
|
|
"0018000003000000 05c0020000c60008 0002000d00024002 0120",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
|
|
|
|
};
|
|
|
|
c_uint16_t len[TESTS1AP_MAX_MESSAGE] = {
|
|
|
|
28,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
char hexbuf[MAX_SDU_LEN];
|
|
|
|
|
|
|
|
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
|
|
|
if (!(*pkbuf)) return CORE_ERROR;
|
|
|
|
|
|
|
|
(*pkbuf)->len = len[i];
|
|
|
|
memcpy((*pkbuf)->payload, CORE_HEX(payload[i], strlen(payload[i]), hexbuf),
|
|
|
|
(*pkbuf)->len);
|
|
|
|
|
|
|
|
return CORE_OK;
|
|
|
|
}
|