From 2edbae88448d0a6b0ea24a7fe6b39a62073af234 Mon Sep 17 00:00:00 2001
From: Alan Somers <asomers@gmail.com>
Date: Mon, 28 Aug 2017 16:41:04 -0600
Subject: [PATCH] Add IPv6#link_local?

---
 lib/ipaddress/ipv6.rb       | 7 +++++++
 test/ipaddress/ipv6_test.rb | 6 ++++++
 2 files changed, 13 insertions(+)

diff --git a/lib/ipaddress/ipv6.rb b/lib/ipaddress/ipv6.rb
index 88098bc..6ae651d 100644
--- a/lib/ipaddress/ipv6.rb
+++ b/lib/ipaddress/ipv6.rb
@@ -397,6 +397,13 @@ module IPAddress;
       @compressed
     end
 
+    #
+    # Returns true if the address is a link local address
+    #
+    def link_local?
+      @groups[0] == 0xfe80
+    end
+
     # 
     # Returns true if the address is an unspecified address
     # 
diff --git a/test/ipaddress/ipv6_test.rb b/test/ipaddress/ipv6_test.rb
index dcfb601..7eaa765 100644
--- a/test/ipaddress/ipv6_test.rb
+++ b/test/ipaddress/ipv6_test.rb
@@ -200,6 +200,12 @@ class IPv6Test < Minitest::Test
     assert_equal "1::1", @klass.new("1:0:0:0:0:0:0:1").compressed
   end
   
+  def test_method_link_local?
+    assert_equal true, @klass.new("fe80::1").link_local?
+    assert_equal true, @klass.new("fe80:ffff::1").link_local?
+    assert_equal false, @klass.new("fe81::1").link_local?
+  end
+
   def test_method_unspecified?
     assert_equal true, @klass.new("::").unspecified?
     assert_equal false, @ip.unspecified?    
-- 
GitLab