LCOV - code coverage report
Current view: top level - libs/bsw/cpp2ethernet/src/ip - NetworkInterfaceConfig.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 38 38
Test Date: 2026-02-24 11:21:15 Functions: 100.0 % 8 8

            Line data    Source code
       1              : // Copyright 2025 Accenture.
       2              : 
       3              : #include "ip/NetworkInterfaceConfig.h"
       4              : 
       5              : namespace ip
       6              : {
       7              : uint8_t const IPADDRESS_INDEX      = 0U;
       8              : uint8_t const NETWORKMASK_INDEX    = 1U;
       9              : uint8_t const DEFAULTGATEWAY_INDEX = 2U;
      10              : 
      11          224 : NetworkInterfaceConfig::NetworkInterfaceConfig() : _config(), _family(IPAddress::FAMILY_UNKNOWN) {}
      12              : 
      13           36 : NetworkInterfaceConfig::NetworkInterfaceConfig(
      14           36 :     uint32_t const ip4Address, uint32_t const networkMask, uint32_t const defaultGateway)
      15           36 : : _family(IPAddress::IPV4)
      16              : {
      17           36 :     uint8_t const freeIndex = 3U;
      18              : 
      19           36 :     _config[IPADDRESS_INDEX]      = ip4Address;
      20           36 :     _config[NETWORKMASK_INDEX]    = networkMask;
      21           36 :     _config[DEFAULTGATEWAY_INDEX] = defaultGateway;
      22           36 :     _config[freeIndex]            = 0U;
      23           36 : }
      24              : 
      25           22 : NetworkInterfaceConfig::NetworkInterfaceConfig(Ip6AddressType const& ip6Address)
      26           22 : : _family(IPAddress::IPV6)
      27              : {
      28           22 :     _config[0U] = ip6Address[0];
      29           22 :     _config[1U] = ip6Address[1];
      30           22 :     _config[2U] = ip6Address[2];
      31           22 :     _config[3U] = ip6Address[3];
      32           22 : }
      33              : 
      34          109 : IPAddress NetworkInterfaceConfig::ipAddress() const
      35              : {
      36          109 :     if (_family == IPAddress::IPV4)
      37              :     {
      38           77 :         return make_ip4(_config[IPADDRESS_INDEX]);
      39              :     }
      40              : #ifndef OPENBSW_NO_IPV6
      41           32 :     if (_family == IPAddress::IPV6)
      42              :     {
      43           11 :         return make_ip6(&_config[0U]);
      44              :     }
      45              : #endif
      46              : 
      47           21 :     return IPAddress();
      48              : }
      49              : 
      50           10 : IPAddress NetworkInterfaceConfig::networkMask() const
      51              : {
      52           10 :     if (_family == IPAddress::IPV4)
      53              :     {
      54            3 :         return make_ip4(_config[NETWORKMASK_INDEX]);
      55              :     }
      56              : 
      57            7 :     return IPAddress();
      58              : }
      59              : 
      60           10 : IPAddress NetworkInterfaceConfig::defaultGateway() const
      61              : {
      62           10 :     if (_family == IPAddress::IPV4)
      63              :     {
      64            3 :         return make_ip4(_config[DEFAULTGATEWAY_INDEX]);
      65              :     }
      66              : 
      67            7 :     return IPAddress();
      68              : }
      69              : 
      70           57 : IPAddress NetworkInterfaceConfig::broadcastAddress() const
      71              : {
      72           57 :     if (_family == IPAddress::IPV4)
      73              :     {
      74           62 :         return make_ip4(
      75           31 :             _config[IPADDRESS_INDEX] | (static_cast<uint32_t>(~_config[NETWORKMASK_INDEX])));
      76              :     }
      77              : 
      78           26 :     return IPAddress();
      79              : }
      80              : 
      81           22 : bool operator==(NetworkInterfaceConfig const& lhs, NetworkInterfaceConfig const& rhs)
      82              : {
      83           22 :     return (lhs._family == rhs._family) && (lhs._config == rhs._config);
      84              : }
      85              : 
      86              : } // namespace ip
        

Generated by: LCOV version 2.0-1