1234567891011121314151617181920212223242526272829303132 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "chromecast/metrics/metrics_util.h"
- #include "base/logging.h"
- namespace chromecast {
- uint32_t GetIPAddressFragmentForLogging(const net::IPAddressBytes& sender_ip) {
- // Check if address is valid IPv4 or IPv6 byte array. If not then fill in
- // with zeros as a default value.
- if (sender_ip.size() != net::IPAddress::kIPv4AddressSize &&
- sender_ip.size() != net::IPAddress::kIPv6AddressSize) {
- DVLOG(1) << "Sender IP is not IPv4 or IPv6; zeroing out sender fragment.";
- return 0;
- }
- // Grab the last 2 bytes of sender IP address in network order and store as
- // packed 16-bit integer. The unused bits in the final packed value should
- // be empty.
- uint32_t packed_address = 0;
- if (sender_ip.size() >= 2) {
- int i = sender_ip.size() - 1;
- packed_address |= (sender_ip[i--]);
- packed_address |= (sender_ip[i--] << 8);
- }
- return packed_address;
- }
- } // namespace chromecast
|