diff options
author | Scott Ullrich <sullrich@pfsense.org> | 2007-10-17 03:46:07 +0000 |
---|---|---|
committer | Scott Ullrich <sullrich@pfsense.org> | 2007-10-17 03:46:07 +0000 |
commit | 4ac24842a5d7244a12d7fd5dc456af2206696ed4 (patch) | |
tree | 8646a971e9854cfb2ebf947ffd0abab09a441564 /packages/openbgpd | |
parent | 25a03691a936b2ef2974474155f8c49b0b47450d (diff) | |
download | pfsense-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.inc | 17 | ||||
-rw-r--r-- | packages/openbgpd/openbgpd_groups.xml | 5 |
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> |