summaryrefslogtreecommitdiffstats
path: root/src/qconnectivity
diff options
context:
space:
mode:
authorKalle Viironen <kalle.viironen@digia.com>2014-05-26 13:53:13 +0300
committerKalle Viironen <kalle.viironen@digia.com>2014-05-26 13:53:20 +0300
commit5cdc15a7b82b7adfd4c5cae85ffb4327593dd076 (patch)
tree342fa9523f5400f4ecbcf6fde169021fabaff500 /src/qconnectivity
parent9627172876cd2a387d44b5a9a6ce0a3867ebc730 (diff)
parent5c160b6fe916e5605eaa1fd8394b62527ff9f997 (diff)
Merge branch 'stable' into releaseQtEE_v3.0.0
* stable: (25 commits) Add notes about Quick Compiler failures doc: Updated versions and supported platforms doc: Updated links to Qt EE known issues and product page Doc: Warn the user that his Nexus will be wiped. doc: move adb connection change info to customization Build wifi also on eLinux Don't show Wi-Fi group box on iMX6-eAndroid Fix class names for WebEngine Doc: add note about webengine's widget apis Doc: add change log for version 3.0.0 doc: include sabre sd documentation Doc: Add setup instructions for Nexus 7 (2013) Set initial "backend ready" state. Port QtWifi to eLinux Add a note about webengine and emulator Doc: Update version Doc: Add table with all possible MACHINE values Doc: QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS replaces QT_QPA_GENERIC_PLUGINS Doc: Use precise naming for Boundary Devices i.MX6 Add PowerManager service. ... Change-Id: I2762dfe023d461b677d7ed748c33444145d35175
Diffstat (limited to 'src/qconnectivity')
-rw-r--r--src/qconnectivity/main.cpp58
1 files changed, 46 insertions, 12 deletions
diff --git a/src/qconnectivity/main.cpp b/src/qconnectivity/main.cpp
index 046375e..6f01021 100644
--- a/src/qconnectivity/main.cpp
+++ b/src/qconnectivity/main.cpp
@@ -41,18 +41,52 @@ static int MIN_RENEWAL_TIME_SECS = 300; // 5 min
#define ETH_INTERFACE_HW "eth0"
#define ETH_INTERFACE_EMULATOR "eth1"
+#if Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 3
// this function is defined in android/system/core/libnetutils/dhcp_utils.c
extern "C" {
int dhcp_do_request_renew(const char *ifname,
- const char *ipaddr,
- const char *gateway,
- uint32_t *prefixLength,
- const char *dns1,
- const char *dns2,
- const char *server,
- uint32_t *lease,
- const char *vendorInfo);
+ char *ipaddr,
+ char *gateway,
+ uint32_t *prefixLength,
+ char *dns1,
+ char *dns2,
+ char *server,
+ uint32_t *lease,
+ char *vendorInfo);
}
+#endif
+
+static int q_dhcp_do_request(bool renew,
+ const char *ifname,
+ char *ipaddr,
+ char *gateway,
+ uint32_t *prefixLength,
+ char *dns1,
+ char *dns2,
+ char *server,
+ uint32_t *lease,
+ char *vendorInfo)
+{
+#if Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 3
+ if (!renew)
+ return dhcp_do_request(ifname, ipaddr, gateway, prefixLength, dns1, dns2, server, lease, vendorInfo);
+ return dhcp_do_request_renew(ifname, ipaddr, gateway, prefixLength, dns1, dns2, server, lease, vendorInfo);
+#else
+ char *dns[3] = {dns1, dns2, 0};
+ char domain[PROPERTY_VALUE_MAX];
+ char mtu[PROPERTY_VALUE_MAX];
+#if Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR < 4
+ if (!renew)
+ return dhcp_do_request(ifname, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo);
+ return dhcp_do_request_renew(ifname, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo);
+#else
+ if (!renew)
+ return dhcp_do_request(ifname, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo, domain, mtu);
+ return dhcp_do_request_renew(ifname, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo, domain, mtu);
+#endif
+#endif
+}
+
class LeaseTimer;
class QConnectivityDaemon : public QObject
@@ -254,8 +288,8 @@ bool QConnectivityDaemon::startDhcp(bool renew, const char *interface)
char vendorInfo[PROPERTY_VALUE_MAX];
if (renew) {
- result = dhcp_do_request_renew(interface, ipaddr, gateway, &prefixLength,
- dns1, dns2, server, &lease, vendorInfo);
+ result = q_dhcp_do_request(true, interface, ipaddr, gateway, &prefixLength,
+ dns1, dns2, server, &lease, vendorInfo);
} else {
// stop any existing DHCP daemon before starting new
dhcp_stop(interface);
@@ -263,8 +297,8 @@ bool QConnectivityDaemon::startDhcp(bool renew, const char *interface)
// the device init.rc. Android starts dhcpcd with argument -B which means that
// we are responsible for renewing a lease before it expires
ifc_clear_addresses(interface);
- result = dhcp_do_request(interface, ipaddr, gateway, &prefixLength,
- dns1, dns2, server, &lease, vendorInfo);
+ result = q_dhcp_do_request(false, interface, ipaddr, gateway, &prefixLength,
+ dns1, dns2, server, &lease, vendorInfo);
}
bool success = (result == 0) ? true : false;