diff options
author | Kalle Viironen <kalle.viironen@digia.com> | 2014-05-26 13:53:13 +0300 |
---|---|---|
committer | Kalle Viironen <kalle.viironen@digia.com> | 2014-05-26 13:53:20 +0300 |
commit | 5cdc15a7b82b7adfd4c5cae85ffb4327593dd076 (patch) | |
tree | 342fa9523f5400f4ecbcf6fde169021fabaff500 /src/qconnectivity | |
parent | 9627172876cd2a387d44b5a9a6ce0a3867ebc730 (diff) | |
parent | 5c160b6fe916e5605eaa1fd8394b62527ff9f997 (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.cpp | 58 |
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; |