Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / auth / test / testnetrestrict.c
CommitLineData
805e021f
CE
1/*
2 * testnetstrict.c
3 *
4 * Utility to test NetInfo and NetRestrict parsing
5 */
6
7#include <afsconfig.h>
8#include <afs/param.h>
9#include <afs/cellconfig.h>
10
11#include <sys/types.h>
12#include <stddef.h>
13#include <stdlib.h>
14#include <stdio.h>
15
16#include <arpa/inet.h>
17
18char *interfaceList, *filenameNetInfo, *filenameNetRestrict;
19
20int
21rx_getAllAddrMaskMtu(afs_uint32 addrBuffer[],
22 afs_uint32 maskBuffer[],
23 afs_uint32 mtuBuffer[],
24 int maxSize)
25{
26 FILE *fp;
27 int nInterfaces = 0, lineNo = 1;
28 int a[4], m[4], mtu;
29 char line[80];
30
31 fp = fopen(interfaceList, "r");
32 if (fp == NULL) {
33 perror("fopen");
34 exit(1);
35 }
36
37 while (nInterfaces < maxSize) {
38 ++lineNo;
39 if (fgets(line, 80, fp) == NULL)
40 break;
41 if (sscanf(line, "%d.%d.%d.%d %d.%d.%d.%d %d\n",
42 &a[0], &a[1], &a[2], &a[3],
43 &m[0], &m[1], &m[2], &m[3], &mtu) == 9) {
44
45 addrBuffer[nInterfaces] = htonl(a[0] << 24 | a[1] << 16
46 | a[2] << 8 | a[3]);
47 maskBuffer[nInterfaces] = htonl(m[0] << 24 | m[1] << 16
48 | m[2] << 8 | m[3]);
49 mtuBuffer[nInterfaces] = htonl(mtu);
50 ++nInterfaces;
51 } else {
52 fprintf(stderr, "failed to parse line %d in %s\n", lineNo, interfaceList);
53 }
54 }
55 fclose(fp);
56
57 return nInterfaces;
58}
59
60#define MAXADDRS 16
61
62int
63main(int argc, char *argv[])
64{
65 afs_uint32 outAddrs[MAXADDRS], outMask[MAXADDRS], outMtu[MAXADDRS], nAddrs;
66 char reason[1024];
67 int i, retval;
68
69 if (argc < 4) {
70 fprintf(stderr, "usage: testnetrestrict <interface list> <netinfo> <netstrict>\n");
71 exit(1);
72 }
73
74 interfaceList = argv[1];
75 filenameNetInfo = argv[2];
76 filenameNetRestrict = argv[3];
77
78 reason[0] = '\0';
79 retval = afsconf_ParseNetInfoFile(outAddrs, outMask, outMtu, MAXADDRS,
80 reason, filenameNetInfo);
81
82 printf("afsconf_ParseNetInfoFile() returned %d\n", retval);
83 if (reason[0] != '\0')
84 printf("reason: %s\n", reason);
85
86 printf("final address list:\n");
87 if (retval > 0) {
88 for(i = 0; i < retval; ++i) {
89 printf("\taddress 0x%x mask 0x%x mtu %d\n",
90 ntohl(outAddrs[i]), ntohl(outMask[i]), ntohl(outMtu[i]));
91 }
92 }
93
94 reason[0] = '\0';
95 retval = afsconf_ParseNetRestrictFile(outAddrs, outMask, outMtu, MAXADDRS,
96 &nAddrs, reason, filenameNetRestrict);
97
98 printf("\nafsconf_ParseNetRestrictFile() returned %d\n", retval);
99 if (reason[0] != '\0')
100 printf("reason: %s\n", reason);
101 if (nAddrs > 0) {
102 printf("final address list:\n");
103 for(i = 0; i < nAddrs; ++i) {
104 printf("\taddress 0x%x mask 0x%x mtu %d\n",
105 ntohl(outAddrs[i]), ntohl(outMask[i]), ntohl(outMtu[i]));
106 }
107 }
108
109 reason[0] = '\0';
110 retval = afsconf_ParseNetFiles(outAddrs, outMask, outMtu, MAXADDRS,
111 reason, filenameNetInfo, filenameNetRestrict);
112
113 printf("\nafsconf_ParseNetFiles() returned %d\n", retval);
114 if (reason[0] != '\0')
115 printf("reason: %s\n", reason);
116 if (retval > 0) {
117 printf("final address list:\n");
118 for(i = 0; i < retval; ++i) {
119 printf("\taddress 0x%x mask 0x%x mtu %d\n",
120 ntohl(outAddrs[i]), ntohl(outMask[i]), ntohl(outMtu[i]));
121 }
122 }
123
124 exit(0);
125}