mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:30:27 +00:00
c317230594
- Bug 1242724: add an export of runnable_utils.h unless/until it gets moved to xpcom/mfbt r=glandium (1d5e839f99) - Bug 1223240 - Make it easier to set up top-level protocols (r=jld) (3beaf4a6fa) - Bug 1194259: Make ICE IP restriction to default routes work in E10S r=jesup,mcmanus,drno (cbe463cf27) - Bug 1239584, Part 1 - Add nsIPushNotifier and nsIPushMessage interfaces. r=dragana (7b71518e7d) - Bug 1239584, Part 2 - Remove message manager usage from `PushService.jsm`. r=dragana (f76ab36278) - Bug 1210211 - Part 3: Test for push notification quota with web notifications. r=kitcambridge (f37472f9b2) - Bug 1189998, Part 3 - Update consolidated Push tests. r=mt (fae3b02e6e) - Bug 1225968 - Refactor data delivery tests to support addition of new tests, r=kitcambridge (3163083135) - Bug 1225968 - Adding more messages to the push message tests, r=kitcambridge (7e1bac99ba) - Bug 1239558 - Exempt system Push subscriptions from quota and permissions checks. r=dragana (0dd8399414) - Bug 1239584, Part 3 - Update tests. r=dragana (937e339387) - Bug 1165256 - Make appcache fully work with OriginAttribues. r=jduell (91d666752a) - reapply Bug 1232506: Make dom/devicestorage really work with e10s. r=alchen (bd77941ea9) - Bug 1236433 - Part 1: Provide a Native Wrapper to Allow Fallback Whenproperty_get/set is Unavailable; r=edgar (f9026a7f50) - Bug 1168959 - Memory-safety bugs in NetworkUtils.cpp generally. r=fabrice (13c6c14168) - Bug 1236433 - Part 2: Adopt Wrapper in Network Utilities; r=edgar (dde58ea083) - Bug 1209654 - Modify the type of the threshold of addAlarm() and getAllAlarms() to long long from long, and add test cases. r=ettseng, r=bz (79c7e31440) - Bug 1000040 - Part 1: Add required APIs for Ethernet; r=vicamo,bholley (fcff7c8078) - Bug 1231306 - Handle plugin state changes correctly in content process (r=jimm) (1f2daa6ad4) - Bug 1213454: Ensure that mSupportsAsyncInit is propagated from content process; r=jimm (e86f36fe0a) - Bug 1246574 - Store sandbox level to nsPluginTag for e10s. r=jimm (04617c8d28) - Bug 1201904 - Force windowless mode for Flash when sandbox level >= 2. r=bsmedberg (662c6612a2) - Bug 1233619 (part 1) - Remove unneeded gfxContext argument from EndUpdate() and EndUpdateBackground() functions. r=roc. (1f74728aec) - Bug 1233619 (part 2) - Moz2Dify BeginUpdate() and BeginUpdateBackground() functions. r=roc. (36accc1499) - Bug 1243656 - Use async for RequestCommitOrCancel. r=masayuki (aa57ea37dc) - Bug 1243268 - Support ImmSetCandidateWindow(CFS_EXCLUDE) on plugin process. r=masayuki (78975bd3e4) - Bug 1235573 - Don't post GCS_RESULTSTR when plugin doesn't handle WM_IME_COMPOSITION correctly. r=masayuki (11690062a3) - Bug 1173371 Part 1: Take Chromium commit 0e49d029d5a1a25d971880b9e44d67ac70b31a80 for sandbox code. r=aklotz (517cb91822) - Bug 1157864 - Record chromium patch applied in previous commit. r=me (dc1e63191b) - Bug 1173371 Part 2: Change Chromium sandbox to allow rules for files on network drives to be added. a=aklotz (2bd72777e5) - Bug 1173371 Part 3: Add sandbox policy rule to allow read access to the Firefox program directory when it is on a network drive. r=aklotz (c0a180d4b8) - Bug 1244774: Correct wchar_t/char16_t VS2015 compilation problem caused by patches for bug 1173371. r=jimm (d5326694f8)
201 lines
6.8 KiB
C++
201 lines
6.8 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "NetUtils.h"
|
|
#include <dlfcn.h>
|
|
#include <errno.h>
|
|
#include "prinit.h"
|
|
#include "mozilla/Assertions.h"
|
|
#include "nsDebug.h"
|
|
#include "SystemProperty.h"
|
|
|
|
using mozilla::system::Property;
|
|
|
|
static void* sNetUtilsLib;
|
|
static PRCallOnceType sInitNetUtilsLib;
|
|
|
|
static PRStatus
|
|
InitNetUtilsLib()
|
|
{
|
|
sNetUtilsLib = dlopen("/system/lib/libnetutils.so", RTLD_LAZY);
|
|
// We might fail to open the hardware lib. That's OK.
|
|
return PR_SUCCESS;
|
|
}
|
|
|
|
static void*
|
|
GetNetUtilsLibHandle()
|
|
{
|
|
PR_CallOnce(&sInitNetUtilsLib, InitNetUtilsLib);
|
|
return sNetUtilsLib;
|
|
}
|
|
|
|
// static
|
|
void*
|
|
NetUtils::GetSharedLibrary()
|
|
{
|
|
void* netLib = GetNetUtilsLibHandle();
|
|
if (!netLib) {
|
|
NS_WARNING("No /system/lib/libnetutils.so");
|
|
}
|
|
return netLib;
|
|
}
|
|
|
|
// static
|
|
int32_t
|
|
NetUtils::SdkVersion()
|
|
{
|
|
char propVersion[Property::VALUE_MAX_LENGTH];
|
|
Property::Get("ro.build.version.sdk", propVersion, "0");
|
|
int32_t version = strtol(propVersion, nullptr, 10);
|
|
return version;
|
|
}
|
|
|
|
DEFINE_DLFUNC(ifc_enable, int32_t, const char*)
|
|
DEFINE_DLFUNC(ifc_disable, int32_t, const char*)
|
|
DEFINE_DLFUNC(ifc_configure, int32_t, const char*, in_addr_t, uint32_t,
|
|
in_addr_t, in_addr_t, in_addr_t)
|
|
DEFINE_DLFUNC(ifc_reset_connections, int32_t, const char*, const int32_t)
|
|
DEFINE_DLFUNC(ifc_set_default_route, int32_t, const char*, in_addr_t)
|
|
DEFINE_DLFUNC(ifc_add_route, int32_t, const char*, const char*, uint32_t, const char*)
|
|
DEFINE_DLFUNC(ifc_remove_route, int32_t, const char*, const char*, uint32_t, const char*)
|
|
DEFINE_DLFUNC(ifc_remove_host_routes, int32_t, const char*)
|
|
DEFINE_DLFUNC(ifc_remove_default_route, int32_t, const char*)
|
|
DEFINE_DLFUNC(dhcp_stop, int32_t, const char*)
|
|
|
|
NetUtils::NetUtils()
|
|
{
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_enable(const char *ifname)
|
|
{
|
|
USE_DLFUNC(ifc_enable)
|
|
return ifc_enable(ifname);
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_disable(const char *ifname)
|
|
{
|
|
USE_DLFUNC(ifc_disable)
|
|
return ifc_disable(ifname);
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_configure(const char *ifname,
|
|
in_addr_t address,
|
|
uint32_t prefixLength,
|
|
in_addr_t gateway,
|
|
in_addr_t dns1,
|
|
in_addr_t dns2)
|
|
{
|
|
USE_DLFUNC(ifc_configure)
|
|
int32_t ret = ifc_configure(ifname, address, prefixLength, gateway, dns1, dns2);
|
|
return ret;
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_reset_connections(const char *ifname,
|
|
const int32_t resetMask)
|
|
{
|
|
USE_DLFUNC(ifc_reset_connections)
|
|
return ifc_reset_connections(ifname, resetMask);
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_set_default_route(const char *ifname,
|
|
in_addr_t gateway)
|
|
{
|
|
USE_DLFUNC(ifc_set_default_route)
|
|
return ifc_set_default_route(ifname, gateway);
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_add_route(const char *ifname,
|
|
const char *dst,
|
|
uint32_t prefixLength,
|
|
const char *gateway)
|
|
{
|
|
USE_DLFUNC(ifc_add_route)
|
|
return ifc_add_route(ifname, dst, prefixLength, gateway);
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_remove_route(const char *ifname,
|
|
const char *dst,
|
|
uint32_t prefixLength,
|
|
const char *gateway)
|
|
{
|
|
USE_DLFUNC(ifc_remove_route)
|
|
return ifc_remove_route(ifname, dst, prefixLength, gateway);
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_remove_host_routes(const char *ifname)
|
|
{
|
|
USE_DLFUNC(ifc_remove_host_routes)
|
|
return ifc_remove_host_routes(ifname);
|
|
}
|
|
|
|
int32_t NetUtils::do_ifc_remove_default_route(const char *ifname)
|
|
{
|
|
USE_DLFUNC(ifc_remove_default_route)
|
|
return ifc_remove_default_route(ifname);
|
|
}
|
|
|
|
int32_t NetUtils::do_dhcp_stop(const char *ifname)
|
|
{
|
|
USE_DLFUNC(dhcp_stop)
|
|
return dhcp_stop(ifname);
|
|
}
|
|
|
|
int32_t NetUtils::do_dhcp_do_request(const char *ifname,
|
|
char *ipaddr,
|
|
char *gateway,
|
|
uint32_t *prefixLength,
|
|
char *dns1,
|
|
char *dns2,
|
|
char *server,
|
|
uint32_t *lease,
|
|
char* vendorinfo)
|
|
{
|
|
int32_t ret = -1;
|
|
uint32_t sdkVersion = SdkVersion();
|
|
|
|
if (sdkVersion == 15) {
|
|
// ICS
|
|
// http://androidxref.com/4.0.4/xref/system/core/libnetutils/dhcp_utils.c#149
|
|
DEFINE_DLFUNC(dhcp_do_request, int32_t, const char*, char*, char*, uint32_t*, char*, char*, char*, uint32_t*)
|
|
USE_DLFUNC(dhcp_do_request)
|
|
vendorinfo[0] = '\0';
|
|
|
|
ret = dhcp_do_request(ifname, ipaddr, gateway, prefixLength, dns1, dns2,
|
|
server, lease);
|
|
} else if (sdkVersion == 16 || sdkVersion == 17) {
|
|
// JB 4.1 and 4.2
|
|
// http://androidxref.com/4.1.2/xref/system/core/libnetutils/dhcp_utils.c#175
|
|
// http://androidxref.com/4.2.2_r1/xref/system/core/include/netutils/dhcp.h#26
|
|
DEFINE_DLFUNC(dhcp_do_request, int32_t, const char*, char*, char*, uint32_t*, char*, char*, char*, uint32_t*, char*)
|
|
USE_DLFUNC(dhcp_do_request)
|
|
ret = dhcp_do_request(ifname, ipaddr, gateway, prefixLength, dns1, dns2,
|
|
server, lease, vendorinfo);
|
|
} else if (sdkVersion == 18) {
|
|
// JB 4.3
|
|
// http://androidxref.com/4.3_r2.1/xref/system/core/libnetutils/dhcp_utils.c#181
|
|
DEFINE_DLFUNC(dhcp_do_request, int32_t, const char*, char*, char*, uint32_t*, char**, char*, uint32_t*, char*, char*)
|
|
USE_DLFUNC(dhcp_do_request)
|
|
char *dns[3] = {dns1, dns2, nullptr};
|
|
char domains[Property::VALUE_MAX_LENGTH];
|
|
ret = dhcp_do_request(ifname, ipaddr, gateway, prefixLength, dns,
|
|
server, lease, vendorinfo, domains);
|
|
} else if (sdkVersion >= 19) {
|
|
// KitKat 4.4.X
|
|
// http://androidxref.com/4.4_r1/xref/system/core/libnetutils/dhcp_utils.c#18
|
|
// Lollipop 5.0
|
|
//http://androidxref.com/5.0.0_r2/xref/system/core/libnetutils/dhcp_utils.c#186
|
|
DEFINE_DLFUNC(dhcp_do_request, int32_t, const char*, char*, char*, uint32_t*, char**, char*, uint32_t*, char*, char*, char*)
|
|
USE_DLFUNC(dhcp_do_request)
|
|
char *dns[3] = {dns1, dns2, nullptr};
|
|
char domains[Property::VALUE_MAX_LENGTH];
|
|
char mtu[Property::VALUE_MAX_LENGTH];
|
|
ret = dhcp_do_request(ifname, ipaddr, gateway, prefixLength, dns, server, lease, vendorinfo, domains, mtu);
|
|
} else {
|
|
NS_WARNING("Unable to perform do_dhcp_request: unsupported sdk version!");
|
|
}
|
|
return ret;
|
|
}
|