From f562a7f7a032b381cdc8b897ec50ed220bcc9452 Mon Sep 17 00:00:00 2001
From: Mike Mackintosh <m@zyp.io>
Date: Sun, 22 Mar 2015 17:08:04 -0400
Subject: [PATCH] add multicast and loopback checks

---
 lib/ipaddress/ipv4.rb | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/lib/ipaddress/ipv4.rb b/lib/ipaddress/ipv4.rb
index 38afbb1..6437810 100644
--- a/lib/ipaddress/ipv4.rb
+++ b/lib/ipaddress/ipv4.rb
@@ -598,6 +598,34 @@ module IPAddress;
       [self.class.new("224.0.0.0/4")].any? {|i| i.include? self}
     end
 
+    #
+    # Checks if an IPv4 address objects belongs
+    # to a multicast network RFC3171
+    #
+    # Example:
+    #
+    #   ip = IPAddress "224.0.0.0/4"
+    #   ip.multicast?
+    #     #=> true
+    #    
+    def multicast?
+      [self.class.new("224.0.0.0/4")].any? {|i| i.include? self}
+    end
+
+    #
+    # Checks if an IPv4 address objects belongs
+    # to a loopback network RFC1122
+    #
+    # Example:
+    #
+    #   ip = IPAddress "127.0.0.1"
+    #   ip.loopback?
+    #     #=> true
+    #    
+    def loopback?
+      [self.class.new("127.0.0.0/8")].any? {|i| i.include? self}
+    end
+
     #
     # Returns the IP address in in-addr.arpa format
     # for DNS lookups
-- 
GitLab