nstack/net_utils.rb
2021-05-16 11:05:27 -05:00

22 lines
499 B
Ruby

# frozen_string_literal: true
# require_relative 'ethernet_frame'
# require_relative 'ipv4_packet'
require 'packetfu'
# Various network related utility functions
module NetUtils
def self.cidr_to_mask(prefix)
PacketFu::Octets.new(ip_addr: (1 << 32) - (1 << (32 - prefix)))
end
def self.mask_ip(ip, prefix)
mask = cidr_to_mask(prefix).to_i
PacketFu::Octets.new(ip_addr: (mask & ip_to_num(ip)))
end
def self.ip_to_num(ip)
PacketFu::Octets.new.read_quad(ip).to_i
end
end