diff --git a/rtc_base/asyncpacketsocket.cc b/rtc_base/asyncpacketsocket.cc index e1b1eae6a3..2360e82a30 100644 --- a/rtc_base/asyncpacketsocket.cc +++ b/rtc_base/asyncpacketsocket.cc @@ -9,6 +9,7 @@ */ #include "rtc_base/asyncpacketsocket.h" +#include "rtc_base/nethelper.h" namespace rtc { @@ -33,6 +34,12 @@ void CopySocketInformationToPacketInfo(size_t packet_size_bytes, bool is_connectionless, rtc::PacketInfo* info) { info->packet_size_bytes = packet_size_bytes; + // TODO(srte): Make sure that the family of the local socket is always set + // in the VirtualSocket implementation and remove this check. + int family = socket_from.GetLocalAddress().family(); + if (family != 0) { + info->ip_overhead_bytes = cricket::GetIpOverhead(family); + } info->local_socket_address = socket_from.GetLocalAddress(); if (!is_connectionless) { info->remote_socket_address = socket_from.GetRemoteAddress(); diff --git a/rtc_base/socket.h b/rtc_base/socket.h index 2520f34700..b634555aa5 100644 --- a/rtc_base/socket.h +++ b/rtc_base/socket.h @@ -153,6 +153,7 @@ struct PacketInfo { absl::optional network_id; size_t packet_size_bytes = 0; size_t turn_overhead_bytes = 0; + size_t ip_overhead_bytes = 0; SocketAddress local_socket_address; SocketAddress remote_socket_address; };