Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

/*	$NetBSD: printip.c,v 1.2 2012/07/22 14:27:36 darrenr Exp $	*/

/*
 * Copyright (C) 2012 by Darren Reed.
 *
 * See the IPFILTER.LICENCE file for details on licencing.
 *
 * Id: printip.c,v 1.1.1.2 2012/07/22 13:44:40 darrenr Exp $
 */

#include "ipf.h"


void
printip(family, addr)
	int family;
	u_32_t *addr;
{
	struct in_addr ipa;

	if (family == AF_INET) {
		ipa.s_addr = *addr;
		if (ntohl(ipa.s_addr) < 256)
			PRINTF("%lu", (u_long)ntohl(ipa.s_addr));
		else
			PRINTF("%s", inet_ntoa(ipa));
	}
#ifdef AF_INET6
	else if (family == AF_INET6) {
		char buf[INET6_ADDRSTRLEN + 1];
		const char *str;

		buf[0] = '\0';
		str = inet_ntop(AF_INET6, addr, buf, sizeof(buf) - 1);
		if (str != NULL)
			PRINTF("%s", str);
		else
			PRINTF("???");
	}
#endif
	else
		PRINTF("?(%d)?", family);
}