LCOV - code coverage report
Current view: top level - bgp/tunnel_encap - tunnel_encap.cc (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 31 32 96.9 %
Date: 2026-06-18 01:51:13 Functions: 6 6 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #include "bgp/tunnel_encap/tunnel_encap.h"
       6             : 
       7             : 
       8             : #include <algorithm>
       9             : #include <sstream>
      10             : 
      11             : 
      12             : using std::copy;
      13             : using std::fill;
      14             : using std::string;
      15             : 
      16       61237 : TunnelEncap::TunnelEncap(string encap) {
      17       61237 :     fill(data_.begin(), data_.end(), 0);
      18       61237 :     TunnelEncapType::Encap id = TunnelEncapType::TunnelEncapFromString(encap);
      19       61236 :     if (id == TunnelEncapType::UNSPEC) return;
      20       61235 :     data_[0] = 0x03;
      21       61235 :     data_[1] = 0x0C;
      22             :     // Reserved
      23       61235 :     put_value(&data_[2], 4, 0);
      24       61235 :     put_value(&data_[6], 2, id);
      25             : }
      26             : 
      27        4847 : TunnelEncap::TunnelEncap(TunnelEncapType::Encap tunnel_encap) {
      28        4847 :     fill(data_.begin(), data_.end(), 0);
      29        4847 :     data_[0] = 0x03;
      30        4847 :     data_[1] = 0x0C;
      31             :     // Reserved
      32        4847 :     put_value(&data_[2], 4, 0);
      33        4847 :     put_value(&data_[6], 2, tunnel_encap);
      34        4847 : }
      35             : 
      36      652477 : TunnelEncap::TunnelEncap(const bytes_type &data) {
      37      652477 :     copy(data.begin(), data.end(), data_.begin());
      38      652469 : }
      39             : 
      40     1161508 : TunnelEncapType::Encap TunnelEncap::tunnel_encap() const {
      41     1161508 :     if (data_[0] != 0x03 || data_[1] != 0x0c)
      42           3 :         return TunnelEncapType::UNSPEC;
      43     1161481 :     uint16_t value = get_value(&data_[6], 2);
      44     1161538 :     if (TunnelEncapType::TunnelEncapIsValid(value)) {
      45     1161315 :         return static_cast<TunnelEncapType::Encap>(value);
      46             :     } else {
      47           3 :         return TunnelEncapType::UNSPEC;
      48             :     }
      49             : }
      50             : 
      51        4262 : string TunnelEncap::ToString() {
      52        4262 :     string str("encapsulation:");
      53        4262 :     str += TunnelEncapType::TunnelEncapToString(tunnel_encap());
      54        4262 :     return str;
      55           0 : }
      56             : 
      57      477538 : string TunnelEncap::ToXmppString() {
      58      477538 :     return TunnelEncapType::TunnelEncapToXmppString(tunnel_encap());
      59             : }

Generated by: LCOV version 1.14