# File lib/chef/provider/route.rb, line 63
    def load_current_resource
      is_running = nil

      # cidr or quad dot mask
      if @new_resource.netmask
        new_ip = IPAddr.new("#{@new_resource.target}/#{@new_resource.netmask}")
      else
        new_ip = IPAddr.new(@new_resource.target)
      end

      # pull routes from proc
      if node[:os] == "linux"
        route_file = ::File.open("/proc/net/route", "r")
        while (line = route_file.gets)
          # proc layout
          iface,destination,gateway,flags,refcnt,use,metric,mask,mtu,window,irtt = line.split

          # need to convert packed adresses int quad dot
          #  the addrs are reversed hex packed decimal addrs. so this unwraps them. tho you could
          #  do this without ipaddr using unpack. ipaddr has no htoa method.
          #
          destination = IPAddr.new(destination.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
          gateway = IPAddr.new(gateway.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
          mask = IPAddr.new(mask.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
          Chef::Log.debug("#{@new_resource} system has route: dest=#{destination} mask=#{mask} gw=#{gateway}")

          # check if what were trying to configure is already there
          # use an ipaddr object with ip/mask this way we can have
          # a new resource be in cidr format (i don't feel like
          # expanding bitmask by hand.
          #
          running_ip = IPAddr.new("#{destination}/#{mask}")
          Chef::Log.debug("#{@new_resource} new ip: #{new_ip.inspect} running ip: #{running_ip.inspect}")
          is_running = true if running_ip == new_ip
        end
      route_file.close
      end
    end