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 --- |