Blob Blame History Raw
/* For terms of usage/redistribution/modification see the LICENSE file */
/* For authors and contributors see the AUTHORS file */

/***

servname.c	- lookup module for TCP and UDP service names based on
		  port numbers

***/

#include "iptraf-ng-compat.h"
#include "options.h"

void servlook(in_port_t port, unsigned int protocol, char *target, int maxlen)
{
	static struct servent *sve;

	memset(target, 0, maxlen + 1);

	if (options.servnames) {
		if (protocol == IPPROTO_TCP)
			sve = getservbyport(htons(port), "tcp");
		else
			sve = getservbyport(htons(port), "udp");

		if (sve != NULL) {
			strncpy(target, sve->s_name, maxlen);
		} else {
			sprintf(target, "%u", port);
		}
	} else {
		sprintf(target, "%u", port);
	}
}