summaryrefslogtreecommitdiff
path: root/usr/src/cmd/ipf/lib/common/printaddr.c
blob: 914ec3c6639f34fef1e90ee07e5909769ba0c345 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
 * Copyright (C) 2005 by Darren Reed.
 *
 * See the IPFILTER.LICENCE file for details on licencing.
 *
 */

#pragma ident	"%Z%%M%	%I%	%E% SMI"

#include "ipf.h"


void printaddr(v, type, ifname, addr, mask)
int v, type;
char *ifname;
u_32_t *addr, *mask;
{
	char *suffix;

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

	case FRI_DYNAMIC :
		printf("%s", ifname);
		printmask(v, 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((i6addr_t *)addr, (i6addr_t *)mask);
		break;

	case FRI_NORMAL :
		printhostmask(v, addr, mask);
		suffix = NULL;
		break;
	default :
		printf("<%d>", type);
		printmask(v, mask);
		suffix = NULL;
		break;
	}

	if (suffix != NULL) {
		printf("%s/%s", ifname, suffix);
	}
}