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: printaddr.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: printaddr.c,v 1.1.1.2 2012/07/22 13:44:40 darrenr Exp $
 */

#include "ipf.h"

void
printaddr(family, type, base, ifidx, addr, mask)
	int family, type, ifidx;
	char *base;
	u_32_t *addr, *mask;
{
	char *suffix;

	switch (type)
	{
	case FRI_BROADCAST :
		suffix = "bcast";
		break;

	case FRI_DYNAMIC :
		PRINTF("%s", base + ifidx);
		printmask(family, mask);
		suffix = NULL;
		break;

	case FRI_NETWORK :
		suffix = "net";
		break;

	case FRI_NETMASKED :
		suffix = "netmasked";
		break;

	case FRI_PEERADDR :
		suffix = "peer";
		break;

	case FRI_LOOKUP :
		suffix = NULL;
		printlookup(base, (i6addr_t *)addr, (i6addr_t *)mask);
		break;

	case FRI_NONE :
	case FRI_NORMAL :
		printhostmask(family, addr, mask);
		suffix = NULL;
		break;
	case FRI_RANGE :
		printhost(family, addr);
		putchar('-');
		printhost(family, mask);
		suffix = NULL;
		break;
	case FRI_SPLIT :
		printhost(family, addr);
		putchar(',');
		printhost(family, mask);
		suffix = NULL;
		break;
	default :
		PRINTF("<%d>", type);
		printmask(family, mask);
		suffix = NULL;
		break;
	}

	if (suffix != NULL) {
		PRINTF("%s/%s", base + ifidx, suffix);
	}
}