[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/meta/meta-mediatek-ivt/recipes-platform/platform-libs-header/files/netd.patch b/meta/meta-mediatek-ivt/recipes-platform/platform-libs-header/files/netd.patch
new file mode 100644
index 0000000..ab2e91c
--- /dev/null
+++ b/meta/meta-mediatek-ivt/recipes-platform/platform-libs-header/files/netd.patch
@@ -0,0 +1,746 @@
+diff --git a/system/netd/server/BandwidthController.cpp b/system/netd/server/BandwidthController.cpp
+index d71ce3b..0ab5418 100644
+--- a/system/netd/server/BandwidthController.cpp
++++ b/system/netd/server/BandwidthController.cpp
+@@ -43,7 +43,7 @@
+ 
+ #define LOG_TAG "BandwidthController"
+ #include <cutils/log.h>
+-#include <cutils/properties.h>
++//#include <cutils/properties.h>
+ #include <logwrap/logwrap.h>
+ 
+ #include "NetdConstants.h"
+@@ -253,10 +253,10 @@ int BandwidthController::setupIptablesHooks(void) {
+ 
+ int BandwidthController::enableBandwidthControl(bool force) {
+     int res;
+-    char value[PROPERTY_VALUE_MAX];
++    char value[20];
+ 
+     if (!force) {
+-            property_get("persist.bandwidth.enable", value, "1");
++            //property_get("persist.bandwidth.enable", value, "1");
+             if (!strcmp(value, "0"))
+                     return 0;
+     }
+diff --git a/system/netd/server/CommandListener.cpp b/system/netd/server/CommandListener.cpp
+index 7ecbffc..956dc0d 100644
+--- a/system/netd/server/CommandListener.cpp
++++ b/system/netd/server/CommandListener.cpp
+@@ -49,6 +49,8 @@
+ #include <string>
+ #include <vector>
+ 
++#define UID_MAX      0xffffffffU
++
+ namespace {
+ 
+ const unsigned NUM_OEM_IDS = NetworkController::MAX_OEM_ID - NetworkController::MIN_OEM_ID + 1;
+@@ -83,7 +85,7 @@ unsigned stringToNetId(const char* arg) {
+ 
+ NetworkController *CommandListener::sNetCtrl = NULL;
+ TetherController *CommandListener::sTetherCtrl = NULL;
+-NatController *CommandListener::sNatCtrl = NULL;
++//NatController *CommandListener::sNatCtrl = NULL;
+ PppController *CommandListener::sPppCtrl = NULL;
+ SoftapController *CommandListener::sSoftapCtrl = NULL;
+ BandwidthController * CommandListener::sBandwidthCtrl = NULL;
+@@ -91,7 +93,7 @@ IdletimerController * CommandListener::sIdletimerCtrl = NULL;
+ InterfaceController *CommandListener::sInterfaceCtrl = NULL;
+ ResolverController *CommandListener::sResolverCtrl = NULL;
+ FirewallController *CommandListener::sFirewallCtrl = NULL;
+-ClatdController *CommandListener::sClatdCtrl = NULL;
++//ClatdController *CommandListener::sClatdCtrl = NULL;
+ StrictController *CommandListener::sStrictCtrl = NULL;
+ 
+ /**
+@@ -110,7 +112,7 @@ static const char* FILTER_FORWARD[] = {
+         OEM_IPTABLES_FILTER_FORWARD,
+         FirewallController::LOCAL_FORWARD,
+         BandwidthController::LOCAL_FORWARD,
+-        NatController::LOCAL_FORWARD,
++        //NatController::LOCAL_FORWARD,
+         NULL,
+ };
+ 
+@@ -135,7 +137,7 @@ static const char* MANGLE_POSTROUTING[] = {
+ };
+ 
+ static const char* MANGLE_FORWARD[] = {
+-        NatController::LOCAL_MANGLE_FORWARD,
++        //NatController::LOCAL_MANGLE_FORWARD,
+         NULL,
+ };
+ 
+@@ -145,7 +147,7 @@ static const char* NAT_PREROUTING[] = {
+ };
+ 
+ static const char* NAT_POSTROUTING[] = {
+-        NatController::LOCAL_NAT_POSTROUTING,
++        //NatController::LOCAL_NAT_POSTROUTING,
+         NULL,
+ };
+ 
+@@ -174,7 +176,7 @@ CommandListener::CommandListener() :
+     registerCmd(new InterfaceCmd());
+     registerCmd(new IpFwdCmd());
+     registerCmd(new TetherCmd());
+-    registerCmd(new NatCmd());
++    //registerCmd(new NatCmd());
+     registerCmd(new ListTtysCmd());
+     registerCmd(new PppdCmd());
+     registerCmd(new SoftapCmd());
+@@ -182,7 +184,7 @@ CommandListener::CommandListener() :
+     registerCmd(new IdletimerControlCmd());
+     registerCmd(new ResolverCmd());
+     registerCmd(new FirewallCmd());
+-    registerCmd(new ClatdCmd());
++    //registerCmd(new ClatdCmd());
+     registerCmd(new NetworkCommand());
+     registerCmd(new StrictCmd());
+ 
+@@ -190,8 +192,8 @@ CommandListener::CommandListener() :
+         sNetCtrl = new NetworkController();
+     if (!sTetherCtrl)
+         sTetherCtrl = new TetherController();
+-    if (!sNatCtrl)
+-        sNatCtrl = new NatController();
++    /*if (!sNatCtrl)
++        sNatCtrl = new NatController();*/
+     if (!sPppCtrl)
+         sPppCtrl = new PppController();
+     if (!sSoftapCtrl)
+@@ -206,8 +208,10 @@ CommandListener::CommandListener() :
+         sFirewallCtrl = new FirewallController();
+     if (!sInterfaceCtrl)
+         sInterfaceCtrl = new InterfaceController();
++    #if 0 
+     if (!sClatdCtrl)
+         sClatdCtrl = new ClatdController(sNetCtrl);
++    #endif
+     if (!sStrictCtrl)
+         sStrictCtrl = new StrictController();
+ 
+@@ -232,13 +236,13 @@ CommandListener::CommandListener() :
+     createChildChains(V4, "nat", "POSTROUTING", NAT_POSTROUTING);
+ 
+     // Let each module setup their child chains
+-    setupOemIptablesHook();
++    //setupOemIptablesHook();
+ 
+     /* When enabled, DROPs all packets except those matching rules. */
+     sFirewallCtrl->setupIptablesHooks();
+ 
+     /* Does DROPs in FORWARD by default */
+-    sNatCtrl->setupIptablesHooks();
++    //sNatCtrl->setupIptablesHooks();
+     /*
+      * Does REJECT in INPUT, OUTPUT. Does counting also.
+      * No DROP/REJECT allowed later in netfilter-flow hook order.
+@@ -673,6 +677,7 @@ int CommandListener::TetherCmd::runCommand(SocketClient *cli,
+     return 0;
+ }
+ 
++#if 0
+ CommandListener::NatCmd::NatCmd() :
+                  NetdCommand("nat") {
+ }
+@@ -712,6 +717,7 @@ int CommandListener::NatCmd::runCommand(SocketClient *cli,
+ 
+     return 0;
+ }
++#endif
+ 
+ CommandListener::PppdCmd::PppdCmd() :
+                  NetdCommand("pppd") {
+@@ -831,7 +837,7 @@ int CommandListener::ResolverCmd::runCommand(SocketClient *cli, int argc, char *
+     if (!strcmp(argv[1], "setnetdns")) {
+         // "resolver setnetdns <netId> <domains> <dns1> <dns2> ..."
+         if (argc >= 5) {
+-            rc = sResolverCtrl->setDnsServers(netId, argv[3], &argv[4], argc - 4);
++            rc = sResolverCtrl->setDnsServers(netId, "", &argv[4], argc - 4);
+         } else {
+             cli->sendMsg(ResponseCode::CommandSyntaxError,
+                     "Wrong number of arguments to resolver setnetdns", false);
+@@ -1169,6 +1175,7 @@ int CommandListener::BandwidthControlCmd::runCommand(SocketClient *cli, int argc
+         return 0;
+ 
+     }
++    #if 0  
+     if (!strcmp(argv[1], "gettetherstats") || !strcmp(argv[1], "gts")) {
+         BandwidthController::TetherStats tetherStats;
+         std::string extraProcessingInfo = "";
+@@ -1192,7 +1199,7 @@ int CommandListener::BandwidthControlCmd::runCommand(SocketClient *cli, int argc
+         return 0;
+ 
+     }
+-
++    #endif
+     cli->sendMsg(ResponseCode::CommandSyntaxError, "Unknown bandwidth cmd", false);
+     return 0;
+ }
+@@ -1432,6 +1439,7 @@ int CommandListener::FirewallCmd::runCommand(SocketClient *cli, int argc,
+     return 0;
+ }
+ 
++#if 0
+ CommandListener::ClatdCmd::ClatdCmd() : NetdCommand("clatd") {
+ }
+ 
+@@ -1467,6 +1475,7 @@ int CommandListener::ClatdCmd::runCommand(SocketClient *cli, int argc,
+ 
+     return 0;
+ }
++#endif
+ 
+ CommandListener::StrictCmd::StrictCmd() :
+     NetdCommand("strict") {
+@@ -1601,7 +1610,9 @@ int CommandListener::NetworkCommand::runCommand(SocketClient* client, int argc,
+ 
+         int ret;
+         if (add) {
++            ALOGI("[zy]before addRoute");
+             ret = sNetCtrl->addRoute(netId, interface, destination, nexthop, legacy, uid);
++            ALOGI("[zy]after addRoute");
+         } else {
+             ret = sNetCtrl->removeRoute(netId, interface, destination, nexthop, legacy, uid);
+         }
+diff --git a/system/netd/server/CommandListener.h b/system/netd/server/CommandListener.h
+index 72f4da1..e8a88d7 100644
+--- a/system/netd/server/CommandListener.h
++++ b/system/netd/server/CommandListener.h
+@@ -22,7 +22,7 @@
+ #include "NetdCommand.h"
+ #include "NetworkController.h"
+ #include "TetherController.h"
+-#include "NatController.h"
++//#include "NatController.h"
+ #include "PppController.h"
+ #include "SoftapController.h"
+ #include "BandwidthController.h"
+@@ -35,7 +35,7 @@
+ 
+ class CommandListener : public FrameworkListener {
+     static TetherController *sTetherCtrl;
+-    static NatController *sNatCtrl;
++    //static NatController *sNatCtrl;
+     static PppController *sPppCtrl;
+     static SoftapController *sSoftapCtrl;
+     static BandwidthController *sBandwidthCtrl;
+diff --git a/system/netd/server/DnsProxyListener.cpp b/system/netd/server/DnsProxyListener.cpp
+index 6c71c5b..1aa3676 100644
+--- a/system/netd/server/DnsProxyListener.cpp
++++ b/system/netd/server/DnsProxyListener.cpp
+@@ -26,7 +26,7 @@
+ #include <string.h>
+ #include <pthread.h>
+ #include <resolv_netid.h>
+-#include <net/if.h>
++//#include <net/if.h>
+ 
+ #define LOG_TAG "DnsProxyListener"
+ #define DBG 0
+@@ -155,12 +155,12 @@ static bool sendaddrinfo(SocketClient* c, struct addrinfo* ai) {
+ }
+ 
+ void DnsProxyListener::GetAddrInfoHandler::run() {
+-    if (DBG) {
+-        ALOGD("GetAddrInfoHandler, now for %s / %s / {%u,%u,%u,%u,%u}", mHost, mService,
++    
++        ALOGI("[libdns]GetAddrInfoHandler, now for %s / %s / {%u,%u,%u,%u,%u}", mHost, mService,
+                 mNetContext.app_netid, mNetContext.app_mark,
+                 mNetContext.dns_netid, mNetContext.dns_mark,
+                 mNetContext.uid);
+-    }
++    
+ 
+     struct addrinfo* result = NULL;
+     uint32_t rv = android_getaddrinfofornetcontext(mHost, mService, mHints, &mNetContext, &result);
+@@ -176,11 +176,11 @@ void DnsProxyListener::GetAddrInfoHandler::run() {
+         }
+         success = success && sendBE32(mClient, 0);
+         if (!success) {
+-            ALOGW("Error writing DNS result to client");
++            ALOGI("[libdns]Error writing DNS result to client");
+         }
+     }
+     if (result) {
+-        freeaddrinfo(result);
++		android_freeaddrinfo(result);
+     }
+     mClient->decRef();
+ }
+diff --git a/system/netd/server/FwmarkServer.cpp b/system/netd/server/FwmarkServer.cpp
+index 530e96a..9d533e6 100644
+--- a/system/netd/server/FwmarkServer.cpp
++++ b/system/netd/server/FwmarkServer.cpp
+@@ -23,6 +23,7 @@
+ 
+ #include <sys/socket.h>
+ #include <unistd.h>
++#include <string.h>
+ 
+ FwmarkServer::FwmarkServer(NetworkController* networkController) :
+         SocketListener("fwmarkd", true), mNetworkController(networkController) {
+diff --git a/system/netd/server/IdletimerController.cpp b/system/netd/server/IdletimerController.cpp
+index e6306fd..c222018 100644
+--- a/system/netd/server/IdletimerController.cpp
++++ b/system/netd/server/IdletimerController.cpp
+@@ -104,7 +104,7 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <string.h>
+-#include <cutils/properties.h>
++//#include <cutils/properties.h>
+ 
+ #define LOG_TAG "IdletimerController"
+ #include <cutils/log.h>
+diff --git a/system/netd/server/InterfaceController.cpp b/system/netd/server/InterfaceController.cpp
+index 3882bcc..e1125fe 100644
+--- a/system/netd/server/InterfaceController.cpp
++++ b/system/netd/server/InterfaceController.cpp
+@@ -17,10 +17,11 @@
+ #include <dirent.h>
+ #include <errno.h>
+ #include <malloc.h>
++#include <string.h>
+ 
+ #define LOG_TAG "InterfaceController"
+-#include <base/file.h>
+-#include <base/stringprintf.h>
++#include <android-base/file.h>
++#include <android-base/stringprintf.h>
+ #include <cutils/log.h>
+ #include <logwrap/logwrap.h>
+ 
+diff --git a/system/netd/server/NatController.cpp b/system/netd/server/NatController.cpp
+index 19d19c7..f455b6f 100644
+--- a/system/netd/server/NatController.cpp
++++ b/system/netd/server/NatController.cpp
+@@ -25,7 +25,7 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <string.h>
+-#include <cutils/properties.h>
++//#include <cutils/properties.h>
+ 
+ #define LOG_TAG "NatController"
+ #include <cutils/log.h>
+diff --git a/system/netd/server/NatController.h b/system/netd/server/NatController.h
+index f23bf84..6bd4f64 100644
+--- a/system/netd/server/NatController.h
++++ b/system/netd/server/NatController.h
+@@ -17,7 +17,7 @@
+ #ifndef _NAT_CONTROLLER_H
+ #define _NAT_CONTROLLER_H
+ 
+-#include <linux/in.h>
++//#include <linux/in.h>
+ #include <list>
+ #include <string>
+ 
+diff --git a/system/netd/server/NetdConstants.cpp b/system/netd/server/NetdConstants.cpp
+index c86538b..54f1344 100644
+--- a/system/netd/server/NetdConstants.cpp
++++ b/system/netd/server/NetdConstants.cpp
+@@ -19,7 +19,6 @@
+ #include <fcntl.h>
+ #include <netdb.h>
+ #include <net/if.h>
+-#include <netinet/in.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/wait.h>
+@@ -32,10 +31,10 @@
+ #include "NetdConstants.h"
+ 
+ const char * const OEM_SCRIPT_PATH = "/system/bin/oem-iptables-init.sh";
+-const char * const IPTABLES_PATH = "/system/bin/iptables";
+-const char * const IP6TABLES_PATH = "/system/bin/ip6tables";
+-const char * const TC_PATH = "/system/bin/tc";
+-const char * const IP_PATH = "/system/bin/ip";
++const char * const IPTABLES_PATH = "/usr/sbin/iptables";
++const char * const IP6TABLES_PATH = "/usr/sbin/ip6tables";
++const char * const TC_PATH = "/sbin/tc";
++const char * const IP_PATH = "/sbin/ip";
+ const char * const ADD = "add";
+ const char * const DEL = "del";
+ 
+@@ -172,6 +171,7 @@ int parsePrefix(const char *prefix, uint8_t *family, void *address, int size, ui
+     addrinfo hints = {
+         .ai_flags = AI_NUMERICHOST,
+     };
++    ALOGI("[zy]addressString.c_str(%s)", addressString.c_str());
+     int ret = getaddrinfo(addressString.c_str(), NULL, &hints, &res);
+     if (ret || !res) {
+         return -EINVAL;  // getaddrinfo return values are not errno values.
+@@ -211,7 +211,9 @@ int parsePrefix(const char *prefix, uint8_t *family, void *address, int size, ui
+     }
+ 
+     *family = res[0].ai_family;
++    ALOGI("[zy]parsePrefix  address[%p], rawAddress[%p], rawLength[%d]", address, rawAddress, rawLength);
+     memcpy(address, rawAddress, rawLength);
++    ALOGI("[zy]after");
+     freeaddrinfo(res);
+ 
+     return rawLength;
+diff --git a/system/netd/server/NetlinkManager.cpp b/system/netd/server/NetlinkManager.cpp
+index 76af46f..853bf47 100644
+--- a/system/netd/server/NetlinkManager.cpp
++++ b/system/netd/server/NetlinkManager.cpp
+@@ -44,7 +44,7 @@
+ #include "NetlinkManager.h"
+ #include "NetlinkHandler.h"
+ 
+-#include "pcap-netfilter-linux-android.h"
++//#include "pcap-netfilter-linux-android.h"
+ 
+ const int NetlinkManager::NFLOG_QUOTA_GROUP = 1;
+ const int NetlinkManager::NETFILTER_STRICT_GROUP = 2;
+@@ -98,7 +98,7 @@ NetlinkHandler *NetlinkManager::setupSocket(int *sock, int netlinkFamily,
+         close(*sock);
+         return NULL;
+     }
+-
++    #if 0
+     if (configNflog) {
+         if (android_nflog_send_config_cmd(*sock, 0, NFULNL_CFG_CMD_PF_UNBIND, AF_INET) < 0) {
+             ALOGE("Failed NFULNL_CFG_CMD_PF_UNBIND: %s", strerror(errno));
+@@ -113,7 +113,7 @@ NetlinkHandler *NetlinkManager::setupSocket(int *sock, int netlinkFamily,
+             return NULL;
+         }
+     }
+-
++    #endif
+     NetlinkHandler *handler = new NetlinkHandler(this, *sock, format);
+     if (handler->start()) {
+         ALOGE("Unable to start NetlinkHandler: %s", strerror(errno));
+diff --git a/system/netd/server/PppController.cpp b/system/netd/server/PppController.cpp
+index 581b9c6..4b9f79c 100644
+--- a/system/netd/server/PppController.cpp
++++ b/system/netd/server/PppController.cpp
+@@ -26,7 +26,6 @@
+ 
+ #include <dirent.h>
+ 
+-#include <netinet/in.h>
+ #include <arpa/inet.h>
+ 
+ #define LOG_TAG "PppController"
+diff --git a/system/netd/server/PppController.h b/system/netd/server/PppController.h
+index cc74c8c..3f45262 100644
+--- a/system/netd/server/PppController.h
++++ b/system/netd/server/PppController.h
+@@ -17,7 +17,6 @@
+ #ifndef _PPP_CONTROLLER_H
+ #define _PPP_CONTROLLER_H
+ 
+-#include <linux/in.h>
+ 
+ #include "List.h"
+ 
+diff --git a/system/netd/server/ResolverController.h b/system/netd/server/ResolverController.h
+index 39f002d..049bae1 100644
+--- a/system/netd/server/ResolverController.h
++++ b/system/netd/server/ResolverController.h
+@@ -18,7 +18,7 @@
+ #define _RESOLVER_CONTROLLER_H_
+ 
+ #include <netinet/in.h>
+-#include <linux/in.h>
++//#include <linux/in.h>
+ 
+ class ResolverController {
+ public:
+diff --git a/system/netd/server/RouteController.cpp b/system/netd/server/RouteController.cpp
+index 889779d..1d9f1e4 100644
+--- a/system/netd/server/RouteController.cpp
++++ b/system/netd/server/RouteController.cpp
+@@ -21,7 +21,8 @@
+ #include <fcntl.h>
+ #include <linux/fib_rules.h>
+ #include <net/if.h>
+-#include <sys/stat.h>
++#include <sys/stat.h> 
++#include <string.h>
+ 
+ #include <private/android_filesystem_config.h>
+ 
+@@ -31,7 +32,7 @@
+ #include "UidRanges.h"
+ #include "DummyNetwork.h"
+ 
+-#include "base/file.h"
++#include "android-base/file.h"
+ #define LOG_TAG "Netd"
+ #include "log/log.h"
+ #include "logwrap/logwrap.h"
+@@ -99,7 +100,7 @@ const bool ACTION_ADD = true;
+ const bool ACTION_DEL = false;
+ const bool MODIFY_NON_UID_BASED_RULES = true;
+ 
+-const char* const RT_TABLES_PATH = "/data/misc/net/rt_tables";
++const char* const RT_TABLES_PATH = "/etc/iproute2/rt_tables";
+ const mode_t RT_TABLES_MODE = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;  // mode 0644, rw-r--r--
+ 
+ const unsigned ROUTE_FLUSH_ATTEMPTS = 2;
+@@ -181,10 +182,17 @@ void updateTableNamesFile() {
+ // The netlink header is generated by this function based on |action| and |flags|.
+ // Returns -errno if there was an error or if the kernel reported an error.
+ WARN_UNUSED_RESULT int sendNetlinkRequest(uint16_t action, uint16_t flags, iovec* iov, int iovlen) {
++    #if 0 
+     nlmsghdr nlmsg = {
+-        .nlmsg_type = action,
+-        .nlmsg_flags = flags,
++        nlmsg_type : action,
++        nlmsg_flags : flags,
+     };
++    #else   
++    nlmsghdr nlmsg = {};
++    nlmsg.nlmsg_type = action;
++    nlmsg.nlmsg_flags = flags;
++    #endif
++
+     iov[0].iov_base = &nlmsg;
+     iov[0].iov_len = sizeof(nlmsg);
+     for (int i = 0; i < iovlen; ++i) {
+@@ -231,11 +239,12 @@ int padInterfaceName(const char* input, char* name, size_t* length, uint16_t* pa
+         *padding = 0;
+         return 0;
+     }
+-    *length = strlcpy(name, input, IFNAMSIZ) + 1;
++    strncpy(name, input, IFNAMSIZ) + 1;
++    /* *length = strlcpy(name, input, IFNAMSIZ) + 1;
+     if (*length > IFNAMSIZ) {
+         ALOGE("interface name too long (%zu > %u)", *length, IFNAMSIZ);
+         return -ENAMETOOLONG;
+-    }
++    }*/
+     *padding = RTA_SPACE(*length) - RTA_LENGTH(*length);
+     return 0;
+ }
+@@ -283,13 +292,17 @@ WARN_UNUSED_RESULT int modifyIpRule(uint16_t action, uint32_t priority, uint32_t
+     bool isUidRule = (uidStart != INVALID_UID);
+ 
+     // Assemble a rule request and put it in an array of iovec structures.
++    #if 0
+     fib_rule_hdr rule = {
+         .action = static_cast<uint8_t>(priority != RULE_PRIORITY_UNREACHABLE ? FR_ACT_TO_TBL :
+                                                                                FR_ACT_UNREACHABLE),
+         // Note that here we're implicitly setting rule.table to 0. When we want to specify a
+         // non-zero table, we do this via the FRATTR_TABLE attribute.
+     };
+-
++    #else
++    fib_rule_hdr rule = {};
++    rule.action = static_cast<uint8_t>(priority != RULE_PRIORITY_UNREACHABLE ? FR_ACT_TO_TBL : FR_ACT_UNREACHABLE);
++    #endif
+     // Don't ever create a rule that looks up table 0, because table 0 is the local table.
+     // It's OK to specify a table ID of 0 when deleting a rule, because that doesn't actually select
+     // table 0, it's a wildcard that matches anything.
+@@ -355,8 +368,10 @@ WARN_UNUSED_RESULT int modifyIpRoute(uint16_t action, uint32_t table, const char
+     uint8_t rawAddress[sizeof(in6_addr)];
+     uint8_t family;
+     uint8_t prefixLength;
++    ALOGI("[zy]modifyIpRoute before parsePrefix");
+     int rawLength = parsePrefix(destination, &family, rawAddress, sizeof(rawAddress),
+                                 &prefixLength);
++    ALOGI("[zy]modifyIpRoute after parsePrefix");
+     if (rawLength < 0) {
+         ALOGE("parsePrefix failed for destination %s (%s)", destination, strerror(-rawLength));
+         return rawLength;
+@@ -400,6 +415,7 @@ WARN_UNUSED_RESULT int modifyIpRoute(uint16_t action, uint32_t table, const char
+     }
+ 
+     // Assemble a rtmsg and put it in an array of iovec structures.
++    #if 0
+     rtmsg route = {
+         .rtm_protocol = RTPROT_STATIC,
+         .rtm_type = type,
+@@ -407,7 +423,16 @@ WARN_UNUSED_RESULT int modifyIpRoute(uint16_t action, uint32_t table, const char
+         .rtm_dst_len = prefixLength,
+         .rtm_scope = static_cast<uint8_t>(nexthop ? RT_SCOPE_UNIVERSE : RT_SCOPE_LINK),
+     };
+-
++    #else
++    rtmsg route = {};
++    route.rtm_protocol = RTPROT_STATIC;
++    route.rtm_type = type;
++    route.rtm_family = family;
++    route.rtm_dst_len = prefixLength;
++    route.rtm_scope = static_cast<uint8_t>(nexthop ? RT_SCOPE_UNIVERSE : RT_SCOPE_LINK);
++
++    #endif 
++   
+     rtattr rtaDst     = { U16_RTA_LENGTH(rawLength), RTA_DST };
+     rtattr rtaGateway = { U16_RTA_LENGTH(rawLength), RTA_GATEWAY };
+ 
+@@ -740,17 +765,22 @@ WARN_UNUSED_RESULT int modifyPhysicalNetwork(unsigned netId, const char* interfa
+         return -ESRCH;
+     }
+ 
++    ALOGE("PhysicalNetwork");
+     if (int ret = modifyIncomingPacketMark(netId, interface, permission, add)) {
++        ALOGE("modifyIncomingPacketMark ret[%d]", ret);
+         return ret;
+     }
+     if (int ret = modifyExplicitNetworkRule(netId, table, permission, INVALID_UID, INVALID_UID,
+                                             add)) {
++        ALOGE("modifyExplicitNetworkRule ret[%d]", ret);
+         return ret;
+     }
++    #if 0
+     if (int ret = modifyOutputInterfaceRules(interface, table, permission, INVALID_UID, INVALID_UID,
+                                             add)) {
+         return ret;
+     }
++    #endif
+     return modifyImplicitNetworkRule(netId, table, permission, add);
+ }
+ 
+@@ -867,7 +897,7 @@ WARN_UNUSED_RESULT int modifyRoute(uint16_t action, const char* interface, const
+             break;
+         }
+     }
+-
++    ALOGI("[zy]modifyRoute");
+     int ret = modifyIpRoute(action, table, interface, destination, nexthop);
+     // Trying to add a route that already exists shouldn't cause an error.
+     if (ret && !(action == RTM_NEWROUTE && ret == -EEXIST)) {
+@@ -986,14 +1016,20 @@ int RouteController::addInterfaceToPhysicalNetwork(unsigned netId, const char* i
+ int RouteController::removeInterfaceFromPhysicalNetwork(unsigned netId, const char* interface,
+                                                         Permission permission) {
+     if (int ret = modifyPhysicalNetwork(netId, interface, permission, ACTION_DEL)) {
++		ALOGE("modifyPhysicalNetwork ret[%d]", ret);
+         return ret;
+     }
+     if (int ret = flushRoutes(interface)) {
++		ALOGE("flushRoutes ret[%d]", ret);
+         return ret;
+     }
++
++	#if 0
+     if (int ret = clearTetheringRules(interface)) {
++		ALOGE("clearTetheringRules ret[%d]", ret);
+         return ret;
+     }
++	#endif
+     updateTableNamesFile();
+     return 0;
+ }
+diff --git a/system/netd/server/SoftapController.cpp b/system/netd/server/SoftapController.cpp
+index d9e40a4..cc9c63e 100644
+--- a/system/netd/server/SoftapController.cpp
++++ b/system/netd/server/SoftapController.cpp
+@@ -34,8 +34,8 @@
+ #include <openssl/sha.h>
+ 
+ #define LOG_TAG "SoftapController"
+-#include <base/file.h>
+-#include <base/stringprintf.h>
++#include <android-base/file.h>
++#include <android-base/stringprintf.h>
+ #include <cutils/log.h>
+ #include <netutils/ifc.h>
+ #include <private/android_filesystem_config.h>
+diff --git a/system/netd/server/SoftapController.h b/system/netd/server/SoftapController.h
+index 7063067..bad1a32 100644
+--- a/system/netd/server/SoftapController.h
++++ b/system/netd/server/SoftapController.h
+@@ -17,8 +17,8 @@
+ #ifndef _SOFTAP_CONTROLLER_H
+ #define _SOFTAP_CONTROLLER_H
+ 
+-#include <linux/in.h>
+-#include <net/if.h>
++//#include <linux/in.h>
++//#include <net/if.h>
+ 
+ #define SOFTAP_MAX_BUFFER_SIZE	4096
+ #define AP_BSS_START_DELAY	200000
+diff --git a/system/netd/server/TetherController.cpp b/system/netd/server/TetherController.cpp
+index 88baa31..d32ea0e 100644
+--- a/system/netd/server/TetherController.cpp
++++ b/system/netd/server/TetherController.cpp
+@@ -29,7 +29,7 @@
+ 
+ #define LOG_TAG "TetherController"
+ #include <cutils/log.h>
+-#include <cutils/properties.h>
++//#include <cutils/properties.h>
+ 
+ #include "Fwmark.h"
+ #include "NetdConstants.h"
+@@ -61,9 +61,13 @@ bool writeToFile(const char* filename, const char* value) {
+ 
+ bool inBpToolsMode() {
+     // In BP tools mode, do not disable IP forwarding
++    #if 0
+     char bootmode[PROPERTY_VALUE_MAX] = {0};
+     property_get("ro.bootmode", bootmode, "unknown");
+     return !strcmp(BP_TOOLS_MODE, bootmode);
++    #else
++    return false;
++    #endif
+ }
+ 
+ }  // namespace
+diff --git a/system/netd/server/UidRanges.cpp b/system/netd/server/UidRanges.cpp
+index 10e445a..cd9ac1a 100644
+--- a/system/netd/server/UidRanges.cpp
++++ b/system/netd/server/UidRanges.cpp
+@@ -19,6 +19,7 @@
+ #include "NetdConstants.h"
+ 
+ #include <stdlib.h>
++#include <algorithm>
+ 
+ bool UidRanges::hasUid(uid_t uid) const {
+     auto iter = std::lower_bound(mRanges.begin(), mRanges.end(), Range(uid, uid));
+diff --git a/system/netd/server/main.cpp b/system/netd/server/main.cpp
+index 5e189cc..3feb10d 100644
+--- a/system/netd/server/main.cpp
++++ b/system/netd/server/main.cpp
+@@ -33,7 +33,6 @@
+ #include "CommandListener.h"
+ #include "NetlinkManager.h"
+ #include "DnsProxyListener.h"
+-#include "MDnsSdListener.h"
+ #include "FwmarkServer.h"
+ 
+ static void blockSigpipe();
+@@ -49,7 +48,7 @@ int main() {
+     CommandListener *cl;
+     NetlinkManager *nm;
+     DnsProxyListener *dpl;
+-    MDnsSdListener *mdnsl;
++    //MDnsSdListener *mdnsl;
+     FwmarkServer* fwmarkServer;
+ 
+     ALOGI("Netd 1.0 starting");
+@@ -78,19 +77,19 @@ int main() {
+         ALOGE("Unable to start DnsProxyListener (%s)", strerror(errno));
+         exit(1);
+     }
+-
+-    mdnsl = new MDnsSdListener();
+-    if (mdnsl->startListener()) {
++    //mdnsl = new MDnsSdListener();
++    /*if (mdnsl->startListener()) {
+         ALOGE("Unable to start MDnsSdListener (%s)", strerror(errno));
+         exit(1);
+-    }
++    }*/
+ 
++    #if 0
+     fwmarkServer = new FwmarkServer(CommandListener::sNetCtrl);
+     if (fwmarkServer->startListener()) {
+         ALOGE("Unable to start FwmarkServer (%s)", strerror(errno));
+         exit(1);
+     }
+-
++    #endif
+     /*
+      * Now that we're up, we can respond to commands
+      */