@@ -258,6 +258,7 @@ iptables_fw_init(void)
258
258
t_trusted_mac * p ;
259
259
int proxy_port ;
260
260
fw_quiet = 0 ;
261
+ int got_authdown_ruleset = NULL == get_ruleset ("auth-is-down" ) ? 0 : 1 ;
261
262
262
263
LOCK_CONFIG ();
263
264
config = config_get_config ();
@@ -283,12 +284,14 @@ iptables_fw_init(void)
283
284
iptables_do_command ("-t mangle -N " CHAIN_TRUSTED );
284
285
iptables_do_command ("-t mangle -N " CHAIN_OUTGOING );
285
286
iptables_do_command ("-t mangle -N " CHAIN_INCOMING );
286
- iptables_do_command ("-t mangle -N " CHAIN_AUTH_IS_DOWN );
287
+ if (got_authdown_ruleset )
288
+ iptables_do_command ("-t mangle -N " CHAIN_AUTH_IS_DOWN );
287
289
288
290
/* Assign links and rules to these new chains */
289
291
iptables_do_command ("-t mangle -I PREROUTING 1 -i %s -j " CHAIN_OUTGOING , config -> gw_interface );
290
292
iptables_do_command ("-t mangle -I PREROUTING 1 -i %s -j " CHAIN_TRUSTED , config -> gw_interface ); //this rule will be inserted before the prior one
291
- iptables_do_command ("-t mangle -I PREROUTING 1 -i %s -j " CHAIN_AUTH_IS_DOWN , config -> gw_interface ); //this rule must be last in the chain
293
+ if (got_authdown_ruleset )
294
+ iptables_do_command ("-t mangle -I PREROUTING 1 -i %s -j " CHAIN_AUTH_IS_DOWN , config -> gw_interface ); //this rule must be last in the chain
292
295
iptables_do_command ("-t mangle -I POSTROUTING 1 -o %s -j " CHAIN_INCOMING , config -> gw_interface );
293
296
294
297
for (p = config -> trustedmaclist ; p != NULL ; p = p -> next )
@@ -307,7 +310,8 @@ iptables_fw_init(void)
307
310
iptables_do_command ("-t nat -N " CHAIN_GLOBAL );
308
311
iptables_do_command ("-t nat -N " CHAIN_UNKNOWN );
309
312
iptables_do_command ("-t nat -N " CHAIN_AUTHSERVERS );
310
- iptables_do_command ("-t nat -N " CHAIN_AUTH_IS_DOWN );
313
+ if (got_authdown_ruleset )
314
+ iptables_do_command ("-t nat -N " CHAIN_AUTH_IS_DOWN );
311
315
312
316
/* Assign links and rules to these new chains */
313
317
iptables_do_command ("-t nat -A PREROUTING -i %s -j " CHAIN_OUTGOING , config -> gw_interface );
@@ -329,7 +333,8 @@ iptables_fw_init(void)
329
333
330
334
iptables_do_command ("-t nat -A " CHAIN_UNKNOWN " -j " CHAIN_AUTHSERVERS );
331
335
iptables_do_command ("-t nat -A " CHAIN_UNKNOWN " -j " CHAIN_GLOBAL );
332
- iptables_do_command ("-t nat -A " CHAIN_UNKNOWN " -j " CHAIN_AUTH_IS_DOWN );
336
+ if (got_authdown_ruleset )
337
+ iptables_do_command ("-t nat -A " CHAIN_UNKNOWN " -j " CHAIN_AUTH_IS_DOWN );
333
338
iptables_do_command ("-t nat -A " CHAIN_UNKNOWN " -p tcp --dport 80 -j REDIRECT --to-ports %d" , gw_port );
334
339
335
340
@@ -347,7 +352,8 @@ iptables_fw_init(void)
347
352
iptables_do_command ("-t filter -N " CHAIN_VALIDATE );
348
353
iptables_do_command ("-t filter -N " CHAIN_KNOWN );
349
354
iptables_do_command ("-t filter -N " CHAIN_UNKNOWN );
350
- iptables_do_command ("-t filter -N " CHAIN_AUTH_IS_DOWN );
355
+ if (got_authdown_ruleset )
356
+ iptables_do_command ("-t filter -N " CHAIN_AUTH_IS_DOWN );
351
357
352
358
/* Assign links and rules to these new chains */
353
359
@@ -383,8 +389,10 @@ iptables_fw_init(void)
383
389
iptables_do_command ("-t filter -A " CHAIN_TO_INTERNET " -m mark --mark 0x%u -j " CHAIN_KNOWN , FW_MARK_KNOWN );
384
390
iptables_load_ruleset ("filter" , "known-users" , CHAIN_KNOWN );
385
391
386
- iptables_do_command ("-t filter -A " CHAIN_TO_INTERNET " -m mark --mark 0x%u -j " CHAIN_AUTH_IS_DOWN , FW_MARK_AUTH_IS_DOWN );
387
- iptables_load_ruleset ("filter" , "known-users" , CHAIN_AUTH_IS_DOWN );
392
+ if (got_authdown_ruleset ) {
393
+ iptables_do_command ("-t filter -A " CHAIN_TO_INTERNET " -m mark --mark 0x%u -j " CHAIN_AUTH_IS_DOWN , FW_MARK_AUTH_IS_DOWN );
394
+ iptables_load_ruleset ("filter" , "auth-is-down" , CHAIN_AUTH_IS_DOWN );
395
+ }
388
396
389
397
iptables_do_command ("-t filter -A " CHAIN_TO_INTERNET " -j " CHAIN_UNKNOWN );
390
398
iptables_load_ruleset ("filter" , "unknown-users" , CHAIN_UNKNOWN );
@@ -403,6 +411,7 @@ iptables_fw_init(void)
403
411
int
404
412
iptables_fw_destroy (void )
405
413
{
414
+ int got_authdown_ruleset = NULL == get_ruleset ("auth-is-down" ) ? 0 : 1 ;
406
415
fw_quiet = 1 ;
407
416
408
417
debug (LOG_DEBUG , "Destroying our iptables entries" );
@@ -415,15 +424,18 @@ iptables_fw_destroy(void)
415
424
debug (LOG_DEBUG , "Destroying chains in the MANGLE table" );
416
425
iptables_fw_destroy_mention ("mangle" , "PREROUTING" , CHAIN_TRUSTED );
417
426
iptables_fw_destroy_mention ("mangle" , "PREROUTING" , CHAIN_OUTGOING );
418
- iptables_fw_destroy_mention ("mangle" , "PREROUTING" , CHAIN_AUTH_IS_DOWN );
427
+ if (got_authdown_ruleset )
428
+ iptables_fw_destroy_mention ("mangle" , "PREROUTING" , CHAIN_AUTH_IS_DOWN );
419
429
iptables_fw_destroy_mention ("mangle" , "POSTROUTING" , CHAIN_INCOMING );
420
430
iptables_do_command ("-t mangle -F " CHAIN_TRUSTED );
421
431
iptables_do_command ("-t mangle -F " CHAIN_OUTGOING );
422
- iptables_do_command ("-t mangle -F " CHAIN_AUTH_IS_DOWN );
432
+ if (got_authdown_ruleset )
433
+ iptables_do_command ("-t mangle -F " CHAIN_AUTH_IS_DOWN );
423
434
iptables_do_command ("-t mangle -F " CHAIN_INCOMING );
424
435
iptables_do_command ("-t mangle -X " CHAIN_TRUSTED );
425
436
iptables_do_command ("-t mangle -X " CHAIN_OUTGOING );
426
- iptables_do_command ("-t mangle -X " CHAIN_AUTH_IS_DOWN );
437
+ if (got_authdown_ruleset )
438
+ iptables_do_command ("-t mangle -X " CHAIN_AUTH_IS_DOWN );
427
439
iptables_do_command ("-t mangle -X " CHAIN_INCOMING );
428
440
429
441
/*
@@ -435,14 +447,16 @@ iptables_fw_destroy(void)
435
447
iptables_fw_destroy_mention ("nat" , "PREROUTING" , CHAIN_OUTGOING );
436
448
iptables_do_command ("-t nat -F " CHAIN_AUTHSERVERS );
437
449
iptables_do_command ("-t nat -F " CHAIN_OUTGOING );
438
- iptables_do_command ("-t nat -F " CHAIN_AUTH_IS_DOWN );
450
+ if (got_authdown_ruleset )
451
+ iptables_do_command ("-t nat -F " CHAIN_AUTH_IS_DOWN );
439
452
iptables_do_command ("-t nat -F " CHAIN_TO_ROUTER );
440
453
iptables_do_command ("-t nat -F " CHAIN_TO_INTERNET );
441
454
iptables_do_command ("-t nat -F " CHAIN_GLOBAL );
442
455
iptables_do_command ("-t nat -F " CHAIN_UNKNOWN );
443
456
iptables_do_command ("-t nat -X " CHAIN_AUTHSERVERS );
444
457
iptables_do_command ("-t nat -X " CHAIN_OUTGOING );
445
- iptables_do_command ("-t nat -X " CHAIN_AUTH_IS_DOWN );
458
+ if (got_authdown_ruleset )
459
+ iptables_do_command ("-t nat -X " CHAIN_AUTH_IS_DOWN );
446
460
iptables_do_command ("-t nat -X " CHAIN_TO_ROUTER );
447
461
iptables_do_command ("-t nat -X " CHAIN_TO_INTERNET );
448
462
iptables_do_command ("-t nat -X " CHAIN_GLOBAL );
@@ -462,15 +476,17 @@ iptables_fw_destroy(void)
462
476
iptables_do_command ("-t filter -F " CHAIN_VALIDATE );
463
477
iptables_do_command ("-t filter -F " CHAIN_KNOWN );
464
478
iptables_do_command ("-t filter -F " CHAIN_UNKNOWN );
465
- iptables_do_command ("-t filter -F " CHAIN_AUTH_IS_DOWN );
479
+ if (got_authdown_ruleset )
480
+ iptables_do_command ("-t filter -F " CHAIN_AUTH_IS_DOWN );
466
481
iptables_do_command ("-t filter -X " CHAIN_TO_INTERNET );
467
482
iptables_do_command ("-t filter -X " CHAIN_AUTHSERVERS );
468
483
iptables_do_command ("-t filter -X " CHAIN_LOCKED );
469
484
iptables_do_command ("-t filter -X " CHAIN_GLOBAL );
470
485
iptables_do_command ("-t filter -X " CHAIN_VALIDATE );
471
486
iptables_do_command ("-t filter -X " CHAIN_KNOWN );
472
487
iptables_do_command ("-t filter -X " CHAIN_UNKNOWN );
473
- iptables_do_command ("-t filter -X " CHAIN_AUTH_IS_DOWN );
488
+ if (got_authdown_ruleset )
489
+ iptables_do_command ("-t filter -X " CHAIN_AUTH_IS_DOWN );
474
490
475
491
return 1 ;
476
492
}
0 commit comments