summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
authorSara Golemon <sara.golemon@mongodb.com>2018-09-12 18:27:59 +0000
committerSara Golemon <sara.golemon@mongodb.com>2018-09-17 17:38:36 +0000
commit5c71b34bbe40040272f1174508366ff8a5668cbc (patch)
treea0e8a79d4676ab3ba1e01bfed5238e42bd9179ee /src/mongo
parent9011c8cff2985a1f60d558f62fe0d712b48b9b99 (diff)
downloadmongo-5c71b34bbe40040272f1174508366ff8a5668cbc.tar.gz
SERVER-36572 Canonicalize bindIpAll to bindIp=='*'
Diffstat (limited to 'src/mongo')
-rw-r--r--src/mongo/db/server_options_server_helpers.cpp44
1 files changed, 25 insertions, 19 deletions
diff --git a/src/mongo/db/server_options_server_helpers.cpp b/src/mongo/db/server_options_server_helpers.cpp
index 97d396567eb..6ba968ad126 100644
--- a/src/mongo/db/server_options_server_helpers.cpp
+++ b/src/mongo/db/server_options_server_helpers.cpp
@@ -116,17 +116,22 @@ Status addGeneralServerOptions(moe::OptionSection* options) {
.setSources(moe::SourceCommandLine)
.hidden();
- options
- ->addOptionChaining(
- "net.bindIp",
- "bind_ip",
- moe::String,
- "comma separated list of ip addresses to listen on - localhost by default")
- .incompatibleWith("bind_ip_all");
+ options->addOptionChaining(
+ "net.bindIp",
+ "bind_ip",
+ moe::String,
+ "comma separated list of ip addresses to listen on - localhost by default");
options
->addOptionChaining("net.bindIpAll", "bind_ip_all", moe::Switch, "bind to all ip addresses")
- .incompatibleWith("bind_ip");
+ .canonicalize([](moe::Environment* env) {
+ bool all = (*env)["net.bindIpAll"].as<bool>();
+ auto status = env->remove("net.bindIpAll");
+ if (!status.isOK()) {
+ return status;
+ }
+ return all ? env->set("net.bindIp", moe::Value("*")) : Status::OK();
+ });
options->addOptionChaining(
"net.ipv6", "ipv6", moe::Switch, "enable IPv6 support (disabled by default)");
@@ -641,18 +646,19 @@ Status storeServerOptions(const moe::Environment& params) {
serverGlobalParams.objcheck = params["net.wireObjectCheck"].as<bool>();
}
- if (params.count("net.bindIpAll") && params["net.bindIpAll"].as<bool>()) {
- // Bind to all IP addresses
- serverGlobalParams.bind_ips.emplace_back("0.0.0.0");
- if (params.count("net.ipv6") && params["net.ipv6"].as<bool>()) {
- serverGlobalParams.bind_ips.emplace_back("::");
- }
- } else if (params.count("net.bindIp")) {
+ if (params.count("net.bindIp")) {
std::string bind_ip = params["net.bindIp"].as<std::string>();
- boost::split(serverGlobalParams.bind_ips,
- bind_ip,
- [](char c) { return c == ','; },
- boost::token_compress_on);
+ if (bind_ip == "*") {
+ serverGlobalParams.bind_ips.emplace_back("0.0.0.0");
+ if (params.count("net.ipv6") && params["net.ipv6"].as<bool>()) {
+ serverGlobalParams.bind_ips.emplace_back("::");
+ }
+ } else {
+ boost::split(serverGlobalParams.bind_ips,
+ bind_ip,
+ [](char c) { return c == ','; },
+ boost::token_compress_on);
+ }
}
for (auto& ip : serverGlobalParams.bind_ips) {