Project

General

Profile

« Previous | Next » 

Revision f193cf92

Added by Simon Cornelius P. Umacob over 16 years ago

Merge IPv6 changes

View differences:

usr/local/www/firewall_rules_edit.php
40 40

  
41 41

  
42 42
require("guiconfig.inc");
43
require_once("IPv6.inc");
43 44

  
44 45
$specialsrcdst = explode(" ", "any wanip lanip lan pptp pppoe");
45 46

  
......
91 92
	if ($a_filter[$id]['protocol'] == "icmp")
92 93
		$pconfig['icmptype'] = $a_filter[$id]['icmptype'];
93 94

  
95
	if ($a_filter[$id]['protocol'] == "icmp6")
96
		$pconfig['icmp6type'] = $a_filter[$id]['icmp6type'];
97

  
94 98
	address_to_pconfig($a_filter[$id]['source'], $pconfig['src'],
95 99
		$pconfig['srcmask'], $pconfig['srcnot'],
96 100
		$pconfig['srcbeginport'], $pconfig['srcendport']);
......
156 160
	unset($id);
157 161

  
158 162
if ($_POST) {
159

  
160
	if ($_POST['type'] == "reject" && $_POST['proto'] <> "tcp")
161
		$input_errors[] = "Reject type rules only works when the protocol is set to TCP.";
163
	if ($_POST['type'] == "reject" && !($_POST['proto'] == "tcp" || $_POST['proto'] == "tcp6")) {
164
		$input_errors[] = "Reject type rules only works when the protocol is set to TCP or TCP6.";
165
	}
162 166

  
163 167
	if (($_POST['proto'] != "tcp") && ($_POST['proto'] != "udp") && ($_POST['proto'] != "tcp/udp")) {
164 168
		$_POST['srcbeginport'] = 0;
......
282 286

  
283 287
	if (!is_specialnet($_POST['srctype'])) {
284 288
		if (($_POST['src'] && !is_ipaddroranyalias($_POST['src']))) {
285
			$input_errors[] = "A valid source IP address or alias must be specified.";
289
			$input_errors[] = "A valid source IPv4/IPv6 address or alias must be specified.";
286 290
		}
287 291
		if (($_POST['srcmask'] && !is_numericint($_POST['srcmask']))) {
288 292
			$input_errors[] = "A valid source bit count must be specified.";
......
290 294
	}
291 295
	if (!is_specialnet($_POST['dsttype'])) {
292 296
		if (($_POST['dst'] && !is_ipaddroranyalias($_POST['dst']))) {
293
			$input_errors[] = "A valid destination IP address or alias must be specified.";
297
			$input_errors[] = "A valid destination IPv4/IPv6 address or alias must be specified.";
294 298
		}
295 299
		if (($_POST['dstmask'] && !is_numericint($_POST['dstmask']))) {
296 300
			$input_errors[] = "A valid destination bit count must be specified.";
......
386 390
		else
387 391
			unset($filterent['icmptype']);
388 392

  
393
		if ($_POST['proto'] == "icmp6" && $_POST['icmp6type'])
394
			$filterent['icmp6type'] = $_POST['icmp6type'];
395
		else
396
			unset($filterent['icmp6type']);
397

  
389 398
		pconfig_to_address($filterent['source'], $_POST['src'],
390 399
			$_POST['srcmask'], $_POST['srcnot'],
391 400
			$_POST['srcbeginport'], $_POST['srcendport']);
......
460 469

  
461 470
?>
462 471

  
472
<script type="text/javascript" src="javascript/NetUtils.js"></script>
473

  
463 474
</head>
464 475

  
465 476
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
......
569 580
			<td width="78%" class="vtable">
570 581
				<select name="proto" class="formselect" onchange="proto_change()">
571 582
<?php
572
				$protocols = explode(" ", "TCP UDP TCP/UDP ICMP ESP AH GRE IGMP any carp pfsync");
583
				$protocols = explode(" ", "TCP UDP TCP/UDP ICMP TCP6 UDP6 TCP6/UDP6 ICMP6 ESP AH GRE IGMP any carp pfsync");
573 584
				foreach ($protocols as $proto): ?>
574 585
					<option value="<?=strtolower($proto);?>" <?php if (strtolower($proto) == $pconfig['proto']) echo "selected"; ?>><?=htmlspecialchars($proto);?></option>
575 586
<?php 			endforeach; ?>
......
611 622
			<span class="vexpl">If you selected ICMP for the protocol above, you may specify an ICMP type here.</span>
612 623
		</td>
613 624
		</tr>
625
		<tr id="icmp6box" name="icmp6box">
626
			<td valign="top" class="vncell">ICMP6 type</td>
627
			<td class="vtable">
628
				<select name="icmp6type" class="formselect">
629
<?php
630
				$icmp6types = array(
631
					"unreach"	=>	"Destination unreachable",
632
					"toobig"	=>	"Packet too big",
633
					"timex"		=>	"Time exceeded",
634
					"parampro"	=>	"Invalid IPv6 header",
635
					"echoreq"	=>	"Echo service request",
636
					"echorep"	=>	"Echo service reply",
637
					"groupqry"	=>	"Group membership query",
638
					"listqry"	=>	"Multicast listener query",
639
					"grouprep"	=>	"Group membership report",
640
					"listenrep"	=>	"Multicast listener report",
641
					"groupterm"	=>	"Group membership termination",
642
					"listendone"	=>	"Multicast listerner done",
643
					"routersol"	=>	"Router solicitation",
644
					"routeradv"	=>	"Router advertisement",
645
					"neighbrsol"	=>	"Neighbor solicitation",
646
					"neighbradv"	=>	"Neighbor advertisement",
647
					"redir"		=>	"Shorter route exists",
648
					"routrrenum"	=>	"Route renumbering",
649
					"fqdnreq"	=>	"FQDN query",
650
					"niqry"		=>	"Node information query",
651
					"wrureq"	=>	"Who-are-you request",
652
					"fqdnrep"	=>	"FQDN reply",
653
					"nirep"		=>	"Node information reply",
654
					"wrurep"	=>	"Who-are-you reply",
655
					"mtraceresp"	=>	"mtrace response",
656
					"mtrace"	=>	"mtrace messages"
657
				);
658
?>
659

  
660
				<?php foreach ($icmp6types as $icmp6type => $descr): ?>
661
					<option value="<?=$icmp6type;?>" <?php if ($icmp6type == $pconfig['icmp6type']) echo "selected"; ?>><?=htmlspecialchars($descr);?></option>
662
				<?php endforeach; ?>
663

  
664
				</select>
665
				<br />
666
				<span class="vexpl">If you selected ICMP6 for the protocol above, you may specify an ICMP6 type here.</span>
667
			</td>
668
		</tr>
614 669
		<tr>
615 670
			<td width="22%" valign="top" class="vncellreq">Source</td>
616 671
			<td width="78%" class="vtable">
......
625 680
						<td>Type:&nbsp;&nbsp;</td>
626 681
						<td>
627 682
							<select name="srctype" class="formselect" onChange="typesel_change()">
628
<?php
629
								$sel = is_specialnet($pconfig['src']); ?>
683
							<?php
684
								$sel_host = false;
685
								$sel_v4 = false;
686
								$sel_v6 = false;
687

  
688
								$sel = is_specialnet($pconfig['src']);
689

  
690
								if (is_ipaddr($pconfig['src']) && !$sel) {
691
									if ($pconfig['srcmask'] == 32) {
692
										$sel_host = true;
693
									} else {
694
										$sel_v4 = true;
695
									}
696
								} else if (Net_IPv6::checkIPv6($pconfig['src']) && !$sel) {
697
									if ($pconfig['srcmask'] == 128) {
698
										$sel_host = true;
699
									} else {
700
										$sel_v6 = true;
701
									}
702
								}
703
							?>
630 704
								<option value="any"     <?php if ($pconfig['src'] == "any") { echo "selected"; } ?>>any</option>
631
								<option value="single"  <?php if (($pconfig['srcmask'] == 32) && !$sel) { echo "selected"; $sel = 1; } ?>>Single host or alias</option>
632
								<option value="network" <?php if (!$sel) echo "selected"; ?>>Network</option>
705
								<option value="single"  <?php if ($sel_host) echo "selected"; ?>>Single host or alias</option>
706
								<option value="network" <?php if ($sel_v4) echo "selected"; ?>>IPv4 Network</option>
707
								<option value="network_ipv6" <?php if ($sel_v6) echo "selected"; ?>>IPv6 Network</option>
633 708
								<?php if(have_ruleint_access("wan")): ?>
634 709
								<option value="wanip" 	<?php if ($pconfig['src'] == "wanip") { echo "selected"; } ?>>WAN address</option>
635 710
								<?php endif; ?>
......
753 828
						<td>Type:&nbsp;&nbsp;</td>
754 829
						<td>
755 830
							<select name="dsttype" class="formselect" onChange="typesel_change()">
756
<?php
757
								$sel = is_specialnet($pconfig['dst']); ?>
831
							<?php
832
								$sel_host = false;
833
								$sel_v4 = false;
834
								$sel_v6 = false;
835

  
836
								$sel = is_specialnet($pconfig['src']);
837

  
838
								if (is_ipaddr($pconfig['src']) && !$sel) {
839
									if ($pconfig['dstmask'] == 32) {
840
										$sel_host = true;
841
									} else {
842
										$sel_v4 = true;
843
									}
844
								} else if (Net_IPv6::checkIPv6($pconfig['src']) && !$sel) {
845
									if ($pconfig['dstmask'] == 128) {
846
										$sel_host = true;
847
									} else {
848
										$sel_v6 = true;
849
									}
850
								}
851
							?>
758 852
								<option value="any" <?php if ($pconfig['dst'] == "any") { echo "selected"; } ?>>any</option>
759
								<option value="single" <?php if (($pconfig['dstmask'] == 32) && !$sel) { echo "selected"; $sel = 1; } ?>>Single host or alias</option>
760
								<option value="network" <?php if (!$sel) echo "selected"; ?>>Network</option>
853
								<option value="single" <?php if ($sel_host) echo "selected"; ?>>Single host or alias</option>
854
								<option value="network" <?php if ($sel_v4) echo "selected"; ?>>IPv4 Network</option>
855
								<option value="network_ipv6" <?php if ($sel_v6) echo "selected"; ?>>IPv6 Network</option>
761 856
								<?php if(have_ruleint_access("wan")): ?>
762 857
								<option value="wanip" <?php if ($pconfig['dst'] == "wanip") { echo "selected"; } ?>>WAN address</option>
763 858
								<?php endif; ?>

Also available in: Unified diff