diff options
Diffstat (limited to 'src/tests/hnb-test-rua.c')
-rw-r--r-- | src/tests/hnb-test-rua.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/tests/hnb-test-rua.c b/src/tests/hnb-test-rua.c new file mode 100644 index 0000000..41df4f2 --- /dev/null +++ b/src/tests/hnb-test-rua.c @@ -0,0 +1,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); +} |