summaryrefslogtreecommitdiff
path: root/FS/FS/svc_broadband.pm
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-04-11 13:23:07 -0700
committerMark Wells <mark@freeside.biz>2012-04-11 13:23:07 -0700
commit902d15046334045b5f24c2d9e179b3db6e1ee3f4 (patch)
tree24cd621864ae45c989a46ea60fc0ef5373281829 /FS/FS/svc_broadband.pm
parent9a4a158c7f3a0f9d2333e867f6f716ba0aef43e9 (diff)
don't override manually entered IP address with auto-assignment, #17163
Diffstat (limited to 'FS/FS/svc_broadband.pm')
-rwxr-xr-xFS/FS/svc_broadband.pm9
1 files changed, 8 insertions, 1 deletions
diff --git a/FS/FS/svc_broadband.pm b/FS/FS/svc_broadband.pm
index 2b6be2c..64cc377 100755
--- a/FS/FS/svc_broadband.pm
+++ b/FS/FS/svc_broadband.pm
@@ -428,7 +428,8 @@ sub check {
}
else {
my $addr_block = $self->addr_block;
- unless ( $addr_block and $addr_block->manual_flag ) {
+ if ( $self->ip_addr eq ''
+ and not ( $addr_block and $addr_block->manual_flag ) ) {
my $error = $self->assign_ip_addr;
return $error if $error;
}
@@ -525,6 +526,12 @@ sub _check_ip_addr {
else {
return 'Cannot parse address: '.$self->ip_addr unless $self->NetAddr;
}
+
+ if ( $self->addr_block
+ and not $self->addr_block->NetAddr->contains($self->NetAddr) ) {
+ return 'Address '.$self->ip_addr.' not in block '.$self->addr_block->cidr;
+ }
+
# if (my $dup = qsearchs('svc_broadband', {
# ip_addr => $self->ip_addr,
# svcnum => {op=>'!=', value => $self->svcnum}