ipftest.c (5e985db5) ipftest.c (ab25eeb5)
1/*
2 * Copyright (C) 1993-2001 by Darren Reed.
3 *
4 * See the IPFILTER.LICENCE file for details on licencing.
5 *
1/*
2 * Copyright (C) 1993-2001 by Darren Reed.
3 *
4 * See the IPFILTER.LICENCE file for details on licencing.
5 *
6 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
6 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
7 * Use is subject to license terms.
8 */
9
10#pragma ident "%Z%%M% %I% %E% SMI"
11
12#include "ipf.h"
13#include "ipt.h"
14#include <sys/ioctl.h>
15#include <sys/file.h>
16
17#if !defined(lint)
18static const char sccsid[] = "@(#)ipt.c 1.19 6/3/96 (C) 1993-2000 Darren Reed";
7 * Use is subject to license terms.
8 */
9
10#pragma ident "%Z%%M% %I% %E% SMI"
11
12#include "ipf.h"
13#include "ipt.h"
14#include <sys/ioctl.h>
15#include <sys/file.h>
16
17#if !defined(lint)
18static const char sccsid[] = "@(#)ipt.c 1.19 6/3/96 (C) 1993-2000 Darren Reed";
19static const char rcsid[] = "@(#)$Id: ipftest.c,v 1.35 2003/07/01 01:03:04 darrenr Exp $";
19static const char rcsid[] = "@(#)$Id: ipftest.c,v 1.44.2.4 2005/07/16 06:05:28 darrenr Exp $";
20#endif
21
22extern char *optarg;
23extern struct frentry *ipfilter[2][2];
24extern struct ipread snoop, etherf, tcpd, pcap, iptext, iphex;
25extern struct ifnet *get_unit __P((char *, int));
26extern void init_ifp __P((void));
27extern ipnat_t *natparse __P((char *, int));
28extern int fr_running;
29
30ipfmutex_t ipl_mutex, ipf_authmx, ipf_rw, ipf_stinsert;
31ipfmutex_t ipf_nat_new, ipf_natio, ipf_timeoutlock;
20#endif
21
22extern char *optarg;
23extern struct frentry *ipfilter[2][2];
24extern struct ipread snoop, etherf, tcpd, pcap, iptext, iphex;
25extern struct ifnet *get_unit __P((char *, int));
26extern void init_ifp __P((void));
27extern ipnat_t *natparse __P((char *, int));
28extern int fr_running;
29
30ipfmutex_t ipl_mutex, ipf_authmx, ipf_rw, ipf_stinsert;
31ipfmutex_t ipf_nat_new, ipf_natio, ipf_timeoutlock;
32ipfrwlock_t ipf_mutex, ipf_global, ipf_ipidfrag, ip_poolrw;
32ipfrwlock_t ipf_mutex, ipf_global, ipf_ipidfrag, ip_poolrw, ipf_frcache;
33ipfrwlock_t ipf_frag, ipf_state, ipf_nat, ipf_natfrag, ipf_auth;
34int opts = OPT_DONOTHING;
35int use_inet6 = 0;
36int pfil_delayed_copy = 0;
37int main __P((int, char *[]));
38int loadrules __P((char *, int));
39int kmemcpy __P((char *, long, int));
40int kstrncpy __P((char *, long, int n));
41void dumpnat __P((void));
42void dumpstate __P((void));
43void dumplookups __P((void));
44void dumpgroups __P((void));
45void drain_log __P((char *));
46void fixv4sums __P((mb_t *, ip_t *));
47
48#if defined(__NetBSD__) || defined(__OpenBSD__) || SOLARIS || \
49 (_BSDI_VERSION >= 199701) || (__FreeBSD_version >= 300000) || \
33ipfrwlock_t ipf_frag, ipf_state, ipf_nat, ipf_natfrag, ipf_auth;
34int opts = OPT_DONOTHING;
35int use_inet6 = 0;
36int pfil_delayed_copy = 0;
37int main __P((int, char *[]));
38int loadrules __P((char *, int));
39int kmemcpy __P((char *, long, int));
40int kstrncpy __P((char *, long, int n));
41void dumpnat __P((void));
42void dumpstate __P((void));
43void dumplookups __P((void));
44void dumpgroups __P((void));
45void drain_log __P((char *));
46void fixv4sums __P((mb_t *, ip_t *));
47
48#if defined(__NetBSD__) || defined(__OpenBSD__) || SOLARIS || \
49 (_BSDI_VERSION >= 199701) || (__FreeBSD_version >= 300000) || \
50 defined(__osf__)
50 defined(__osf__) || defined(linux)
51int ipftestioctl __P((int, ioctlcmd_t, ...));
52int ipnattestioctl __P((int, ioctlcmd_t, ...));
53int ipstatetestioctl __P((int, ioctlcmd_t, ...));
54int ipauthtestioctl __P((int, ioctlcmd_t, ...));
55int ipscantestioctl __P((int, ioctlcmd_t, ...));
56int ipsynctestioctl __P((int, ioctlcmd_t, ...));
57int ipooltestioctl __P((int, ioctlcmd_t, ...));
58#else

--- 37 unchanged lines hidden (view full) ---

96 logout = NULL;
97 ifname = "anon0";
98 datain = NULL;
99
100 MUTEX_INIT(&ipf_rw, "ipf rw mutex");
101 MUTEX_INIT(&ipf_timeoutlock, "ipf timeout lock");
102 RWLOCK_INIT(&ipf_global, "ipf filter load/unload mutex");
103 RWLOCK_INIT(&ipf_mutex, "ipf filter rwlock");
51int ipftestioctl __P((int, ioctlcmd_t, ...));
52int ipnattestioctl __P((int, ioctlcmd_t, ...));
53int ipstatetestioctl __P((int, ioctlcmd_t, ...));
54int ipauthtestioctl __P((int, ioctlcmd_t, ...));
55int ipscantestioctl __P((int, ioctlcmd_t, ...));
56int ipsynctestioctl __P((int, ioctlcmd_t, ...));
57int ipooltestioctl __P((int, ioctlcmd_t, ...));
58#else

--- 37 unchanged lines hidden (view full) ---

96 logout = NULL;
97 ifname = "anon0";
98 datain = NULL;
99
100 MUTEX_INIT(&ipf_rw, "ipf rw mutex");
101 MUTEX_INIT(&ipf_timeoutlock, "ipf timeout lock");
102 RWLOCK_INIT(&ipf_global, "ipf filter load/unload mutex");
103 RWLOCK_INIT(&ipf_mutex, "ipf filter rwlock");
104 RWLOCK_INIT(&ipf_frcache, "ipf cache rwlock");
104 RWLOCK_INIT(&ipf_ipidfrag, "ipf IP NAT-Frag rwlock");
105
106 initparse();
105 RWLOCK_INIT(&ipf_ipidfrag, "ipf IP NAT-Frag rwlock");
106
107 initparse();
107 fr_loginit();
108 fr_authinit();
109 fr_fraginit();
110 fr_stateinit();
111 fr_natinit();
112 appr_init();
113 ip_lookup_init();
108 if (fr_initialise() == -1)
109 abort();
114 fr_running = 1;
115
110 fr_running = 1;
111
116 while ((c = getopt(argc, argv, "6bdDF:i:I:l:N:P:or:vxX")) != -1)
112 while ((c = getopt(argc, argv, "6bdDF:i:I:l:N:P:or:RT:vxX")) != -1)
117 switch (c)
118 {
119 case '6' :
120#ifdef USE_INET6
121 use_inet6 = 1;
122#else
123 fprintf(stderr, "IPv6 not supported\n");
124 exit(1);

--- 35 unchanged lines hidden (view full) ---

160 opts |= OPT_SAVEOUT;
161 break;
162 case 'r' :
163 if (ipf_parsefile(-1, ipf_addrule, iocfunctions,
164 optarg) == -1)
165 return -1;
166 loaded = 1;
167 break;
113 switch (c)
114 {
115 case '6' :
116#ifdef USE_INET6
117 use_inet6 = 1;
118#else
119 fprintf(stderr, "IPv6 not supported\n");
120 exit(1);

--- 35 unchanged lines hidden (view full) ---

156 opts |= OPT_SAVEOUT;
157 break;
158 case 'r' :
159 if (ipf_parsefile(-1, ipf_addrule, iocfunctions,
160 optarg) == -1)
161 return -1;
162 loaded = 1;
163 break;
164 case 'R' :
165 opts |= OPT_NORESOLVE;
166 break;
168 case 'v' :
169 opts |= OPT_VERBOSE;
170 break;
171 case 'N' :
172 if (ipnat_parsefile(-1, ipnat_addrule, ipnattestioctl,
173 optarg) == -1)
174 return -1;
175 loaded = 1;
176 opts |= OPT_NAT;
177 break;
178 case 'P' :
179 if (ippool_parsefile(-1, optarg, ipooltestioctl) == -1)
180 return -1;
181 loaded = 1;
182 break;
167 case 'v' :
168 opts |= OPT_VERBOSE;
169 break;
170 case 'N' :
171 if (ipnat_parsefile(-1, ipnat_addrule, ipnattestioctl,
172 optarg) == -1)
173 return -1;
174 loaded = 1;
175 opts |= OPT_NAT;
176 break;
177 case 'P' :
178 if (ippool_parsefile(-1, optarg, ipooltestioctl) == -1)
179 return -1;
180 loaded = 1;
181 break;
182 case 'T' :
183 ipf_dotuning(-1, optarg, ipftestioctl);
184 break;
183 case 'x' :
184 opts |= OPT_HEX;
185 break;
186 }
187
188 if (loaded == 0) {
189 (void)fprintf(stderr,"no rules loaded\n");
190 exit(-1);

--- 76 unchanged lines hidden (view full) ---

267
268 if (!(opts & OPT_BRIEF)) {
269 putchar(' ');
270 printpacket(ip);
271 printf("--------------");
272 } else if ((opts & (OPT_BRIEF|OPT_NAT)) == (OPT_NAT|OPT_BRIEF))
273 printpacket(ip);
274 if (dir && (ifp != NULL) && IP_V(ip) && (m != NULL))
185 case 'x' :
186 opts |= OPT_HEX;
187 break;
188 }
189
190 if (loaded == 0) {
191 (void)fprintf(stderr,"no rules loaded\n");
192 exit(-1);

--- 76 unchanged lines hidden (view full) ---

269
270 if (!(opts & OPT_BRIEF)) {
271 putchar(' ');
272 printpacket(ip);
273 printf("--------------");
274 } else if ((opts & (OPT_BRIEF|OPT_NAT)) == (OPT_NAT|OPT_BRIEF))
275 printpacket(ip);
276 if (dir && (ifp != NULL) && IP_V(ip) && (m != NULL))
275#if defined(__sgi) && (IRIX < 605)
277#if defined(__sgi) && (IRIX < 60500)
276 (*ifp->if_output)(ifp, (void *)m, NULL);
277#else
278# if TRU64 >= 1885
279 (*ifp->if_output)(ifp, (void *)m, NULL, 0, 0);
280# else
281 (*ifp->if_output)(ifp, (void *)m, NULL, 0);
282# endif
283#endif

--- 14 unchanged lines hidden (view full) ---

298
299 if (dump == 1) {
300 dumpnat();
301 dumpstate();
302 dumplookups();
303 dumpgroups();
304 }
305
278 (*ifp->if_output)(ifp, (void *)m, NULL);
279#else
280# if TRU64 >= 1885
281 (*ifp->if_output)(ifp, (void *)m, NULL, 0, 0);
282# else
283 (*ifp->if_output)(ifp, (void *)m, NULL, 0);
284# endif
285#endif

--- 14 unchanged lines hidden (view full) ---

300
301 if (dump == 1) {
302 dumpnat();
303 dumpstate();
304 dumplookups();
305 dumpgroups();
306 }
307
306 for (i = IPL_LOGMAX; i >= 0; i--)
307 (void) ipflog_clear(i);
308 fr_deinitialise();
308
309
309 fr_fragunload();
310 fr_authunload();
311 fr_stateunload();
312 fr_natunload();
313 appr_unload();
314
315 i = frflush(IPL_LOGIPF, 0, FR_INQUE|FR_OUTQUE|FR_INACTIVE);
316 i += frflush(IPL_LOGIPF, 0, FR_INQUE|FR_OUTQUE);
317
318 ip_lookup_unload();
319
320 return 0;
321}
322
323
324#if defined(__NetBSD__) || defined(__OpenBSD__) || SOLARIS || \
325 (_BSDI_VERSION >= 199701) || (__FreeBSD_version >= 300000) || \
310 return 0;
311}
312
313
314#if defined(__NetBSD__) || defined(__OpenBSD__) || SOLARIS || \
315 (_BSDI_VERSION >= 199701) || (__FreeBSD_version >= 300000) || \
326 defined(__osf__)
316 defined(__osf__) || defined(linux)
327int ipftestioctl(int dev, ioctlcmd_t cmd, ...)
328{
329 caddr_t data;
330 va_list ap;
331 int i;
332
333 va_start(ap, cmd);
334 data = va_arg(ap, caddr_t);
335 va_end(ap);
336
337 i = iplioctl(IPL_LOGIPF, cmd, data, FWRITE|FREAD);
338 if (opts & OPT_DEBUG)
339 fprintf(stderr, "iplioctl(IPF,%#x,%p) = %d\n",
340 (u_int)cmd, data, i);
317int ipftestioctl(int dev, ioctlcmd_t cmd, ...)
318{
319 caddr_t data;
320 va_list ap;
321 int i;
322
323 va_start(ap, cmd);
324 data = va_arg(ap, caddr_t);
325 va_end(ap);
326
327 i = iplioctl(IPL_LOGIPF, cmd, data, FWRITE|FREAD);
328 if (opts & OPT_DEBUG)
329 fprintf(stderr, "iplioctl(IPF,%#x,%p) = %d\n",
330 (u_int)cmd, data, i);
341 return i;
331 if (i != 0) {
332 errno = i;
333 return -1;
334 }
335 return 0;
342}
343
344
345int ipnattestioctl(int dev, ioctlcmd_t cmd, ...)
346{
347 caddr_t data;
348 va_list ap;
349 int i;
350
351 va_start(ap, cmd);
352 data = va_arg(ap, caddr_t);
353 va_end(ap);
354
355 i = iplioctl(IPL_LOGNAT, cmd, data, FWRITE|FREAD);
356 if (opts & OPT_DEBUG)
357 fprintf(stderr, "iplioctl(NAT,%#x,%p) = %d\n",
358 (u_int)cmd, data, i);
336}
337
338
339int ipnattestioctl(int dev, ioctlcmd_t cmd, ...)
340{
341 caddr_t data;
342 va_list ap;
343 int i;
344
345 va_start(ap, cmd);
346 data = va_arg(ap, caddr_t);
347 va_end(ap);
348
349 i = iplioctl(IPL_LOGNAT, cmd, data, FWRITE|FREAD);
350 if (opts & OPT_DEBUG)
351 fprintf(stderr, "iplioctl(NAT,%#x,%p) = %d\n",
352 (u_int)cmd, data, i);
359 return i;
353 if (i != 0) {
354 errno = i;
355 return -1;
356 }
357 return 0;
360}
361
362
363int ipstatetestioctl(int dev, ioctlcmd_t cmd, ...)
364{
365 caddr_t data;
366 va_list ap;
367 int i;
368
369 va_start(ap, cmd);
370 data = va_arg(ap, caddr_t);
371 va_end(ap);
372
373 i = iplioctl(IPL_LOGSTATE, cmd, data, FWRITE|FREAD);
374 if ((opts & OPT_DEBUG) || (i != 0))
375 fprintf(stderr, "iplioctl(STATE,%#x,%p) = %d\n",
376 (u_int)cmd, data, i);
358}
359
360
361int ipstatetestioctl(int dev, ioctlcmd_t cmd, ...)
362{
363 caddr_t data;
364 va_list ap;
365 int i;
366
367 va_start(ap, cmd);
368 data = va_arg(ap, caddr_t);
369 va_end(ap);
370
371 i = iplioctl(IPL_LOGSTATE, cmd, data, FWRITE|FREAD);
372 if ((opts & OPT_DEBUG) || (i != 0))
373 fprintf(stderr, "iplioctl(STATE,%#x,%p) = %d\n",
374 (u_int)cmd, data, i);
377 return i;
375 if (i != 0) {
376 errno = i;
377 return -1;
378 }
379 return 0;
378}
379
380
381int ipauthtestioctl(int dev, ioctlcmd_t cmd, ...)
382{
383 caddr_t data;
384 va_list ap;
385 int i;
386
387 va_start(ap, cmd);
388 data = va_arg(ap, caddr_t);
389 va_end(ap);
390
391 i = iplioctl(IPL_LOGAUTH, cmd, data, FWRITE|FREAD);
392 if ((opts & OPT_DEBUG) || (i != 0))
393 fprintf(stderr, "iplioctl(AUTH,%#x,%p) = %d\n",
394 (u_int)cmd, data, i);
380}
381
382
383int ipauthtestioctl(int dev, ioctlcmd_t cmd, ...)
384{
385 caddr_t data;
386 va_list ap;
387 int i;
388
389 va_start(ap, cmd);
390 data = va_arg(ap, caddr_t);
391 va_end(ap);
392
393 i = iplioctl(IPL_LOGAUTH, cmd, data, FWRITE|FREAD);
394 if ((opts & OPT_DEBUG) || (i != 0))
395 fprintf(stderr, "iplioctl(AUTH,%#x,%p) = %d\n",
396 (u_int)cmd, data, i);
395 return i;
397 if (i != 0) {
398 errno = i;
399 return -1;
400 }
401 return 0;
396}
397
398
399int ipscantestioctl(int dev, ioctlcmd_t cmd, ...)
400{
401 caddr_t data;
402 va_list ap;
403 int i;
404
405 va_start(ap, cmd);
406 data = va_arg(ap, caddr_t);
407 va_end(ap);
408
409 i = iplioctl(IPL_LOGSCAN, cmd, data, FWRITE|FREAD);
410 if ((opts & OPT_DEBUG) || (i != 0))
411 fprintf(stderr, "iplioctl(SCAN,%#x,%p) = %d\n",
412 (u_int)cmd, data, i);
402}
403
404
405int ipscantestioctl(int dev, ioctlcmd_t cmd, ...)
406{
407 caddr_t data;
408 va_list ap;
409 int i;
410
411 va_start(ap, cmd);
412 data = va_arg(ap, caddr_t);
413 va_end(ap);
414
415 i = iplioctl(IPL_LOGSCAN, cmd, data, FWRITE|FREAD);
416 if ((opts & OPT_DEBUG) || (i != 0))
417 fprintf(stderr, "iplioctl(SCAN,%#x,%p) = %d\n",
418 (u_int)cmd, data, i);
413 return i;
419 if (i != 0) {
420 errno = i;
421 return -1;
422 }
423 return 0;
414}
415
416
417int ipsynctestioctl(int dev, ioctlcmd_t cmd, ...)
418{
419 caddr_t data;
420 va_list ap;
421 int i;
422
423 va_start(ap, cmd);
424 data = va_arg(ap, caddr_t);
425 va_end(ap);
426
427 i = iplioctl(IPL_LOGSYNC, cmd, data, FWRITE|FREAD);
428 if ((opts & OPT_DEBUG) || (i != 0))
429 fprintf(stderr, "iplioctl(SYNC,%#x,%p) = %d\n",
430 (u_int)cmd, data, i);
424}
425
426
427int ipsynctestioctl(int dev, ioctlcmd_t cmd, ...)
428{
429 caddr_t data;
430 va_list ap;
431 int i;
432
433 va_start(ap, cmd);
434 data = va_arg(ap, caddr_t);
435 va_end(ap);
436
437 i = iplioctl(IPL_LOGSYNC, cmd, data, FWRITE|FREAD);
438 if ((opts & OPT_DEBUG) || (i != 0))
439 fprintf(stderr, "iplioctl(SYNC,%#x,%p) = %d\n",
440 (u_int)cmd, data, i);
431 return i;
441 if (i != 0) {
442 errno = i;
443 return -1;
444 }
445 return 0;
432}
433
434
435int ipooltestioctl(int dev, ioctlcmd_t cmd, ...)
436{
437 caddr_t data;
438 va_list ap;
439 int i;
440
441 va_start(ap, cmd);
442 data = va_arg(ap, caddr_t);
443 va_end(ap);
444
445 i = iplioctl(IPL_LOGLOOKUP, cmd, data, FWRITE|FREAD);
446 if ((opts & OPT_DEBUG) || (i != 0))
447 fprintf(stderr, "iplioctl(POOL,%#x,%p) = %d\n",
448 (u_int)cmd, data, i);
446}
447
448
449int ipooltestioctl(int dev, ioctlcmd_t cmd, ...)
450{
451 caddr_t data;
452 va_list ap;
453 int i;
454
455 va_start(ap, cmd);
456 data = va_arg(ap, caddr_t);
457 va_end(ap);
458
459 i = iplioctl(IPL_LOGLOOKUP, cmd, data, FWRITE|FREAD);
460 if ((opts & OPT_DEBUG) || (i != 0))
461 fprintf(stderr, "iplioctl(POOL,%#x,%p) = %d\n",
462 (u_int)cmd, data, i);
449 return i;
463 if (i != 0) {
464 errno = i;
465 return -1;
466 }
467 return 0;
450}
451#else
452int ipftestioctl(dev, cmd, data)
453dev_t dev;
454ioctlcmd_t cmd;
455void *data;
456{
457 int i;
458
459 i = iplioctl(IPL_LOGIPF, cmd, data, FWRITE|FREAD);
460 if ((opts & OPT_DEBUG) || (i != 0))
461 fprintf(stderr, "iplioctl(IPF,%#x,%p) = %d\n", cmd, data, i);
468}
469#else
470int ipftestioctl(dev, cmd, data)
471dev_t dev;
472ioctlcmd_t cmd;
473void *data;
474{
475 int i;
476
477 i = iplioctl(IPL_LOGIPF, cmd, data, FWRITE|FREAD);
478 if ((opts & OPT_DEBUG) || (i != 0))
479 fprintf(stderr, "iplioctl(IPF,%#x,%p) = %d\n", cmd, data, i);
462 return i;
480 if (i != 0) {
481 errno = i;
482 return -1;
483 }
484 return 0;
463}
464
465
466int ipnattestioctl(dev, cmd, data)
467dev_t dev;
468ioctlcmd_t cmd;
469void *data;
470{
471 int i;
472
473 i = iplioctl(IPL_LOGNAT, cmd, data, FWRITE|FREAD);
474 if ((opts & OPT_DEBUG) || (i != 0))
475 fprintf(stderr, "iplioctl(NAT,%#x,%p) = %d\n", cmd, data, i);
485}
486
487
488int ipnattestioctl(dev, cmd, data)
489dev_t dev;
490ioctlcmd_t cmd;
491void *data;
492{
493 int i;
494
495 i = iplioctl(IPL_LOGNAT, cmd, data, FWRITE|FREAD);
496 if ((opts & OPT_DEBUG) || (i != 0))
497 fprintf(stderr, "iplioctl(NAT,%#x,%p) = %d\n", cmd, data, i);
476 return i;
498 if (i != 0) {
499 errno = i;
500 return -1;
501 }
502 return 0;
477}
478
479
480int ipstatetestioctl(dev, cmd, data)
481dev_t dev;
482ioctlcmd_t cmd;
483void *data;
484{
485 int i;
486
487 i = iplioctl(IPL_LOGSTATE, cmd, data, FWRITE|FREAD);
488 if ((opts & OPT_DEBUG) || (i != 0))
489 fprintf(stderr, "iplioctl(STATE,%#x,%p) = %d\n", cmd, data, i);
503}
504
505
506int ipstatetestioctl(dev, cmd, data)
507dev_t dev;
508ioctlcmd_t cmd;
509void *data;
510{
511 int i;
512
513 i = iplioctl(IPL_LOGSTATE, cmd, data, FWRITE|FREAD);
514 if ((opts & OPT_DEBUG) || (i != 0))
515 fprintf(stderr, "iplioctl(STATE,%#x,%p) = %d\n", cmd, data, i);
490 return i;
516 if (i != 0) {
517 errno = i;
518 return -1;
519 }
520 return 0;
491}
492
493
494int ipauthtestioctl(dev, cmd, data)
495dev_t dev;
496ioctlcmd_t cmd;
497void *data;
498{
499 int i;
500
501 i = iplioctl(IPL_LOGAUTH, cmd, data, FWRITE|FREAD);
502 if ((opts & OPT_DEBUG) || (i != 0))
503 fprintf(stderr, "iplioctl(AUTH,%#x,%p) = %d\n", cmd, data, i);
521}
522
523
524int ipauthtestioctl(dev, cmd, data)
525dev_t dev;
526ioctlcmd_t cmd;
527void *data;
528{
529 int i;
530
531 i = iplioctl(IPL_LOGAUTH, cmd, data, FWRITE|FREAD);
532 if ((opts & OPT_DEBUG) || (i != 0))
533 fprintf(stderr, "iplioctl(AUTH,%#x,%p) = %d\n", cmd, data, i);
504 return i;
534 if (i != 0) {
535 errno = i;
536 return -1;
537 }
538 return 0;
505}
506
507
508int ipsynctestioctl(dev, cmd, data)
509dev_t dev;
510ioctlcmd_t cmd;
511void *data;
512{
513 int i;
514
515 i = iplioctl(IPL_LOGSYNC, cmd, data, FWRITE|FREAD);
516 if ((opts & OPT_DEBUG) || (i != 0))
517 fprintf(stderr, "iplioctl(SYNC,%#x,%p) = %d\n", cmd, data, i);
539}
540
541
542int ipsynctestioctl(dev, cmd, data)
543dev_t dev;
544ioctlcmd_t cmd;
545void *data;
546{
547 int i;
548
549 i = iplioctl(IPL_LOGSYNC, cmd, data, FWRITE|FREAD);
550 if ((opts & OPT_DEBUG) || (i != 0))
551 fprintf(stderr, "iplioctl(SYNC,%#x,%p) = %d\n", cmd, data, i);
518 return i;
552 if (i != 0) {
553 errno = i;
554 return -1;
555 }
556 return 0;
519}
520
521
522int ipscantestioctl(dev, cmd, data)
523dev_t dev;
524ioctlcmd_t cmd;
525void *data;
526{
527 int i;
528
529 i = iplioctl(IPL_LOGSCAN, cmd, data, FWRITE|FREAD);
530 if ((opts & OPT_DEBUG) || (i != 0))
531 fprintf(stderr, "iplioctl(SCAN,%#x,%p) = %d\n", cmd, data, i);
557}
558
559
560int ipscantestioctl(dev, cmd, data)
561dev_t dev;
562ioctlcmd_t cmd;
563void *data;
564{
565 int i;
566
567 i = iplioctl(IPL_LOGSCAN, cmd, data, FWRITE|FREAD);
568 if ((opts & OPT_DEBUG) || (i != 0))
569 fprintf(stderr, "iplioctl(SCAN,%#x,%p) = %d\n", cmd, data, i);
532 return i;
570 if (i != 0) {
571 errno = i;
572 return -1;
573 }
574 return 0;
533}
534
535
536int ipooltestioctl(dev, cmd, data)
537dev_t dev;
538ioctlcmd_t cmd;
539void *data;
540{
541 int i;
542
543 i = iplioctl(IPL_LOGLOOKUP, cmd, data, FWRITE|FREAD);
544 if (opts & OPT_DEBUG)
545 fprintf(stderr, "iplioctl(POOL,%#x,%p) = %d\n", cmd, data, i);
575}
576
577
578int ipooltestioctl(dev, cmd, data)
579dev_t dev;
580ioctlcmd_t cmd;
581void *data;
582{
583 int i;
584
585 i = iplioctl(IPL_LOGLOOKUP, cmd, data, FWRITE|FREAD);
586 if (opts & OPT_DEBUG)
587 fprintf(stderr, "iplioctl(POOL,%#x,%p) = %d\n", cmd, data, i);
546 return i;
588 if (i != 0) {
589 errno = i;
590 return -1;
591 }
592 return 0;
547}
548#endif
549
550
551int kmemcpy(addr, offset, size)
552char *addr;
553long offset;
554int size;

--- 25 unchanged lines hidden (view full) ---

580{
581 ipnat_t *ipn;
582 nat_t *nat;
583
584 printf("List of active MAP/Redirect filters:\n");
585 for (ipn = nat_list; ipn != NULL; ipn = ipn->in_next)
586 printnat(ipn, opts & (OPT_DEBUG|OPT_VERBOSE));
587 printf("\nList of active sessions:\n");
593}
594#endif
595
596
597int kmemcpy(addr, offset, size)
598char *addr;
599long offset;
600int size;

--- 25 unchanged lines hidden (view full) ---

626{
627 ipnat_t *ipn;
628 nat_t *nat;
629
630 printf("List of active MAP/Redirect filters:\n");
631 for (ipn = nat_list; ipn != NULL; ipn = ipn->in_next)
632 printnat(ipn, opts & (OPT_DEBUG|OPT_VERBOSE));
633 printf("\nList of active sessions:\n");
588 for (nat = nat_instances; nat; nat = nat->nat_next)
634 for (nat = nat_instances; nat; nat = nat->nat_next) {
589 printactivenat(nat, opts);
635 printactivenat(nat, opts);
636 if (nat->nat_aps)
637 printaps(nat->nat_aps, opts);
638 }
590}
591
592
593/*
594 * Display the built up state table rules and mapping entries.
595 */
596void dumpstate()
597{
598 ipstate_t *ips;
599
600 printf("List of active state sessions:\n");
601 for (ips = ips_list; ips != NULL; )
639}
640
641
642/*
643 * Display the built up state table rules and mapping entries.
644 */
645void dumpstate()
646{
647 ipstate_t *ips;
648
649 printf("List of active state sessions:\n");
650 for (ips = ips_list; ips != NULL; )
602 ips = printstate(ips, opts & (OPT_DEBUG|OPT_VERBOSE));
651 ips = printstate(ips, opts & (OPT_DEBUG|OPT_VERBOSE),
652 fr_ticks);
603}
604
605
606void dumplookups()
607{
608 iphtable_t *iph;
609 ip_pool_t *ipl;
610 int i;
611
612 printf("List of configured pools\n");
613 for (i = 0; i < IPL_LOGSIZE; i++)
614 for (ipl = ip_pool_list[i]; ipl != NULL; ipl = ipl->ipo_next)
653}
654
655
656void dumplookups()
657{
658 iphtable_t *iph;
659 ip_pool_t *ipl;
660 int i;
661
662 printf("List of configured pools\n");
663 for (i = 0; i < IPL_LOGSIZE; i++)
664 for (ipl = ip_pool_list[i]; ipl != NULL; ipl = ipl->ipo_next)
615 printpool(ipl, bcopywrap, opts);
665 printpool(ipl, bcopywrap, NULL, opts);
616
617 printf("List of configured hash tables\n");
618 for (i = 0; i < IPL_LOGSIZE; i++)
619 for (iph = ipf_htables[i]; iph != NULL; iph = iph->iph_next)
666
667 printf("List of configured hash tables\n");
668 for (i = 0; i < IPL_LOGSIZE; i++)
669 for (iph = ipf_htables[i]; iph != NULL; iph = iph->iph_next)
620 printhash(iph, bcopywrap, opts);
670 printhash(iph, bcopywrap, NULL, opts);
621}
622
623
624void dumpgroups()
625{
626 frgroup_t *fg;
627 frentry_t *fr;
628 int i;

--- 32 unchanged lines hidden (view full) ---

661
662void drain_log(filename)
663char *filename;
664{
665 char buffer[DEFAULT_IPFLOGSIZE];
666 struct iovec iov;
667 struct uio uio;
668 size_t resid;
671}
672
673
674void dumpgroups()
675{
676 frgroup_t *fg;
677 frentry_t *fr;
678 int i;

--- 32 unchanged lines hidden (view full) ---

711
712void drain_log(filename)
713char *filename;
714{
715 char buffer[DEFAULT_IPFLOGSIZE];
716 struct iovec iov;
717 struct uio uio;
718 size_t resid;
669 int fd;
719 int fd, i;
670
671 fd = open(filename, O_CREAT|O_TRUNC|O_WRONLY, 0644);
672 if (fd == -1) {
673 perror("drain_log:open");
674 return;
675 }
676
720
721 fd = open(filename, O_CREAT|O_TRUNC|O_WRONLY, 0644);
722 if (fd == -1) {
723 perror("drain_log:open");
724 return;
725 }
726
677 while (1) {
678 bzero((char *)&iov, sizeof(iov));
679 iov.iov_base = buffer;
680 iov.iov_len = sizeof(buffer);
727 for (i = 0; i <= IPL_LOGMAX; i++)
728 while (1) {
729 bzero((char *)&iov, sizeof(iov));
730 iov.iov_base = buffer;
731 iov.iov_len = sizeof(buffer);
681
732
682 bzero((char *)&uio, sizeof(uio));
683 uio.uio_iov = &iov;
684 uio.uio_iovcnt = 1;
685 uio.uio_resid = iov.iov_len;
686 resid = uio.uio_resid;
733 bzero((char *)&uio, sizeof(uio));
734 uio.uio_iov = &iov;
735 uio.uio_iovcnt = 1;
736 uio.uio_resid = iov.iov_len;
737 resid = uio.uio_resid;
687
738
688 if (ipflog_read(0, &uio) == 0) {
689 /*
690 * If nothing was read then break out.
691 */
692 if (uio.uio_resid == resid)
739 if (ipflog_read(i, &uio) == 0) {
740 /*
741 * If nothing was read then break out.
742 */
743 if (uio.uio_resid == resid)
744 break;
745 write(fd, buffer, resid - uio.uio_resid);
746 } else
693 break;
747 break;
694 write(fd, buffer, resid - uio.uio_resid);
695 } else
696 break;
697 }
698
699 close(fd);
700}
701
702
703void fixv4sums(m, ip)
704mb_t *m;

--- 30 unchanged lines hidden ---
748 }
749
750 close(fd);
751}
752
753
754void fixv4sums(m, ip)
755mb_t *m;

--- 30 unchanged lines hidden ---