Created
October 12, 2012 23:58
-
-
Save mejibyte/3882412 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Midterm | |
class << self | |
def ip_to_int(some_ip) | |
parts = some_ip.split(".").map(&:to_i) | |
(parts[0] << 24) + (parts[1] << 16) + (parts[2] << 8) + parts[3] | |
end | |
def int_to_ip(some_int) | |
parts = Array.new(4) | |
parts[0] = (some_int & (0xff << 24)) >> 24 | |
parts[1] = (some_int & (0xff << 16)) >> 16 | |
parts[2] = (some_int & (0xff << 8)) >> 8 | |
parts[3] = (some_int & (0xff << 0)) >> 0 | |
parts.map(&:to_s).join(".") | |
end | |
def mask(size) | |
("1" * size).ljust(32, "0").to_i(2) | |
end | |
end | |
end | |
module NumberHelpers | |
def to_ip | |
Midterm::int_to_ip(self) | |
end | |
def to_mask | |
Midterm::mask(self) | |
end | |
end | |
class Fixnum | |
include NumberHelpers | |
end | |
class Bignum | |
include NumberHelpers | |
end | |
class String | |
def to_integer | |
Midterm::ip_to_int(self) | |
end | |
end | |
def net(ip, mask) | |
(ip & mask).to_ip | |
end | |
def broadcast(ip, mask) | |
(ip | ~mask).to_ip | |
end |
Dir Red = IP & Mascara por default
Dir Subred = IP & Mask dada
Broadcast Red = OR con mascara default pero negada
Broadcast Subred = OR con máscara dado pero negada
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Usage: