aboutsummaryrefslogtreecommitdiffstats
path: root/sigtran/sua_client_test.c
blob: 968a7d155a5ecca78886a9b5af9ea0e9e1a459bb (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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "sua_test_common.h"

struct osmo_sua_user *g_user;
struct sua_link *g_link;

static int sccp_sap_up(struct osmo_prim_hdr *oph, void *link)
{
	struct osmo_scu_prim *prim = (struct osmo_scu_prim *) oph;
	struct osmo_prim_hdr *resp = NULL;
	uint8_t payload[] = { 0xa1, 0xa2, 0xa3 };

	printf("sccp_sap_up(%s)\n", osmo_sccp_prim_name(oph));

	switch (OSMO_PRIM_HDR(oph)) {
	case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_CONFIRM):
		printf("N-CONNECT.ind(%u), issuing DATA.req\n",
			prim->u.connect.conn_id);
		resp = make_dt1_req(prim->u.connect.conn_id, payload, sizeof(payload));
		break;
	}

	if (resp)
		osmo_sua_user_link_down(link, resp);

	msgb_free(oph->msg);
	return 0;
}


int main(int argc, char **argv)
{
	void *ctx = talloc_named_const(NULL, 1, "root");
	int rc;

	osmo_sua_set_log_area(DSUA);
	xua_set_log_area(DXUA);

	osmo_init_logging(&test_log_info);

	g_user = osmo_sua_user_create(ctx, sccp_sap_up);

	rc = osmo_sua_client_connect(g_user, "127.0.0.1", 2342);
	if (rc < 0) {
		exit(1);
	}

	g_link = osmo_sua_client_get_link(g_user);

	int i = 8000;

	while (1) {
		if (i < 8010)
			tx_conn_req(g_link, i++);
		//tx_unitdata(g_link);
		osmo_select_main(0);
	}
}