scstadmin, SCST.pm: Check the number of arguments passed to subroutines

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@5060 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2013-10-10 15:07:47 +00:00
parent 5fc9261fc8
commit 70a9baa58a
@@ -572,6 +572,8 @@ sub targets {
my $driver = shift;
my @targets;
return undef if (!defined($driver));
if ($self->driverExists($driver) != TRUE) {
$self->{'err_string'} = "targets(): Driver '$driver' is not available";
return undef;
@@ -604,6 +606,8 @@ sub groups {
my $target = shift;
my @groups;
return undef if (!defined($driver) || !defined($target));
if ($self->driverExists($driver) != TRUE) {
$self->{'err_string'} = "groups(): Driver '$driver' is not available";
return undef;
@@ -643,6 +647,9 @@ sub initiators {
my $group = shift;
my @initiators;
return undef if (!defined($driver) || !defined($target) ||
!defined($group));
if ($self->driverExists($driver) != TRUE) {
$self->{'err_string'} = "initiators(): Driver '$driver' is not available";
return undef;
@@ -685,6 +692,8 @@ sub luns {
my $group = shift;
my %luns;
return undef if (!defined($driver) || !defined($target));
if ($self->driverExists($driver) != TRUE) {
$self->{'err_string'} = "luns(): Driver '$driver' is not available";
return undef;
@@ -827,6 +836,8 @@ sub deviceGroupDevices {
my $group = shift;
my @devices;
return undef if (!defined($group));
if ($self->deviceGroupExists($group) != TRUE) {
$self->{'err_string'} = "deviceGroupDevices(): Device group '$group' does not exist";
return undef;
@@ -857,6 +868,8 @@ sub targetGroups {
my $group = shift;
my @tgroups;
return undef if (!defined($group));
if ($self->deviceGroupExists($group) != TRUE) {
$self->{'err_string'} = "targetGroups(): Device group '$group' does not exist";
return undef;
@@ -888,6 +901,8 @@ sub targetGroupTargets {
my $tgroup = shift;
my @targets;
return undef if (!defined($group) || !defined($tgroup));
if ($self->deviceGroupExists($group) != TRUE) {
$self->{'err_string'} = "targetGroupTargets(): Device group '$group' does not exist";
return undef;
@@ -922,6 +937,8 @@ sub driverExists {
my $self = shift;
my $driver = shift;
return FALSE if (!defined($driver));
my $drivers = $self->drivers();
return SCST_C_FATAL_ERROR if (!defined($drivers));
@@ -939,6 +956,8 @@ sub driverDynamicAttributes {
my %attributes;
my $available;
return undef if (!defined($driver));
if ($self->driverExists($driver) != TRUE) {
$self->{'err_string'} = "driverDynamicAttributes(): Driver '$driver' ".
"is not available";
@@ -1151,6 +1170,8 @@ sub targetType {
my $driver = shift;
my $target = shift;
return undef if (!defined($driver) || !defined($target));
if ($self->driverIsVirtualCapable($driver)) {
my $attribs = $self->targetAttributes($driver, $target);
@@ -1566,6 +1587,9 @@ sub addGroup {
my $target = shift;
my $group = shift;
return SCST_C_GRP_ADD_FAIL if (!defined($driver) || !defined($target) ||
!defined($group));
my $rc = $self->driverExists($driver);
return SCST_C_DRV_NO_DRIVER if (!$rc);
return $rc if ($rc > 1);
@@ -1613,6 +1637,9 @@ sub removeGroup {
my $target = shift;
my $group = shift;
return SCST_C_GRP_REM_FAIL if (!defined($driver) || !defined($target) ||
!defined($group));
my $rc = $self->driverExists($driver);
return SCST_C_DRV_NO_DRIVER if (!$rc);
return $rc if ($rc > 1);
@@ -1658,6 +1685,8 @@ sub addDeviceGroup {
my $self = shift;
my $group = shift;
return SCST_C_DEV_GRP_ADD_FAIL if (!defined($group));
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_EXISTS if ($rc == TRUE);
return $rc if ($rc > 1);
@@ -1693,6 +1722,8 @@ sub removeDeviceGroup {
my $self = shift;
my $group = shift;
return SCST_C_DEV_GRP_REM_FAIL if (!defined($group));
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
@@ -1729,6 +1760,8 @@ sub addDeviceGroupDevice {
my $group = shift;
my $device = shift;
return SCST_C_DGRP_ADD_DEV_FAIL if (!defined($group) || !defined($device));
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
@@ -1785,6 +1818,8 @@ sub addTargetGroup {
my $group = shift;
my $tgroup = shift;
return SCST_C_DGRP_ADD_GRP_FAIL if (!defined($group) || !defined($tgroup));
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
@@ -1827,6 +1862,8 @@ sub addTargetGroupTarget {
my $tgroup = shift;
my $tgt = shift;
return SCST_C_TGRP_ADD_TGT_FAIL if (!defined($group) || !defined($tgroup) || !defined($tgt));
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
@@ -1873,6 +1910,8 @@ sub removeDeviceGroupDevice {
my $group = shift;
my $device = shift;
return SCST_C_DGRP_REM_DEV_FAIL if (!defined($group) || !defined($device));
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
@@ -1918,6 +1957,8 @@ sub removeTargetGroup {
my $group = shift;
my $tgroup = shift;
return SCST_C_DGRP_REM_GRP_FAIL if (!defined($group) || !defined($tgroup));
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
@@ -1960,6 +2001,8 @@ sub removeTargetGroupTarget {
my $tgroup = shift;
my $tgt = shift;
return SCST_C_TGRP_REM_TGT_FAIL if (!defined($group) || !defined($tgroup) || !defined($tgt));
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
@@ -2008,6 +2051,10 @@ sub addInitiator {
my $group = shift;
my $initiator = shift;
return SCST_C_GRP_ADD_INI_FAIL
if (!defined($driver) || !defined($target) ||
!defined($group) || !defined($initiator));
my $rc = $self->driverExists($driver);
return SCST_C_DRV_NO_DRIVER if (!$rc);
return $rc if ($rc > 1);
@@ -2062,6 +2109,10 @@ sub removeInitiator {
my $group = shift;
my $initiator = shift;
return SCST_C_GRP_REM_INI_FAIL if (!defined($driver) ||
!defined($target) ||
!defined($initiator));
my $rc = $self->driverExists($driver);
return SCST_C_DRV_NO_DRIVER if (!$rc);
return $rc if ($rc > 1);
@@ -2230,8 +2281,12 @@ sub addLun {
my $attributes = shift;
my $group = shift;
my $err;
my $err2;
my $err = defined($group) ? SCST_C_GRP_ADD_LUN_FAIL :
SCST_C_TGT_ADD_LUN_FAIL;
return $err if (!defined($driver) || !defined($target) ||
!defined($device) || !defined($lun) ||
!defined($attributes));
my $rc = $self->driverExists($driver);
return SCST_C_DRV_NO_DRIVER if (!$rc);
@@ -2249,6 +2304,8 @@ sub addLun {
return SCST_C_LUN_BAD_ATTRIBUTES if ($rc == TRUE);
return $rc if ($rc > 1);
my $err2;
if (defined($group)) {
$rc = $self->groupExists($driver, $target, $group);
return SCST_C_GRP_NO_GROUP if (!$rc);
@@ -2262,8 +2319,6 @@ sub addLun {
$err2 = SCST_C_TGT_LUN_EXISTS;
}
return $err if (!defined($lun));
$rc = $self->lunExists($driver, $target, $lun, $group);
return $err2 if ($rc == TRUE);
return $rc if ($rc > 1);
@@ -2325,8 +2380,10 @@ sub removeLun {
my $lun = shift;
my $group = shift;
my $err;
my $err2;
my $err = defined($group) ? SCST_C_GRP_REM_LUN_FAIL :
SCST_C_TGT_ADD_LUN_FAIL;
return $err if (!defined($driver) || !defined($target) || !defined($lun));
my $rc = $self->driverExists($driver);
return SCST_C_DRV_NO_DRIVER if (!$rc);
@@ -2336,15 +2393,15 @@ sub removeLun {
return SCST_C_TGT_NO_TARGET if (!$rc);
return $rc if ($rc > 1);
my $err2;
if (defined($group)) {
$rc = $self->groupExists($driver, $target, $group);
return SCST_C_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
$err = SCST_C_GRP_REM_LUN_FAIL;
$err2 = SCST_C_GRP_NO_LUN;
} else {
$err = SCST_C_TGT_ADD_LUN_FAIL;
$err2 = SCST_C_TGT_NO_LUN;
}
@@ -2497,7 +2554,10 @@ sub clearLuns {
my $target = shift;
my $group = shift;
my $err;
my $err = defined($group) ? SCST_C_GRP_CLR_LUN_FAIL :
SCST_C_TGT_CLR_LUN_FAIL;
return $err if (!defined($driver) || !defined($target));
my $rc = $self->driverExists($driver);
return SCST_C_DRV_NO_DRIVER if (!$rc);
@@ -2511,10 +2571,6 @@ sub clearLuns {
$rc = $self->groupExists($driver, $target, $group);
return SCST_C_GRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
$err = SCST_C_GRP_CLR_LUN_FAIL;
} else {
$err = SCST_C_TGT_CLR_LUN_FAIL
}
my ($path, $cmd);
@@ -2879,6 +2935,8 @@ sub targetAttributes {
my $target = shift;
my %attributes;
return undef if (!defined($driver) || !defined($target));
if ($self->driverExists($driver) != TRUE) {
$self->{'err_string'} = "targetAttributes(): Driver '$driver' is not available";
return undef;
@@ -3302,6 +3360,10 @@ sub setLunAttribute {
my $value = shift;
my $group = shift;
return SCST_C_LUN_SETATTR_FAIL
if (!defined($driver) || !defined($target) || !defined($lun) ||
!defined($attribute) || !defined($value));
my $rc = $self->driverExists($driver);
return SCST_C_DRV_NO_DRIVER if (!$rc);
return $rc if ($rc > 1);
@@ -3329,8 +3391,6 @@ sub setLunAttribute {
return SCST_C_GRP_NO_LUN if (!$rc);
return $rc if ($rc > 1);
return TRUE if (!defined($attribute) || !defined($value));
my $attributes = $self->lunAttributes($driver, $target, $group, $lun);
return SCST_C_LUN_BAD_ATTRIBUTES if (!defined($$attributes{$attribute}));
@@ -4228,6 +4288,10 @@ sub openDevice {
my $device = shift;
my $attributes = shift;
return SCST_C_DEV_OPEN_FAIL if (!defined($handler) ||
!defined($device) ||
!defined($attributes));
my $rc = $self->handlerExists($handler);
return SCST_C_HND_NO_HANDLER if (!$rc);
return $rc if ($rc > 1);
@@ -4282,6 +4346,9 @@ sub closeDevice {
my $handler = shift;
my $device = shift;
return SCST_C_DEV_CLOSE_FAIL if (!defined($handler) ||
!defined($device));
my $rc = $self->handlerExists($handler);
return SCST_C_HND_NO_HANDLER if (!$rc);
return $rc if ($rc > 1);
@@ -4786,6 +4853,8 @@ sub sessions {
my $target = shift;
my %_sessions;
return undef if (!defined($driver) || !defined($target));
if ($self->driverExists($driver) != TRUE) {
$self->{'err_string'} = "sessions(): Driver '$driver' ".
"is not available";