.. _envoy_v3_api_file_envoy/config/core/v3/address.proto:

Network addresses
=================


This documentation is for the Envoy v3 API.

As of Envoy v1.18 the v2 API has been removed and is no longer supported.

If you are upgrading from v2 API config you may wish to view the v2 API documentation:

    :ref:`api/v2/core/address.proto <v1.17.2:envoy_api_file_envoy/api/v2/core/address.proto>`



.. _envoy_v3_api_msg_config.core.v3.Pipe:

config.core.v3.Pipe
-------------------

:repo:`[config.core.v3.Pipe proto] <api/envoy/config/core/v3/address.proto#L19>`


.. code-block:: json

  {
    "path": "...",
    "mode": "..."
  }

.. _envoy_v3_api_field_config.core.v3.Pipe.path:

path
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *REQUIRED*) Unix Domain Socket path. On Linux, paths starting with '@' will use the
  abstract namespace. The starting '@' is replaced by a null byte by Envoy.
  Paths starting with '@' will result in an error in environments other than
  Linux.
  
  
.. _envoy_v3_api_field_config.core.v3.Pipe.mode:

mode
  (`uint32 <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) The mode for the Pipe. Not applicable for abstract sockets.
  
  



.. _envoy_v3_api_msg_config.core.v3.SocketAddress:

config.core.v3.SocketAddress
----------------------------

:repo:`[config.core.v3.SocketAddress proto] <api/envoy/config/core/v3/address.proto#L45>`


.. code-block:: json

  {
    "protocol": "...",
    "address": "...",
    "port_value": "...",
    "named_port": "...",
    "resolver_name": "...",
    "ipv4_compat": "..."
  }

.. _envoy_v3_api_field_config.core.v3.SocketAddress.protocol:

protocol
  (:ref:`config.core.v3.SocketAddress.Protocol <envoy_v3_api_enum_config.core.v3.SocketAddress.Protocol>`) 
  
.. _envoy_v3_api_field_config.core.v3.SocketAddress.address:

address
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *REQUIRED*) The address for this socket. :ref:`Listeners <config_listeners>` will bind
  to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::``
  to bind to any address. When used
  within an upstream :ref:`BindConfig <envoy_v3_api_msg_config.core.v3.BindConfig>`, the address
  controls the source address of outbound connections. For :ref:`clusters
  <envoy_v3_api_msg_config.cluster.v3.Cluster>`, the cluster type determines whether the
  address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS
  (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized
  via :ref:`resolver_name <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>`.
  
  
.. _envoy_v3_api_field_config.core.v3.SocketAddress.port_value:

port_value
  (`uint32 <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) 
  
  
  Precisely one of :ref:`port_value <envoy_v3_api_field_config.core.v3.SocketAddress.port_value>`, :ref:`named_port <envoy_v3_api_field_config.core.v3.SocketAddress.named_port>` must be set.
  
.. _envoy_v3_api_field_config.core.v3.SocketAddress.named_port:

named_port
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) This is only valid if :ref:`resolver_name
  <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>` is specified below and the
  named resolver is capable of named port resolution.
  
  
  
  Precisely one of :ref:`port_value <envoy_v3_api_field_config.core.v3.SocketAddress.port_value>`, :ref:`named_port <envoy_v3_api_field_config.core.v3.SocketAddress.named_port>` must be set.
  
.. _envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name:

resolver_name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) The name of the custom resolver. This must have been registered with Envoy. If
  this is empty, a context dependent default applies. If the address is a concrete
  IP address, no resolution will occur. If address is a hostname this
  should be set for resolution other than DNS. Specifying a custom resolver with
  *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime.
  
  
.. _envoy_v3_api_field_config.core.v3.SocketAddress.ipv4_compat:

ipv4_compat
  (`bool <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) When binding to an IPv6 address above, this enables `IPv4 compatibility
  <https://tools.ietf.org/html/rfc3493#page-11>`_. Binding to ``::`` will
  allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
  IPv6 space as ``::FFFF:<IPv4-address>``.
  
  

.. _envoy_v3_api_enum_config.core.v3.SocketAddress.Protocol:

Enum config.core.v3.SocketAddress.Protocol
------------------------------------------

:repo:`[config.core.v3.SocketAddress.Protocol proto] <api/envoy/config/core/v3/address.proto#L48>`


.. _envoy_v3_api_enum_value_config.core.v3.SocketAddress.Protocol.TCP:

TCP
  *(DEFAULT)* ⁣
  
.. _envoy_v3_api_enum_value_config.core.v3.SocketAddress.Protocol.UDP:

UDP
  ⁣
  

.. _envoy_v3_api_msg_config.core.v3.TcpKeepalive:

config.core.v3.TcpKeepalive
---------------------------

:repo:`[config.core.v3.TcpKeepalive proto] <api/envoy/config/core/v3/address.proto#L93>`


.. code-block:: json

  {
    "keepalive_probes": "{...}",
    "keepalive_time": "{...}",
    "keepalive_interval": "{...}"
  }

.. _envoy_v3_api_field_config.core.v3.TcpKeepalive.keepalive_probes:

keepalive_probes
  (`UInt32Value <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#uint32value>`_) Maximum number of keepalive probes to send without response before deciding
  the connection is dead. Default is to use the OS level configuration (unless
  overridden, Linux defaults to 9.)
  
  
.. _envoy_v3_api_field_config.core.v3.TcpKeepalive.keepalive_time:

keepalive_time
  (`UInt32Value <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#uint32value>`_) The number of seconds a connection needs to be idle before keep-alive probes
  start being sent. Default is to use the OS level configuration (unless
  overridden, Linux defaults to 7200s (i.e., 2 hours.)
  
  
.. _envoy_v3_api_field_config.core.v3.TcpKeepalive.keepalive_interval:

keepalive_interval
  (`UInt32Value <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#uint32value>`_) The number of seconds between keep-alive probes. Default is to use the OS
  level configuration (unless overridden, Linux defaults to 75s.)
  
  


.. _envoy_v3_api_msg_config.core.v3.BindConfig:

config.core.v3.BindConfig
-------------------------

:repo:`[config.core.v3.BindConfig proto] <api/envoy/config/core/v3/address.proto#L111>`


.. code-block:: json

  {
    "source_address": "{...}",
    "freebind": "{...}",
    "socket_options": []
  }

.. _envoy_v3_api_field_config.core.v3.BindConfig.source_address:

source_address
  (:ref:`config.core.v3.SocketAddress <envoy_v3_api_msg_config.core.v3.SocketAddress>`, *REQUIRED*) The address to bind to when creating a socket.
  
  
.. _envoy_v3_api_field_config.core.v3.BindConfig.freebind:

freebind
  (`BoolValue <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#boolvalue>`_) Whether to set the *IP_FREEBIND* option when creating the socket. When this
  flag is set to true, allows the :ref:`source_address
  <envoy_v3_api_field_config.cluster.v3.UpstreamBindConfig.source_address>` to be an IP address
  that is not configured on the system running Envoy. When this flag is set
  to false, the option *IP_FREEBIND* is disabled on the socket. When this
  flag is not set (default), the socket is not modified, i.e. the option is
  neither enabled nor disabled.
  
  
.. _envoy_v3_api_field_config.core.v3.BindConfig.socket_options:

socket_options
  (**repeated** :ref:`config.core.v3.SocketOption <envoy_v3_api_msg_config.core.v3.SocketOption>`) Additional socket options that may not be present in Envoy source code or
  precompiled binaries.
  
  


.. _envoy_v3_api_msg_config.core.v3.Address:

config.core.v3.Address
----------------------

:repo:`[config.core.v3.Address proto] <api/envoy/config/core/v3/address.proto#L134>`

Addresses specify either a logical or physical address and port, which are
used to tell Envoy where to bind/listen, connect to upstream and find
management servers.

.. code-block:: json

  {
    "socket_address": "{...}",
    "pipe": "{...}"
  }

.. _envoy_v3_api_field_config.core.v3.Address.socket_address:

socket_address
  (:ref:`config.core.v3.SocketAddress <envoy_v3_api_msg_config.core.v3.SocketAddress>`) 
  
  
  Precisely one of :ref:`socket_address <envoy_v3_api_field_config.core.v3.Address.socket_address>`, :ref:`pipe <envoy_v3_api_field_config.core.v3.Address.pipe>` must be set.
  
.. _envoy_v3_api_field_config.core.v3.Address.pipe:

pipe
  (:ref:`config.core.v3.Pipe <envoy_v3_api_msg_config.core.v3.Pipe>`) 
  
  
  Precisely one of :ref:`socket_address <envoy_v3_api_field_config.core.v3.Address.socket_address>`, :ref:`pipe <envoy_v3_api_field_config.core.v3.Address.pipe>` must be set.
  



.. _envoy_v3_api_msg_config.core.v3.CidrRange:

config.core.v3.CidrRange
------------------------

:repo:`[config.core.v3.CidrRange proto] <api/envoy/config/core/v3/address.proto#L151>`

CidrRange specifies an IP Address and a prefix length to construct
the subnet mask for a `CIDR <https://tools.ietf.org/html/rfc4632>`_ range.

.. code-block:: json

  {
    "address_prefix": "...",
    "prefix_len": "{...}"
  }

.. _envoy_v3_api_field_config.core.v3.CidrRange.address_prefix:

address_prefix
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *REQUIRED*) IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.
  
  
.. _envoy_v3_api_field_config.core.v3.CidrRange.prefix_len:

prefix_len
  (`UInt32Value <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#uint32value>`_) Length of prefix, e.g. 0, 32. Defaults to 0 when unset.