arc: network: ndproxy: supports ULA

Supports unique local address in addition to global unicast address.

BUG=chromium:1059435
TEST=built and deployed to atlas

Change-Id: I37c2fd4f45b16d48e97096e69da9b564e2e2ed81
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2123704
Tested-by: Taoyu Li <taoyl@chromium.org>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
Commit-Queue: Taoyu Li <taoyl@chromium.org>
(cherry picked from commit 76d86582c58b4ed0254490c6a506b9c932d1527f)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2149728
diff --git a/arc/network/ndproxy.cc b/arc/network/ndproxy.cc
index dc3fb05..8e68aa3 100644
--- a/arc/network/ndproxy.cc
+++ b/arc/network/ndproxy.cc
@@ -294,7 +294,8 @@
       IsGuestInterface(dst_addr.sll_ifindex) &&
       !guest_discovery_handler_.is_null()) {
     nd_neighbor_advert* na = reinterpret_cast<nd_neighbor_advert*>(icmp6);
-    if ((na->nd_na_target.s6_addr[0] & 0xe0) == 0x20) {  // Global Unicast
+    if (((na->nd_na_target.s6_addr[0] & 0xe0) == 0x20)        // Global Unicast
+        || ((na->nd_na_target.s6_addr[0] & 0xfe) == 0xfc)) {  // Unique Local
       char ifname[IFNAMSIZ];
       if_indextoname(dst_addr.sll_ifindex, ifname);
       char ipv6_addr_str[INET6_ADDRSTRLEN];