view utils/rtp-alloc-test.c @ 217:9f6a148ceb25

tcpserv-dump: brown paper bag
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 24 Jul 2023 22:33:01 -0800
parents 068fce34e565
children
line wrap: on
line source

/*
 * This program exercises the path of obtaining an RTP endpoint from
 * themwi-rtp-mgr via rtp_alloc_simple(), serving as a test for
 * the themwi-rtp-mgr daemon and for both upper and lower layers of
 * librtpalloc.
 */

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include "../include/tmgw_const.h"
#include "../librtpalloc/rtp_alloc_simple.h"

static void
print_ip_port(desc, sin)
	char *desc;
	struct sockaddr_in *sin;
{
	printf("%s IP %s port %u\n", desc, inet_ntoa(sin->sin_addr),
		ntohs(sin->sin_port));
}

main(argc, argv)
	char **argv;
{
	int ep_type, rc;
	struct rtp_alloc_simple res;

	if (argc != 2) {
		fprintf(stderr, "usage: %s ep-type\n", argv[0]);
		exit(1);
	}
	if (!strcmp(argv[1], "gsm"))
		ep_type = TMGW_EP_TYPE_GSM_ONLY;
	else if (!strcmp(argv[1], "pstn"))
		ep_type = TMGW_EP_TYPE_PSTN_ONLY;
	else if (!strcmp(argv[1], "gateway"))
		ep_type = TMGW_EP_TYPE_GATEWAY;
	else {
		fprintf(stderr, "error: unknown endpoint type \"%s\"\n",
			argv[1]);
		exit(1);
	}
	rc = rtp_alloc_simple(ep_type, &res);
	if (rc < 0)
		exit(1);	/* error msg already printed */
	if (ep_type & TMGW_EP_HAS_GSM_SOCK) {
		print_ip_port("GSM", &res.gsm_addr);
		printf("GSM fd %d %d\n", res.gsm_rtp_fd, res.gsm_rtcp_fd);
	}
	if (ep_type & TMGW_EP_HAS_PSTN_SOCK) {
		print_ip_port("PSTN", &res.pstn_addr);
		printf("PSTN fd %d %d\n", res.pstn_rtp_fd, res.pstn_rtcp_fd);
	}
	exit(0);
}