diff options
| author | Mark Wells <mark@freeside.biz> | 2012-04-11 13:26:40 -0700 |
|---|---|---|
| committer | Mark Wells <mark@freeside.biz> | 2012-04-11 13:26:40 -0700 |
| commit | 0341c98727aa193623916901c476c04cceea7c9e (patch) | |
| tree | ea95d36af24e1a62e92ac0a6c809a94d51c13b64 /FS | |
| parent | ed882ab1c3bb42f31c491a36605581b4c6dd2626 (diff) | |
don't override manually entered IP address with auto-assignment, #17163
Diffstat (limited to 'FS')
| -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 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} |
