diff --git a/core/src/main/java/com/datastax/oss/driver/api/core/config/DefaultDriverOption.java b/core/src/main/java/com/datastax/oss/driver/api/core/config/DefaultDriverOption.java
index 6ffd51d86ef..4e45bf7b117 100644
--- a/core/src/main/java/com/datastax/oss/driver/api/core/config/DefaultDriverOption.java
+++ b/core/src/main/java/com/datastax/oss/driver/api/core/config/DefaultDriverOption.java
@@ -994,7 +994,48 @@ public enum DefaultDriverOption implements DriverOption {
*
*
Value-type: boolean
*/
- SSL_ALLOW_DNS_REVERSE_LOOKUP_SAN("advanced.ssl-engine-factory.allow-dns-reverse-lookup-san");
+ SSL_ALLOW_DNS_REVERSE_LOOKUP_SAN("advanced.ssl-engine-factory.allow-dns-reverse-lookup-san"),
+ /**
+ * An address to always translate all node addresses to that same proxy hostname no matter what IP
+ * address a node has, but still using its native transport port.
+ *
+ *
Value-Type: {@link String}
+ */
+ ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME("advanced.address-translator.advertised-hostname"),
+ /**
+ * A map of Cassandra node subnets (CIDR notations) to target addresses, for example (note quoted
+ * keys):
+ *
+ *
+ * advanced.address-translator.subnet-addresses {
+ * "100.64.0.0/15" = "cassandra.datacenter1.com:9042"
+ * "100.66.0.0/15" = "cassandra.datacenter2.com:9042"
+ * # IPv6 example:
+ * # "::ffff:6440:0/111" = "cassandra.datacenter1.com:9042"
+ * # "::ffff:6442:0/111" = "cassandra.datacenter2.com:9042"
+ * }
+ *
+ *
+ * Note: subnets must be represented as prefix blocks, see {@link
+ * inet.ipaddr.Address#isPrefixBlock()}.
+ *
+ * Value type: {@link java.util.Map Map}<{@link String},{@link String}>
+ */
+ ADDRESS_TRANSLATOR_SUBNET_ADDRESSES("advanced.address-translator.subnet-addresses"),
+ /**
+ * A default address to fallback to if Cassandra node IP isn't contained in any of the configured
+ * subnets.
+ *
+ *
Value-Type: {@link String}
+ */
+ ADDRESS_TRANSLATOR_DEFAULT_ADDRESS("advanced.address-translator.default-address"),
+ /**
+ * Whether to resolve the addresses on initialization (if true) or on each node (re-)connection
+ * (if false). Defaults to false.
+ *
+ *
Value-Type: boolean
+ */
+ ADDRESS_TRANSLATOR_RESOLVE_ADDRESSES("advanced.address-translator.resolve-addresses");
private final String path;
diff --git a/core/src/main/java/com/datastax/oss/driver/api/core/config/TypedDriverOption.java b/core/src/main/java/com/datastax/oss/driver/api/core/config/TypedDriverOption.java
index 93e2b468461..aa4e4af12dc 100644
--- a/core/src/main/java/com/datastax/oss/driver/api/core/config/TypedDriverOption.java
+++ b/core/src/main/java/com/datastax/oss/driver/api/core/config/TypedDriverOption.java
@@ -896,6 +896,20 @@ public String toString() {
DefaultDriverOption.LOAD_BALANCING_DC_FAILOVER_ALLOW_FOR_LOCAL_CONSISTENCY_LEVELS,
GenericType.BOOLEAN);
+ public static final TypedDriverOption ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME =
+ new TypedDriverOption<>(
+ DefaultDriverOption.ADDRESS_TRANSLATOR_ADVERTISED_HOSTNAME, GenericType.STRING);
+ public static final TypedDriverOption