view src/set_remote.c @ 43:8cdfef36d9db default tip

twrtp_endp_create: make config argument const This argument is passed through to twrtp_jibuf_create(). We made it const in the latter function, now do the same with the wrapper.
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 20 Dec 2024 23:01:06 +0000
parents 8f1700a42ca5
children
line wrap: on
line source

/*
 * Here we implement functions for setting the remote end on themwi_endp,
 * both IPv4 and IPv6.
 */

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>

#include <themwi/rtp/endp.h>

void twrtp_endp_set_remote_ipv4(struct twrtp_endp *endp,
				const struct in_addr *ip, uint16_t port)
{
	endp->rtp_remote.u.sin.sin_family = AF_INET;
	memcpy(&endp->rtp_remote.u.sin.sin_addr, ip, sizeof(struct in_addr));
	endp->rtp_remote.u.sin.sin_port = htons(port);

	endp->rtcp_remote.u.sin.sin_family = AF_INET;
	memcpy(&endp->rtcp_remote.u.sin.sin_addr, ip, sizeof(struct in_addr));
	endp->rtcp_remote.u.sin.sin_port = htons(port + 1);

	endp->remote_set = true;
}

void twrtp_endp_set_remote_ipv6(struct twrtp_endp *endp,
				const struct in6_addr *ip6, uint16_t port)
{
	endp->rtp_remote.u.sin6.sin6_family = AF_INET6;
	memcpy(&endp->rtp_remote.u.sin6.sin6_addr, ip6,
		sizeof(struct in6_addr));
	endp->rtp_remote.u.sin6.sin6_port = htons(port);

	endp->rtcp_remote.u.sin6.sin6_family = AF_INET6;
	memcpy(&endp->rtcp_remote.u.sin6.sin6_addr, ip6,
		sizeof(struct in6_addr));
	endp->rtcp_remote.u.sin6.sin6_port = htons(port + 1);

	endp->remote_set = true;
}

void twrtp_endp_set_remote_sin(struct twrtp_endp *endp,
				const struct sockaddr_in *sin)
{
	twrtp_endp_set_remote_ipv4(endp, &sin->sin_addr, ntohs(sin->sin_port));
}

void twrtp_endp_set_remote_sin6(struct twrtp_endp *endp,
				const struct sockaddr_in6 *sin6)
{
	twrtp_endp_set_remote_ipv6(endp, &sin6->sin6_addr,
				   ntohs(sin6->sin6_port));
}