xref: /freebsd/sbin/ipf/libipf/printaddr.c (revision 963f5dc7a30624e95d72fb7f87b8892651164e46)
1 /*
2  * Copyright (C) 2012 by Darren Reed.
3  *
4  * See the IPFILTER.LICENCE file for details on licencing.
5  *
6  * $Id$
7  */
8 
9 #include "ipf.h"
10 
11 void
12 printaddr(family, type, base, ifidx, addr, mask)
13 	int family, type, ifidx;
14 	char *base;
15 	u_32_t *addr, *mask;
16 {
17 	char *suffix;
18 
19 	switch (type)
20 	{
21 	case FRI_BROADCAST :
22 		suffix = "bcast";
23 		break;
24 
25 	case FRI_DYNAMIC :
26 		PRINTF("%s", base + ifidx);
27 		printmask(family, mask);
28 		suffix = NULL;
29 		break;
30 
31 	case FRI_NETWORK :
32 		suffix = "net";
33 		break;
34 
35 	case FRI_NETMASKED :
36 		suffix = "netmasked";
37 		break;
38 
39 	case FRI_PEERADDR :
40 		suffix = "peer";
41 		break;
42 
43 	case FRI_LOOKUP :
44 		suffix = NULL;
45 		printlookup(base, (i6addr_t *)addr, (i6addr_t *)mask);
46 		break;
47 
48 	case FRI_NONE :
49 	case FRI_NORMAL :
50 		printhostmask(family, addr, mask);
51 		suffix = NULL;
52 		break;
53 	case FRI_RANGE :
54 		printhost(family, addr);
55 		putchar('-');
56 		printhost(family, mask);
57 		suffix = NULL;
58 		break;
59 	case FRI_SPLIT :
60 		printhost(family, addr);
61 		putchar(',');
62 		printhost(family, mask);
63 		suffix = NULL;
64 		break;
65 	default :
66 		PRINTF("<%d>", type);
67 		printmask(family, mask);
68 		suffix = NULL;
69 		break;
70 	}
71 
72 	if (suffix != NULL) {
73 		PRINTF("%s/%s", base + ifidx, suffix);
74 	}
75 }
76