diff --git a/src/shrpx.cc b/src/shrpx.cc index 9e47236a..ae3c2fc7 100644 --- a/src/shrpx.cc +++ b/src/shrpx.cc @@ -3085,7 +3085,7 @@ int process_options(Config *config, auto &fwdconf = config->http.forwarded; - if (fwdconf.by_node_type == FORWARDED_NODE_OBFUSCATED && + if (fwdconf.by_node_type == ForwardedNode::OBFUSCATED && fwdconf.by_obfuscated.empty()) { // 2 for '_' and terminal NULL auto iov = make_byte_ref(config->balloc, SHRPX_OBFUSCATED_NODE_LENGTH + 2); diff --git a/src/shrpx_client_handler.cc b/src/shrpx_client_handler.cc index a32c8e93..53a5a5b1 100644 --- a/src/shrpx_client_handler.cc +++ b/src/shrpx_client_handler.cc @@ -430,7 +430,7 @@ ClientHandler::ClientHandler(Worker *worker, int fd, SSL *ssl, auto &fwdconf = config->http.forwarded; if (fwdconf.params & FORWARDED_FOR) { - if (fwdconf.for_node_type == FORWARDED_NODE_OBFUSCATED) { + if (fwdconf.for_node_type == ForwardedNode::OBFUSCATED) { // 1 for '_' auto len = SHRPX_OBFUSCATED_NODE_LENGTH + 1; // 1 for terminating NUL. @@ -1490,7 +1490,7 @@ int ClientHandler::proxy_protocol_read() { auto &fwdconf = config->http.forwarded; if ((fwdconf.params & FORWARDED_FOR) && - fwdconf.for_node_type == FORWARDED_NODE_IP) { + fwdconf.for_node_type == ForwardedNode::IP) { init_forwarded_for(family, ipaddr_); } @@ -1500,7 +1500,7 @@ int ClientHandler::proxy_protocol_read() { StringRef ClientHandler::get_forwarded_by() const { auto &fwdconf = get_config()->http.forwarded; - if (fwdconf.by_node_type == FORWARDED_NODE_OBFUSCATED) { + if (fwdconf.by_node_type == ForwardedNode::OBFUSCATED) { return fwdconf.by_obfuscated; } diff --git a/src/shrpx_config.cc b/src/shrpx_config.cc index 5cab7ca5..e7a632c4 100644 --- a/src/shrpx_config.cc +++ b/src/shrpx_config.cc @@ -1195,27 +1195,27 @@ int parse_mapping(Config *config, DownstreamAddrConfig &addr, } // namespace namespace { -int parse_forwarded_node_type(const StringRef &optarg) { +ForwardedNode parse_forwarded_node_type(const StringRef &optarg) { if (util::strieq_l("obfuscated", optarg)) { - return FORWARDED_NODE_OBFUSCATED; + return ForwardedNode::OBFUSCATED; } if (util::strieq_l("ip", optarg)) { - return FORWARDED_NODE_IP; + return ForwardedNode::IP; } if (optarg.size() < 2 || optarg[0] != '_') { - return -1; + return static_cast(-1); } if (std::find_if_not(std::begin(optarg), std::end(optarg), [](char c) { return util::is_alpha(c) || util::is_digit(c) || c == '.' || c == '_' || c == '-'; }) != std::end(optarg)) { - return -1; + return static_cast(-1); } - return FORWARDED_NODE_OBFUSCATED; + return ForwardedNode::OBFUSCATED; } } // namespace @@ -3387,7 +3387,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, case SHRPX_OPTID_FORWARDED_FOR: { auto type = parse_forwarded_node_type(optarg); - if (type == -1 || + if (type == static_cast(-1) || (optid == SHRPX_OPTID_FORWARDED_FOR && optarg[0] == '_')) { LOG(ERROR) << opt << ": unknown node type or illegal obfuscated string " << optarg; @@ -3398,7 +3398,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, switch (optid) { case SHRPX_OPTID_FORWARDED_BY: - fwdconf.by_node_type = static_cast(type); + fwdconf.by_node_type = type; if (optarg[0] == '_') { fwdconf.by_obfuscated = make_string_ref(config->balloc, optarg); } else { @@ -3406,7 +3406,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, } break; case SHRPX_OPTID_FORWARDED_FOR: - fwdconf.for_node_type = static_cast(type); + fwdconf.for_node_type = type; break; } diff --git a/src/shrpx_config.h b/src/shrpx_config.h index afb5284a..bb6fc262 100644 --- a/src/shrpx_config.h +++ b/src/shrpx_config.h @@ -409,9 +409,9 @@ enum shrpx_forwarded_param { FORWARDED_PROTO = 0x8, }; -enum shrpx_forwarded_node_type { - FORWARDED_NODE_OBFUSCATED, - FORWARDED_NODE_IP, +enum class ForwardedNode { + OBFUSCATED, + IP, }; struct AltSvc { @@ -704,10 +704,10 @@ struct HttpConfig { uint32_t params; // type of value recorded in "by" parameter of Forwarded header // field. - shrpx_forwarded_node_type by_node_type; + ForwardedNode by_node_type; // type of value recorded in "for" parameter of Forwarded header // field. - shrpx_forwarded_node_type for_node_type; + ForwardedNode for_node_type; bool strip_incoming; } forwarded; struct {