1
#include "source/extensions/quic/server_preferred_address/server_preferred_address.h"
2

            
3
namespace Envoy {
4
namespace Quic {
5

            
6
namespace {
7
38
quic::QuicSocketAddress ipOrAddressToAddress(const quic::QuicSocketAddress& address, int32_t port) {
8
38
  if (address.port() == 0) {
9
27
    return {address.host(), static_cast<uint16_t>(port)};
10
27
  }
11

            
12
11
  return address;
13
38
}
14
} // namespace
15

            
16
EnvoyQuicServerPreferredAddressConfig::Addresses
17
ServerPreferredAddressConfig::getServerPreferredAddresses(
18
19
    const Network::Address::InstanceConstSharedPtr& local_address) {
19
19
  int32_t port = local_address->ip()->port();
20
19
  Addresses addresses;
21
19
  addresses.ipv4_ = ipOrAddressToAddress(v4_.spa_, port);
22
19
  addresses.ipv6_ = ipOrAddressToAddress(v6_.spa_, port);
23
19
  addresses.dnat_ipv4_ = quic::QuicSocketAddress(v4_.dnat_, port);
24
19
  addresses.dnat_ipv6_ = quic::QuicSocketAddress(v6_.dnat_, port);
25
19
  return addresses;
26
19
}
27

            
28
} // namespace Quic
29
} // namespace Envoy