shill: support of netlink RDNSS message.

Added support to subscribe/parse netlink RDNSS messages.

BUG=chromium:394010
TEST=unit tests, manual test
1. Update code to log the lifetime and DNS server IP addresses from RDNSS
   message.
2. Run network_Ipv6SimpleNegotiation on the DUT.
3. Verify the lifetime and DNS server IP addresses in net.log.

Change-Id: I64ab4de14eaf8fe2ca8b9715adb8dc07511b98ff
Reviewed-on: https://chromium-review.googlesource.com/209913
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Peter Qiu <zqiu@chromium.org>
Tested-by: Peter Qiu <zqiu@chromium.org>
diff --git a/ndisc.h b/ndisc.h
new file mode 100644
index 0000000..2d7c22a
--- /dev/null
+++ b/ndisc.h
@@ -0,0 +1,29 @@
+// Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SHILL_NDISC_H_
+#define SHILL_NDISC_H_
+
+// Neighbor discovery related definitions. This is needed because kernel
+// currently does not export these definitions to the user space.
+
+// Netlink multicast group for neighbor discovery user option message.
+#define RTMGRP_ND_USEROPT 0x80000
+
+// Neighbor Discovery user option header definition.
+struct NDUserOptionHeader {
+  NDUserOptionHeader() {
+    memset(this, 0, sizeof(*this));
+  }
+  uint8 type;
+  uint8 length;
+  uint16 reserved;
+  uint32 lifetime;
+} __attribute__((__packed__));
+
+// Neighbor Discovery user option type definition.
+#define ND_OPT_RDNSS 25       /* RFC 5006 */
+#define ND_OPT_DNSSL 31       /* RFC 6106 */
+
+#endif  // SHILL_NDISC_H_