aboutsummaryrefslogtreecommitdiffstats
path: root/packages/openbgpd
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2007-10-17 03:46:07 +0000
committerScott Ullrich <sullrich@pfsense.org>2007-10-17 03:46:07 +0000
commit4ac24842a5d7244a12d7fd5dc456af2206696ed4 (patch)
tree8646a971e9854cfb2ebf947ffd0abab09a441564 /packages/openbgpd
parent25a03691a936b2ef2974474155f8c49b0b47450d (diff)
downloadpfsense-packages-4ac24842a5d7244a12d7fd5dc456af2206696ed4.tar.gz
pfsense-packages-4ac24842a5d7244a12d7fd5dc456af2206696ed4.tar.bz2
pfsense-packages-4ac24842a5d7244a12d7fd5dc456af2206696ed4.zip
Do not allow a group to be deleted when being referenced by a neighbor.
Diffstat (limited to 'packages/openbgpd')
-rw-r--r--packages/openbgpd/openbgpd.inc17
-rw-r--r--packages/openbgpd/openbgpd_groups.xml5
2 files changed, 22 insertions, 0 deletions
diff --git a/packages/openbgpd/openbgpd.inc b/packages/openbgpd/openbgpd.inc
index 3985a4aa..aff02c24 100644
--- a/packages/openbgpd/openbgpd.inc
+++ b/packages/openbgpd/openbgpd.inc
@@ -134,6 +134,23 @@ function deinstall_openbgpd() {
exec("killall bgpd");
}
+function check_group_usage($groupname) {
+ global $config, $g;
+ $openbgpd_conf = &$config['installedpackages']['openbgpd']['config'][0];
+ $openbgpd_rows = &$config['installedpackages']['openbgpd']['config'][0]['row'];
+ $openbgpd_groups = &$config['installedpackages']['openbgpdgroups']['config'];
+ $openbgpd_neighbors = &$config['installedpackages']['openbgpdneighbors']['config'];
+ if(is_array($openbgpd_groups)) {
+ foreach($openbgpd_groups as $group) {
+ foreach($openbgpd_neighbors as $neighbor) {
+ if($neighbor['groupname'] == $group['name'])
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
function grey_out_value_boxes() {
echo <<<EOF
<script language="javascript">
diff --git a/packages/openbgpd/openbgpd_groups.xml b/packages/openbgpd/openbgpd_groups.xml
index 5521d208..6e80dbfe 100644
--- a/packages/openbgpd/openbgpd_groups.xml
+++ b/packages/openbgpd/openbgpd_groups.xml
@@ -106,4 +106,9 @@
<custom_php_resync_config_command>
openbgpd_install_conf();
</custom_php_resync_config_command>
+ <custom_php_validation_command>
+ $status = check_group_usage($_POST['groupname']);
+ if($status)
+ $input_errors[] = "Sorry this group is in use and cannot be deleted.";
+ </custom_php_validation_command>
</packagegui>