source: genesis/tools/nodechk/nodechk.c@ 3161

Last change on this file since 3161 was 3161, checked in by rudolf, 20 years ago
  • Property svn:executable set to *
File size: 13.9 KB
Line 
1#include <stdio.h>
2#include <io.h>
3#include <time.h>
4#include <string.h>
5#include <ctype.h>
6#include <stdlib.h>
7
8#define BOOL unsigned int
9#define FALSE (0==1)
10#define TRUE (0==0)
11
12typedef struct
13{
14 char volgnr[4];
15 char location[100];
16 char master_ip[20];
17 char gw_open[10];
18 char nodetype[10];
19 char nodename[30];
20 char status[10];
21 char OS[20];
22 char labelpos[30];
23 char X[10];
24 char Y[10];
25 char N[10];
26 char E[10];
27 char ESSID[34];
28} CNODE;
29
30typedef struct
31{
32 char volgnr[4];
33 char nodenr[4];
34 char configname[10];
35 char sprintfname[10];
36 char type[10];
37 char ip[20];
38 char desc[20];
39 char sdesc[20];
40 char speed[20];
41
42 char pointtopoint[20];
43
44 char ospfbroadcast[6];
45 char ospfneighbors[20];
46
47 char mode[10];
48 char essid[34];
49 char channel[3];
50
51 char polar[6];
52 char antenna[10];
53 char gain[10];
54 char direction[6];
55 char beamwidth[6];
56 char cable[3];
57 char heigth[4];
58
59 char dhcp[8];
60} CARD;
61
62
63void LeesNode(void);
64void BehandelRegel(void);
65void FormatRegel(void);
66void MaakCSV(void);
67void AddKomma(void);
68void AddTekst(void);
69
70char fn[50];
71char buf[50];
72#define BUFLEN 1000
73char Tekstbuf[BUFLEN];
74char Regelbuf[BUFLEN];
75char Formatbuf[BUFLEN];
76FILE *hConf;
77size_t numread,toread;
78CNODE CNode[100];
79CARD Card[500];
80int NodeTeller;
81int CardTeller;
82BOOL bCardBezig;
83
84main()
85{
86 //doorzoek mappen
87 struct _finddata_t c_file;
88 long hFile;
89 NodeTeller=0;
90 CardTeller=0;
91
92 /* Find first CNode directory in current directory */
93 if( (hFile = _findfirst( "c:\\nodes\\CNode*.*", &c_file )) == -1L )
94 printf( "No CNode directories in current directory!\n" );
95 else do
96 {
97 sprintf(fn,"c:\\nodes\\%s\\wleiden.conf",c_file.name);
98 printf(fn);
99 printf("\n");
100
101 if (hConf=fopen(fn,"r"))
102 {
103 LeesNode();
104 fclose(hConf);
105 }
106 NodeTeller++;
107 /* Find the rest of the CNode directories */
108 }
109 while( _findnext( hFile, &c_file ) == 0 );
110 _findclose( hFile );
111 sprintf(buf,"\naantal nodes: %i\n\r",NodeTeller);
112 printf(buf);
113 MaakCSV();
114 return 0;
115}
116
117void LeesNode(void)
118{
119 char *pos;
120 int regels=0;
121 int rest;
122 bCardBezig=FALSE;
123
124 toread=BUFLEN;
125 numread=fread(Tekstbuf,sizeof(char),toread,hConf);
126
127 memset((char*)&(CNode[NodeTeller]),'\0',sizeof(CNode[NodeTeller]));
128 pos=strtok(Tekstbuf,"\n\r" );
129 while (pos)
130 {
131 unsigned j;
132 strcpy(Regelbuf,Tekstbuf);
133 rest=strlen(Regelbuf);
134 for (j=0;j<numread-rest-1;j++)
135 {
136 Tekstbuf[j]=Tekstbuf[j+rest+1]; //tekst naar links schuiven
137 }
138 if (numread==BUFLEN)
139 {
140 numread-=(rest+1);
141 numread+=fread(Tekstbuf+numread,sizeof(char),rest+1,hConf);
142 if (numread<BUFLEN) Tekstbuf[numread]='\0';
143 }
144 else
145 {
146 numread-=(rest+1);
147 Tekstbuf[numread]='\0';
148 }
149
150 BehandelRegel();
151 strcat(Formatbuf,"\n");
152 printf(Formatbuf);
153 regels++;
154 pos=strtok(Tekstbuf,"\n\r" );
155 }
156 sprintf(buf,"\naantal regels: %i\n\r",regels);
157 printf(buf);
158}
159
160void FormatRegel(void)
161{
162 char *pos=Regelbuf;
163 char *pose=Formatbuf;
164 BOOL bDescFlag;
165
166 {
167 //vervang # door \0
168 char *posd=pos;
169 while (*posd!='#'&&*posd!='\0') posd++;
170 *posd='\0';
171 }
172 {
173 //vervang /" door /'
174 char *posd=pos;
175 while (*posd!='\0')
176 {
177 if (*posd=='\"') *posd='\'';
178 posd++;
179 }
180 }
181 while (pos[strlen(pos)-1]==' ') //skip trailing spaces
182 {
183 pos[strlen(pos)-1]='\0';
184 }
185 if (pos[strlen(pos)-1]==';') //skip trailing ;
186 {
187 pos[strlen(pos)-1]='\0';
188 }
189 if (pos[strlen(pos)-1]=='\'') //skip trailing '
190 {
191 pos[strlen(pos)-1]='\0';
192 }
193 while (pos[strlen(pos)-1]==' ') //skip trailing spaces
194 {
195 pos[strlen(pos)-1]='\0';
196 }
197 while (*pos==' '||*pos=='\t'||*pos=='\n'||*pos=='\r') pos++;//skip leading spaces
198
199 bDescFlag=(!memicmp(pos,"DESC",4)); //bij DESC spaties laten
200 for (;*pos!='\0';pos++)
201 {
202 while (!bDescFlag&&(*pos==' '||*pos=='\t')) pos++;//skip spaces
203 if (*pos=='\'') //neem tekst tussen quotes letterlijk over
204 { //tot volgende quote of eind
205 *pose++=*pos++;
206 while (*pos!='\''&&*pos!='\0')
207 {
208 if (*pos==',') pos++; //geen komma's ivm csv-list
209 *pose++=*pos++;
210 }
211 }
212 *pose++=*pos;
213 }
214 *pose='\0';
215 strcpy(Regelbuf,Formatbuf);
216}
217
218void BehandelRegel(void)
219{
220 char *pos=Regelbuf;
221 CNODE *pCN=&CNode[NodeTeller];
222 CARD *pCd=&Card[CardTeller];
223 FormatRegel();
224
225 if (!bCardBezig)
226 {
227 if (!memicmp(pos,"$location='",11)) strncpy(pCN->location,pos+11,sizeof(pCN->location));
228 else if (!memicmp(pos,"$master_ip='",12))
229 {
230 sprintf(pCN->volgnr,"%3d",NodeTeller); //hier want t hoeft maar 1 keer
231 strncpy(pCN->master_ip,pos+12,sizeof(pCN->master_ip));
232 }
233 else if (!memicmp(pos,"$gw_open='",10)) strncpy(pCN->gw_open,pos+10,sizeof(pCN->gw_open));
234 else if (!memicmp(pos,"$nodetype='",11)) strncpy(pCN->nodetype,pos+11,sizeof(pCN->nodetype));
235 else if (!memicmp(pos,"$nodename='",11)) strncpy(pCN->nodename,pos+11,sizeof(pCN->nodename));
236 else if (!memicmp(pos,"$status='",9)) strncpy(pCN->status,pos+9,sizeof(pCN->status));
237 else if (!memicmp(pos,"$OS='",5)) strncpy(pCN->OS,pos+5,sizeof(pCN->OS));
238 else if (!memicmp(pos,"$labelpos='",11)) strncpy(pCN->labelpos,pos+11,sizeof(pCN->labelpos));
239 else if (!memicmp(pos,"$X='",4)) strncpy(pCN->X,pos+4,sizeof(pCN->X));
240 else if (!memicmp(pos,"$Y='",4)) strncpy(pCN->Y,pos+4,sizeof(pCN->Y));
241 else if (!memicmp(pos,"$N='",4)) strncpy(pCN->N,pos+4,sizeof(pCN->N));
242 else if (!memicmp(pos,"$E='",4)) strncpy(pCN->E,pos+4,sizeof(pCN->E));
243 else if (!memicmp(pos,"$ESSID='",8)) strncpy(pCN->ESSID,pos+8,sizeof(pCN->ESSID));
244
245 else if (!memicmp(pos,"$config{'",9))
246 {
247 unsigned int len;
248 char *pos1=pos+9;
249 while(*pos1++!='\'');
250 len=pos1-pos-10;
251 if (len>9) len=9;
252 memcpy(pCd->configname,pos+9,len);
253 pCd->configname[len]='\0';
254 sprintf(pCd->volgnr,"%3d",CardTeller); //hier want t hoeft maar 1 keer
255 sprintf(pCd->nodenr,"%3d",NodeTeller); //hier want t hoeft maar 1 keer
256 strncpy(pCd->sprintfname,pos+len+21,sizeof(pCd->sprintfname));
257 bCardBezig=TRUE;
258 }
259 }
260 else /*if (bCardBezig)*/
261 {
262 if (!memicmp(pos,pCd->sprintfname,strlen(pCd->sprintfname)))
263 {
264 CardTeller++;
265 bCardBezig=FALSE;
266 }
267 else if (!memicmp(pos,"TYPE=",5)) strncpy(pCd->type,pos+5,sizeof(pCd->type));
268 else if (!memicmp(pos,"IP=",3)) strncpy(pCd->ip,pos+3,sizeof(pCd->ip));
269 else if (!memicmp(pos,"DESC=",5)) strncpy(pCd->desc,pos+5,sizeof(pCd->desc));
270 else if (!memicmp(pos,"SDESC=",6)) strncpy(pCd->sdesc,pos+6,sizeof(pCd->sdesc));
271 else if (!memicmp(pos,"SPEED=",6)) strncpy(pCd->speed,pos+6,sizeof(pCd->speed));
272 else if (!memicmp(pos,"POINT_TO_POINT=",15)) strncpy(pCd->pointtopoint,pos+15,sizeof(pCd->pointtopoint));
273 else if (!memicmp(pos,"OSPF_BROADCAST=",15)) strncpy(pCd->ospfbroadcast,pos+15,sizeof(pCd->ospfbroadcast));
274 else if (!memicmp(pos,"OSPF_NEIGHBORS=",15)) strncpy(pCd->ospfneighbors,pos+15,sizeof(pCd->ospfneighbors));
275 else if (!memicmp(pos,"DHCP=",5)) strncpy(pCd->dhcp,pos+5,sizeof(pCd->dhcp));
276 else if (!memicmp(pos,"MODE=",5)) strncpy(pCd->mode,pos+5,sizeof(pCd->mode));
277 else if (!memicmp(pos,"ESSID=",6)) strncpy(pCd->essid,pos+6,sizeof(pCd->essid));
278 else if (!memicmp(pos,"CHANNEL=",8)) strncpy(pCd->channel,pos+8,sizeof(pCd->channel));
279 else if (!memicmp(pos,"POLAR=",6)) strncpy(pCd->polar,pos+6,sizeof(pCd->polar));
280 else if (!memicmp(pos,"ANTENNA=",8)) strncpy(pCd->antenna,pos+8,sizeof(pCd->antenna));
281 else if (!memicmp(pos,"GAIN=",5)) strncpy(pCd->gain,pos+5,sizeof(pCd->gain));
282 else if (!memicmp(pos,"DIRECTION=",10)) strncpy(pCd->direction,pos+10,sizeof(pCd->direction));
283 else if (!memicmp(pos,"BEAMWIDTH=",10)) strncpy(pCd->beamwidth,pos+10,sizeof(pCd->beamwidth));
284 else if (!memicmp(pos,"CABLE=",6)) strncpy(pCd->cable,pos+6,sizeof(pCd->cable));
285 else if (!memicmp(pos,"HEIGTH=",7)) strncpy(pCd->heigth,pos+7,sizeof(pCd->heigth));
286 }
287}
288
289void MaakCSV(void)
290{
291 int i;
292 CNODE *pCN;
293 CARD *pCd;
294 if (hConf=fopen("c:\\nodes\\configs.csv","w"))
295 {
296// strcpy(buf,"Volgnr");AddTekst();AddKomma();
297 strcpy(buf,"location");AddTekst();AddKomma();
298 strcpy(buf,"master_ip");AddTekst();AddKomma();
299 strcpy(buf,"gw_open");AddTekst();AddKomma();
300 strcpy(buf,"nodetype");AddTekst();AddKomma();
301 strcpy(buf,"nodename");AddTekst();AddKomma();
302 strcpy(buf,"status");AddTekst();AddKomma();
303 strcpy(buf,"OS");AddTekst();AddKomma();
304 strcpy(buf,"labelpos");AddTekst();AddKomma();
305 strcpy(buf,"X");AddTekst();AddKomma();
306 strcpy(buf,"Y");AddTekst();AddKomma();
307 strcpy(buf,"N");AddTekst();AddKomma();
308 strcpy(buf,"E");AddTekst();AddKomma();
309 strcpy(buf,"ESSID");AddTekst();AddKomma();
310// strcpy(buf,"volgnr");AddTekst();AddKomma();
311 strcpy(buf,"configname");AddTekst();AddKomma();
312 strcpy(buf,"sprintfname");AddTekst();AddKomma();
313 strcpy(buf,"type");AddTekst();AddKomma();
314 strcpy(buf,"ip");AddTekst();AddKomma();
315 strcpy(buf,"desc");AddTekst();AddKomma();
316 strcpy(buf,"sdesc");AddTekst();AddKomma();
317 strcpy(buf,"speed");AddTekst();AddKomma();
318 strcpy(buf,"point_to_point");AddTekst();AddKomma();
319 strcpy(buf,"ospf_broadcast");AddTekst();AddKomma();
320 strcpy(buf,"ospf_neighbors");AddTekst();AddKomma();
321 strcpy(buf,"dhcp");AddTekst();AddKomma();
322 strcpy(buf,"mode");AddTekst();AddKomma();
323 strcpy(buf,"essid");AddTekst();AddKomma();
324 strcpy(buf,"channel");AddTekst();AddKomma();
325 strcpy(buf,"polar");AddTekst();AddKomma();
326 strcpy(buf,"antenna");AddTekst();AddKomma();
327 strcpy(buf,"gain");AddTekst();AddKomma();
328 strcpy(buf,"direction");AddTekst();AddKomma();
329 strcpy(buf,"beamwidth");AddTekst();AddKomma();
330 strcpy(buf,"cable");AddTekst();AddKomma();
331 strcpy(buf,"heigth");AddTekst();AddKomma();
332
333 fwrite( "\n", sizeof( char ), 1, hConf );
334
335 for (i=0;i<CardTeller;i++)
336 {
337 pCd=&Card[i];
338 pCN=&CNode[atoi(pCd->nodenr)];
339// fwrite( pCN->volgnr, sizeof( char ), strlen(pCN->volgnr), hConf );AddKomma();
340 fwrite( pCN->location, sizeof( char ), strlen(pCN->location), hConf );AddKomma();
341 fwrite( pCN->master_ip, sizeof( char ), strlen(pCN->master_ip), hConf );AddKomma();
342 fwrite( pCN->gw_open, sizeof( char ), strlen(pCN->gw_open), hConf );AddKomma();
343 fwrite( pCN->nodetype, sizeof( char ), strlen(pCN->nodetype), hConf );AddKomma();
344 fwrite( pCN->nodename, sizeof( char ), strlen(pCN->nodename), hConf );AddKomma();
345 fwrite( pCN->status, sizeof( char ), strlen(pCN->status), hConf );AddKomma();
346 fwrite( pCN->OS, sizeof( char ), strlen(pCN->OS), hConf );AddKomma();
347 fwrite( pCN->labelpos, sizeof( char ), strlen(pCN->labelpos), hConf );AddKomma();
348 fwrite( pCN->X, sizeof( char ), strlen(pCN->X), hConf );AddKomma();
349 fwrite( pCN->Y, sizeof( char ), strlen(pCN->Y), hConf );AddKomma();
350 fwrite( pCN->N, sizeof( char ), strlen(pCN->N), hConf );AddKomma();
351 fwrite( pCN->E, sizeof( char ), strlen(pCN->E), hConf );AddKomma();
352 fwrite( pCN->ESSID, sizeof( char ), strlen(pCN->ESSID), hConf );AddKomma();
353// fwrite( pCd->volgnr, sizeof( char ), strlen(pCd->volgnr), hConf );AddKomma();
354 fwrite( pCd->configname, sizeof( char ), strlen(pCd->configname), hConf );AddKomma();
355 fwrite( pCd->sprintfname, sizeof( char ), strlen(pCd->sprintfname), hConf );AddKomma();
356 fwrite( pCd->type, sizeof( char ), strlen(pCd->type), hConf );AddKomma();
357 fwrite( pCd->ip, sizeof( char ), strlen(pCd->ip), hConf );AddKomma();
358 fwrite( pCd->desc, sizeof( char ), strlen(pCd->desc), hConf );AddKomma();
359 fwrite( pCd->sdesc, sizeof( char ), strlen(pCd->sdesc), hConf );AddKomma();
360 fwrite( pCd->speed, sizeof( char ), strlen(pCd->speed), hConf );AddKomma();
361 fwrite( pCd->pointtopoint, sizeof( char ), strlen(pCd->pointtopoint), hConf );AddKomma();
362 fwrite( pCd->ospfbroadcast, sizeof( char ), strlen(pCd->ospfbroadcast), hConf );AddKomma();
363 fwrite( pCd->ospfneighbors, sizeof( char ), strlen(pCd->ospfneighbors), hConf );AddKomma();
364 fwrite( pCd->dhcp, sizeof( char ), strlen(pCd->dhcp), hConf );AddKomma();
365 fwrite( pCd->mode, sizeof( char ), strlen(pCd->mode), hConf );AddKomma();
366 fwrite( pCd->essid, sizeof( char ), strlen(pCd->essid), hConf );AddKomma();
367 fwrite( pCd->channel, sizeof( char ), strlen(pCd->channel), hConf );AddKomma();
368 fwrite( pCd->polar, sizeof( char ), strlen(pCd->polar), hConf );AddKomma();
369 fwrite( pCd->antenna, sizeof( char ), strlen(pCd->antenna), hConf );AddKomma();
370 fwrite( pCd->gain, sizeof( char ), strlen(pCd->gain), hConf );AddKomma();
371 fwrite( pCd->direction, sizeof( char ), strlen(pCd->direction), hConf );AddKomma();
372 fwrite( pCd->beamwidth, sizeof( char ), strlen(pCd->beamwidth), hConf );AddKomma();
373 fwrite( pCd->cable, sizeof( char ), strlen(pCd->cable), hConf );AddKomma();
374 fwrite( pCd->heigth, sizeof( char ), strlen(pCd->heigth), hConf );AddKomma();
375 fwrite( "\n", sizeof( char ), 1, hConf );
376 }
377 fclose(hConf);
378 }
379}
380
381void AddKomma(void)
382{
383 fwrite( ",", sizeof( char ), 1, hConf );
384}
385
386
387
388void AddTekst(void)
389{
390 fwrite( buf, sizeof( char ), strlen(buf), hConf );
391}
Note: See TracBrowser for help on using the repository browser.