summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-04-11 13:26:40 -0700
committerMark Wells <mark@freeside.biz>2012-04-11 13:26:40 -0700
commit0341c98727aa193623916901c476c04cceea7c9e (patch)
treeea95d36af24e1a62e92ac0a6c809a94d51c13b64 /FS
parented882ab1c3bb42f31c491a36605581b4c6dd2626 (diff)
don't override manually entered IP address with auto-assignment, #17163
Diffstat (limited to 'FS')
-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 67b1ffd2b..636ba1fd9 100755
--- a/FS/FS/svc_broadband.pm
+++ b/FS/FS/svc_broadband.pm
@@ -427,7 +427,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;
}
@@ -524,6 +525,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}