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
printaddr(int family,int type,char * base,int ifidx,u_32_t * addr,u_32_t * mask)12 printaddr(int family, int type, char *base, int ifidx, u_32_t *addr,
13 u_32_t *mask)
14 {
15 char *suffix;
16
17 switch (type)
18 {
19 case FRI_BROADCAST :
20 suffix = "bcast";
21 break;
22
23 case FRI_DYNAMIC :
24 PRINTF("%s", base + ifidx);
25 printmask(family, mask);
26 suffix = NULL;
27 break;
28
29 case FRI_NETWORK :
30 suffix = "net";
31 break;
32
33 case FRI_NETMASKED :
34 suffix = "netmasked";
35 break;
36
37 case FRI_PEERADDR :
38 suffix = "peer";
39 break;
40
41 case FRI_LOOKUP :
42 suffix = NULL;
43 printlookup(base, (i6addr_t *)addr, (i6addr_t *)mask);
44 break;
45
46 case FRI_NONE :
47 case FRI_NORMAL :
48 printhostmask(family, addr, mask);
49 suffix = NULL;
50 break;
51 case FRI_RANGE :
52 printhost(family, addr);
53 putchar('-');
54 printhost(family, mask);
55 suffix = NULL;
56 break;
57 case FRI_SPLIT :
58 printhost(family, addr);
59 putchar(',');
60 printhost(family, mask);
61 suffix = NULL;
62 break;
63 default :
64 PRINTF("<%d>", type);
65 printmask(family, mask);
66 suffix = NULL;
67 break;
68 }
69
70 if (suffix != NULL) {
71 PRINTF("%s/%s", base + ifidx, suffix);
72 }
73 }
74