diff options
author | Mitch Jackson <mitch@freeside.biz> | 2018-06-26 18:18:51 -0500 |
---|---|---|
committer | Mitch Jackson <mitch@freeside.biz> | 2018-10-23 16:42:25 -0400 |
commit | ead0cc76f66c0806321443657b49f829034e23ae (patch) | |
tree | 1204f8628caa821f40e769b56944fcdf4abe9850 /FS/FS/svc_IP_Mixin.pm | |
parent | 34106a87f830297c8ad676599ef170f5e4ec53ba (diff) |
RT# 30783 Clean up IP utility code
Diffstat (limited to 'FS/FS/svc_IP_Mixin.pm')
-rw-r--r-- | FS/FS/svc_IP_Mixin.pm | 33 |
1 files changed, 8 insertions, 25 deletions
diff --git a/FS/FS/svc_IP_Mixin.pm b/FS/FS/svc_IP_Mixin.pm index 502745a..499abb8 100644 --- a/FS/FS/svc_IP_Mixin.pm +++ b/FS/FS/svc_IP_Mixin.pm @@ -91,38 +91,21 @@ sub svc_ip_check { } sub _used_addresses { + my ($class, $block, $exclude_svc) = @_; - # Returns all addresses in use. Does not filter with $block. ref:f197bdbaa1 - - my ($class, $block, $exclude) = @_; - my $ip_field = $class->table_info->{'ip_field'} - or return (); - # if the service doesn't have an ip_field, then it has no IP addresses - # in use, yes? - - my %hash = ( $ip_field => { op => '!=', value => '' } ); - #$hash{'blocknum'} = $block->blocknum if $block; - $hash{'svcnum'} = { op => '!=', value => $exclude->svcnum } if ref $exclude; - map { my $na = $_->NetAddr; $na ? $na->addr : () } - qsearch({ - table => $class->table, - hashref => \%hash, - extra_sql => " AND $ip_field != '0e0'", - }); -} - -sub _used_addresses_in_block { - my ($class, $block) = @_; - - croak "_used_addresses_in_block() requires an FS::addr_block parameter" + croak "_used_addresses() requires an FS::addr_block parameter" unless ref $block && $block->isa('FS::addr_block'); my $ip_field = $class->table_info->{'ip_field'}; if ( !$ip_field ) { - carp "_used_addresses_in_block() skipped, no ip_field"; + carp "_used_addresses() skipped, no ip_field"; return; } + my %qsearch = ( $ip_field => { op => '!=', value => '' }); + $qsearch{svcnum} = { op => '!=', value => $exclude_svc->svcnum } + if ref $exclude_svc && $exclude_svc->svcnum; + my $block_na = $block->NetAddr; my $octets; @@ -152,7 +135,7 @@ sub _used_addresses_in_block { my %qsearch = ( table => $class->table, select => $ip_field, - hashref => { $ip_field => { op => '!=', value => '' }}, + hashref => \%qsearch, extra_sql => " AND $ip_field != '0e0' ", ); if ( $octets ) { |