Method: Jamf::NetworkSegment.network_ranges
- Defined in:
- lib/jamf/api/classic/api_objects/network_segment.rb
.network_ranges(refresh = false, api: nil, cnx: Jamf.cnx) ⇒ Hash{Integer => Range}
All NetworkSegments in the given API as ruby Ranges of IPAddr instances representing the Segment, e.g. with starting = 10.24.9.1 and ending = 10.24.15.254 the range looks like:
<IPAddr: IPv4:10.24.9.1/255.255.255.255>
..
<IPAddr: IPv4:10.24.15.254/255.255.255.255>
Using the #include? method on those Ranges is very useful.
Note1: We don’t use the IPAddr#to_range method because that works
best for masked IPAddrs (which are ranges of IPs with widths
determined by the mask) and Jamf Network Segments can have arbitrary
widths.
Note2: See the network_ranges_as_integers method below, which is similar
but much faster.
95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/jamf/api/classic/api_objects/network_segment.rb', line 95 def self.network_ranges(refresh = false, api: nil, cnx: Jamf.cnx) cnx = api if api @network_ranges = nil if refresh return @network_ranges if @network_ranges @network_ranges = {} all(refresh, cnx: cnx).each do |ns| @network_ranges[ns[:id]] = IPAddr.new(ns[:starting_address])..IPAddr.new(ns[:ending_address]) end @network_ranges end |