mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 961598 - support DNS reslover. r=vchang
This commit is contained in:
parent
4e5dcc9d23
commit
1dba42f7f1
@ -283,6 +283,7 @@ NetworkService.prototype = {
|
||||
let options = {
|
||||
cmd: "setDNS",
|
||||
ifname: networkInterface.name,
|
||||
domain: "mozilla." + networkInterface.name + ".doman",
|
||||
dns1_str: networkInterface.dns1,
|
||||
dns2_str: networkInterface.dns2
|
||||
};
|
||||
@ -296,6 +297,7 @@ NetworkService.prototype = {
|
||||
ifname: network.name,
|
||||
oldIfname: (oldInterface && oldInterface !== network) ? oldInterface.name : null,
|
||||
gateway_str: network.gateway,
|
||||
domain: "mozilla." + network.name + ".doman",
|
||||
dns1_str: network.dns1,
|
||||
dns2_str: network.dns2
|
||||
};
|
||||
|
@ -205,6 +205,11 @@ CommandFunc NetworkUtils::sNetworkInterfaceSetAlarmChain[] = {
|
||||
NetworkUtils::networkInterfaceAlarmSuccess
|
||||
};
|
||||
|
||||
CommandFunc NetworkUtils::sSetDnsChain[] = {
|
||||
NetworkUtils::setDefaultInterface,
|
||||
NetworkUtils::setInterfaceDns
|
||||
};
|
||||
|
||||
/**
|
||||
* Helper function to get the bit length from given mask.
|
||||
*/
|
||||
@ -738,6 +743,26 @@ void NetworkUtils::disableNat(CommandChain* aChain,
|
||||
doCommand(command, aChain, aCallback);
|
||||
}
|
||||
|
||||
void NetworkUtils::setDefaultInterface(CommandChain* aChain,
|
||||
CommandCallback aCallback,
|
||||
NetworkResultOptions& aResult)
|
||||
{
|
||||
char command[MAX_COMMAND_SIZE];
|
||||
snprintf(command, MAX_COMMAND_SIZE - 1, "resolver setdefaultif %s", GET_CHAR(mIfname));
|
||||
|
||||
doCommand(command, aChain, aCallback);
|
||||
}
|
||||
|
||||
void NetworkUtils::setInterfaceDns(CommandChain* aChain,
|
||||
CommandCallback aCallback,
|
||||
NetworkResultOptions& aResult)
|
||||
{
|
||||
char command[MAX_COMMAND_SIZE];
|
||||
snprintf(command, MAX_COMMAND_SIZE - 1, "resolver setifdns %s %s %s %s", GET_CHAR(mIfname), GET_CHAR(mDomain), GET_CHAR(mDns1_str), GET_CHAR(mDns2_str));
|
||||
|
||||
doCommand(command, aChain, aCallback);
|
||||
}
|
||||
|
||||
#undef GET_CHAR
|
||||
#undef GET_FIELD
|
||||
|
||||
@ -868,6 +893,11 @@ void NetworkUtils::wifiOperationModeSuccess(CommandChain* aChain,
|
||||
postMessage(aChain->getParams(), aResult);
|
||||
}
|
||||
|
||||
void NetworkUtils::setDnsFail(NetworkParams& aOptions, NetworkResultOptions& aResult)
|
||||
{
|
||||
postMessage(aOptions, aResult);
|
||||
}
|
||||
|
||||
#undef ASSIGN_FIELD
|
||||
#undef ASSIGN_FIELD_VALUE
|
||||
|
||||
@ -1054,6 +1084,11 @@ bool NetworkUtils::setDNS(NetworkParams& aOptions)
|
||||
snprintf(num, PROPERTY_VALUE_MAX - 1, "%d", atoi(dnschange) + 1);
|
||||
property_set("net.dnschange", num);
|
||||
|
||||
// DNS needs to be set through netd since JellyBean (4.3).
|
||||
if (SDK_VERSION >= 18) {
|
||||
RUN_CHAIN(aOptions, sSetDnsChain, setDnsFail)
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,7 @@ public:
|
||||
NetworkParams(const NetworkParams& aOther) {
|
||||
mIp = aOther.mIp;
|
||||
mCmd = aOther.mCmd;
|
||||
mDomain = aOther.mDomain;
|
||||
mDns1_str = aOther.mDns1_str;
|
||||
mDns2_str = aOther.mDns2_str;
|
||||
mGateway = aOther.mGateway;
|
||||
@ -106,6 +107,7 @@ public:
|
||||
|
||||
COPY_FIELD(mId)
|
||||
COPY_FIELD(mCmd)
|
||||
COPY_OPT_STRING_FIELD(mDomain, EmptyString())
|
||||
COPY_OPT_STRING_FIELD(mDns1_str, EmptyString())
|
||||
COPY_OPT_STRING_FIELD(mDns2_str, EmptyString())
|
||||
COPY_OPT_STRING_FIELD(mGateway, EmptyString())
|
||||
@ -156,6 +158,7 @@ public:
|
||||
|
||||
int32_t mId;
|
||||
nsString mCmd;
|
||||
nsString mDomain;
|
||||
nsString mDns1_str;
|
||||
nsString mDns2_str;
|
||||
nsString mGateway;
|
||||
@ -299,6 +302,7 @@ private:
|
||||
static CommandFunc sNetworkInterfaceEnableAlarmChain[];
|
||||
static CommandFunc sNetworkInterfaceDisableAlarmChain[];
|
||||
static CommandFunc sNetworkInterfaceSetAlarmChain[];
|
||||
static CommandFunc sSetDnsChain[];
|
||||
|
||||
/**
|
||||
* Individual netd command stored in command chain.
|
||||
@ -331,6 +335,8 @@ private:
|
||||
static void setDnsForwarders(PARAMS);
|
||||
static void enableNat(PARAMS);
|
||||
static void disableNat(PARAMS);
|
||||
static void setDefaultInterface(PARAMS);
|
||||
static void setInterfaceDns(PARAMS);
|
||||
static void wifiTetheringSuccess(PARAMS);
|
||||
static void usbTetheringSuccess(PARAMS);
|
||||
static void networkInterfaceStatsSuccess(PARAMS);
|
||||
@ -351,6 +357,7 @@ private:
|
||||
static void setDhcpServerFail(PARAMS);
|
||||
static void networkInterfaceStatsFail(PARAMS);
|
||||
static void networkInterfaceAlarmFail(PARAMS);
|
||||
static void setDnsFail(PARAMS);
|
||||
#undef PARAMS
|
||||
|
||||
/**
|
||||
|
@ -15,6 +15,7 @@ dictionary NetworkCommandOptions
|
||||
// "removeHostRoutes".
|
||||
DOMString ip; // for "removeNetworkRoute", "setWifiTethering".
|
||||
DOMString netmask; // for "removeNetworkRoute".
|
||||
DOMString domain; // for "setDNS"
|
||||
DOMString dns1_str; // for "setDNS", "setDefaultRouteAndDNS".
|
||||
DOMString dns2_str; // for "setDNS", "setDefaultRouteAndDNS".
|
||||
DOMString oldIfname; // for "setDefaultRouteAndDNS".
|
||||
|
Loading…
Reference in New Issue
Block a user