apmanager: DHCP server support

Start a DHCP server for an AP service when it is configured in server
mode. The server address is configure as "192.168.x.254" where
x is the least significant byte of the service identifier. The DHCP
range is from 192.168.x.1 to 192.168.x.128.

BUG=chromium:438836
TEST=unittests and manual test
Manual test:
Start an AP service using apmanager and verify a DUT can connect
to it with an IP address
CQ-DEPEND=CL:233032,CL:233493

Change-Id: I16a0d03c8eac7f02722c8c8f5185ca75a1edebcb
Reviewed-on: https://chromium-review.googlesource.com/233047
Reviewed-by: Peter Qiu <zqiu@chromium.org>
Commit-Queue: Peter Qiu <zqiu@chromium.org>
Tested-by: Peter Qiu <zqiu@chromium.org>
diff --git a/apmanager.gyp b/apmanager.gyp
index 4fc8dfb..ca87d8e 100644
--- a/apmanager.gyp
+++ b/apmanager.gyp
@@ -53,6 +53,8 @@
         'daemon.cc',
         'device.cc',
         'device_info.cc',
+        'dhcp_server.cc',
+        'dhcp_server_factory.cc',
         'manager.cc',
         'service.cc',
         'shill_proxy.cc',
@@ -71,7 +73,7 @@
       ],
     },
     {
-      'target_name': 'apmanagerd',
+      'target_name': 'apmanager',
       'type': 'executable',
       'dependencies': ['libapmanager'],
       'link_settings': {
@@ -101,9 +103,12 @@
             'config_unittest.cc',
             'device_info_unittest.cc',
             'device_unittest.cc',
+            'dhcp_server_unittest.cc',
             'manager_unittest.cc',
             'mock_config.cc',
             'mock_device.cc',
+            'mock_dhcp_server.cc',
+            'mock_dhcp_server_factory.cc',
             'mock_manager.cc',
             'mock_service.cc',
             'service_unittest.cc',