Project

General

Profile

Download (1.29 KB) Statistics
| Branch: | Tag: | Revision:
1
/*
2
 * pfanchordrill
3
 *
4
 * part of pfSense (https://www.pfsense.org)
5
 * Copyright (c) 2016-2020 Rubicon Communications, LLC (Netgate)
6
 * All rights reserved.
7
 *
8
 * Licensed under the Apache License, Version 2.0 (the "License");
9
 * you may not use this file except in compliance with the License.
10
 * You may obtain a copy of the License at
11
 *
12
 * http://www.apache.org/licenses/LICENSE-2.0
13
 *
14
 * Unless required by applicable law or agreed to in writing, software
15
 * distributed under the License is distributed on an "AS IS" BASIS,
16
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
 * See the License for the specific language governing permissions and
18
 * limitations under the License.
19
 */
20
/* Recursively check anchors for rules/nat and also for anchors inside anchors (like those used by relayd) */
21
function anchor_recurse($name = '') {
22
	$anchor_list = "";
23
	if ($name) {
24
		$name = ' -a ' . escapeshellarg($name);
25
	}
26
	exec("/sbin/pfctl -sA{$name} 2>&1", $anchor_list);
27
	foreach ($anchor_list as $anchor) {
28
		$anchor = trim($anchor);
29
		echo "\n{$anchor} rules/nat contents:\n";
30
		system("/sbin/pfctl -a " . escapeshellarg($anchor) . " -sn");
31
		system("/sbin/pfctl -a " . escapeshellarg($anchor) . " -sr");
32
		anchor_recurse($anchor);
33
	}
34
}
35

    
36
/* Start with a the root list of anchors */
37
anchor_recurse();
(16-16/24)