Difference between revisions of "Freeside:3:Documentation:Developer/FS/addr range"

From Freeside
Jump to: navigation, search
(Edit via perl MediaWiki framework (1.13))
 
m (Edit via perl MediaWiki framework (1.13))
Line 1: Line 1:
==NAME==
 
FS::addr_range - Object methods for addr_range records
 
  
==SYNOPSIS==
 
<code>
 
  use FS::addr_range;
 
 
  $record = new FS::addr_range \%hash;
 
  $record = new FS::addr_range { 'column' => 'value' };
 
 
  $error = $record->insert;
 
 
  $error = $new_record->replace($old_record);
 
 
  $error = $record->delete;
 
 
  $error = $record->check;
 
</code>
 
==DESCRIPTION==
 
An FS::addr_range object represents a contiguous range of IP addresses assigned to a certain purpose. Unlike [[Freeside:3:Documentation:Developer/FS/addr block|FS::addr_block]], this isn't a routing block; the range doesn't have to be aligned on a subnet boundary, and doesn't have a gateway or broadcast address. It's just a range.
 
 
; rangenum - primary key; start - starting address of the range, as a dotted quad; length - number of addresses in the range, including start; status - what to do with the addresses in this range; currently can only be "unavailable", which makes the addresses unavailable for assignment to any kind of service.
 
==METHODS==
 
; new HASHREF
 
:Creates a new range. To add the example to the database, see [[#insert|"insert"]].
 
 
:Note that this stores the hash reference, not a distinct copy of the hash it points to. You can ask the object for a copy with the ''hash'' method.
 
; insert
 
:Adds this record to the database. If there is an error, returns the error, otherwise returns false.
 
; delete
 
:Delete this record from the database.
 
; replace OLD_RECORD
 
:Replaces the OLD_RECORD with this one in the database. If there is an error, returns the error, otherwise returns false.
 
; check
 
:Checks all fields to make sure this is a valid example. If there is an error, returns the error, otherwise returns false. Called by the insert and replace methods.
 
; end [ IPADDR ]
 
:Get/set the end IP address in the range. This isn't actually part of the record but it's convenient.
 
; contains IPADDR
 
:Checks whether IPADDR (a dotted-quad IPv4 address) is within the range.
 
; as_string
 
:Returns a readable string showing the address range.
 
; desc
 
:Returns a semi-friendly description of the block status.
 
; allow_use
 
:Returns true if addresses in this range can be used by services, etc.
 
 
==CLASS METHODS==
 
Returns all address ranges that contain IPADDR.
 
 
==DEVELOPER NOTE==
 
[[Freeside:3:Documentation:Developer/NetAddr/IP|NetAddr::IP]] objects have netmasks. They also have overloaded operators for addition and subtraction, but those have range limitations when comparing addresses. (An IPv4 address is effectively a uint32; the difference between two IPv4 addresses is the same range, but signed.) In later versions of the library the <tt>bigint</tt> method can be used as a workaround, but otherwise it's not safe to subtract two addresses that might differ in the first bit of the first octet.
 
 
==BUGS==
 
==SEE ALSO==
 
[[Freeside:3:Documentation:Developer/FS/svc IP Mixin|FS::svc_IP_Mixin]], [[Freeside:3:Documentation:Developer/FS/Record|FS::Record]], schema.html from the base documentation.
 
 
==POD ERRORS==
 
Hey! '''The above document had some coding errors, which are explained below:'''
 
 
; Around line 234&#58;
 
:Unknown directive: =sub
 

Revision as of 05:24, 10 February 2015