aboutsummaryrefslogtreecommitdiffstats
path: root/src/tests/hnb-test-rua.c
blob: 41df4f27940270f5dfd37c7124af9256791e030d (plain)
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
#include <asn1c/ANY.h>
#include "../rua_ies_defs.h"

struct ranap_message_s;

typedef void (*ranap_handle_cb)(void *ctx, struct ranap_message_s *ranap_msg);

extern void ranap_msg_dt_print(void *ctx, struct ranap_message_s *ranap_msg);
extern void ranap_msg_dt_get(void *ctx, struct ranap_message_s *ranap_msg);

static void direct_transfer_nas_pdu_handle(ANY_t *in, ranap_handle_cb handler, void *ctx)
{
	RUA_DirectTransferIEs_t ies;
	int rc;

	rc = rua_decode_directtransferies(&ies, in);
	if (rc < 0) {
		printf("print_rua_init_dt(): failed to decode rua IEs\n");
		return;
	}

	rc = ranap_cn_rx_co(handler, ctx, ies.ranaP_Message.buf, ies.ranaP_Message.size);

	/* FIXME: what to do with the asn1c-allocated memory */
	rua_free_directtransferies(&ies);
}

void direct_transfer_nas_pdu_print(ANY_t *in)
{
	direct_transfer_nas_pdu_handle(in, ranap_msg_dt_print, NULL);
}

void direct_transfer_nas_pdu_get(ANY_t *in, struct msgb *m)
{
	direct_transfer_nas_pdu_handle(in, ranap_msg_dt_get, m);
}