diff options
author | Mark Wells <mark@freeside.biz> | 2012-04-11 13:23:07 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2012-04-11 13:23:07 -0700 |
commit | 902d15046334045b5f24c2d9e179b3db6e1ee3f4 (patch) | |
tree | 24cd621864ae45c989a46ea60fc0ef5373281829 /FS/FS/svc_broadband.pm | |
parent | 9a4a158c7f3a0f9d2333e867f6f716ba0aef43e9 (diff) |
don't override manually entered IP address with auto-assignment, #17163
Diffstat (limited to 'FS/FS/svc_broadband.pm')
-rwxr-xr-x | FS/FS/svc_broadband.pm | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/FS/FS/svc_broadband.pm b/FS/FS/svc_broadband.pm index 2b6be2c6c..64cc3770e 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} |