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