22 lines
499 B
Ruby
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
|