shill: add get wake-on-packet settings functionality

Add functionality to send nl80211 requests to the kernel for
the NIC's wake-on-packet settings and to parse response
messages from the kernel. Change add and remove wake-on-packet
function logic to make use of this new functionality to
asychronously verify the programming of the NIC.

BUG=chromium:399137
TEST='P2_TEST_FILTER="shill::*" FEATURES="test" emerge-squawks
platform2' succeeds; manual testing on squawks
CQ-DEPEND=CL:214100

Change-Id: I2133af7818f5655d62c371d928f0b62eca99e196
Reviewed-on: https://chromium-review.googlesource.com/214153
Tested-by: Samuel Tan <samueltan@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Samuel Tan <samueltan@chromium.org>
diff --git a/nl80211_message.h b/nl80211_message.h
index e5f952e..baf51c3 100644
--- a/nl80211_message.h
+++ b/nl80211_message.h
@@ -237,6 +237,17 @@
   DISALLOW_COPY_AND_ASSIGN(SetWakeOnPacketConnMessage);
 };
 
+class GetWakeOnPacketConnMessage : public Nl80211Message {
+ public:
+  static const uint8_t kCommand;
+  static const char kCommandString[];
+
+  GetWakeOnPacketConnMessage() : Nl80211Message(kCommand, kCommandString) {}
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(GetWakeOnPacketConnMessage);
+};
+
 class GetWiphyMessage : public Nl80211Message {
  public:
   static const uint8_t kCommand;