/*
 * Copyright (c) 2019 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <stdio.h>
#include <errno.h>
#include <zephyr/net/socket.h>

int zsock_getnameinfo(const struct sockaddr *addr, socklen_t addrlen,
		      char *host, socklen_t hostlen,
		      char *serv, socklen_t servlen, int flags)
{
	/* Both sockaddr_in & _in6 have same offsets for family and address. */
	struct sockaddr_in *a = (struct sockaddr_in *)addr;

	if (host != NULL) {
		void *res = zsock_inet_ntop(a->sin_family, &a->sin_addr,
					    host, hostlen);

		if (res == NULL) {
			return DNS_EAI_SYSTEM;
		}
	}

	if (serv != NULL) {
		snprintk(serv, servlen, "%hu", ntohs(a->sin_port));
	}

	return 0;
}
