GithubHelp home page GithubHelp logo

facebook / fboss Goto Github PK

View Code? Open in Web Editor NEW
788.0 129.0 274.0 44.59 MB

Facebook Open Switching System Software for controlling network switches.

License: Other

C++ 97.57% Thrift 0.21% CMake 0.28% CSS 0.01% Shell 0.01% Python 1.92% C 0.01% Assembly 0.01%

fboss's Introduction

Facebook Open Switching System (FBOSS)

Support Ukraine

FBOSS is Facebook's software stack for controlling and managing network switches.

Components

FBOSS consists of a number of user-space applications, libraries, and utilities.

The initial open source release of FBOSS consists primarily of the agent daemon, but we are working on releasing additional pieces and functionality as well.

Agent Daemon

One of the central pieces of FBOSS is the agent daemon, which runs on each switch, and controls the hardware forwarding ASIC. The agent daemon sends forwarding information to the hardware, and implements some control plane protocols such as ARP and NDP. The agent provides thrift APIs for managing routes, to allow external routing control processes to get their routing information programmed into the hardware forwarding tables.

The code for the agent can be found in fboss/agent

The agent requires a JSON configuration file to specify its port and VLAN configuration. Some sample configuration files can be found under fboss/agent/configs. These files are not really intended for human consumption--at Facebook we have tooling that generates these files for us.

Routing Daemon

The FBOSS agent manages the forwarding tables in the hardware ASIC, but it needs to be informed of the current routes via thrift APIs.

Our initial open source release does not yet contain a routing protocol daemon capable of talking to the agent. The routing protocol daemon we use at Facebook is rather specific to our environment, and likely won't be as useful to the open source community. For more general use outside of Facebook, it should be possible to modify existing open source routing tools to talk to the FBOSS agent, but we have not implemented this yet. In the meantime, we have included a small sample python script in fboss/agent/tools that can manually add and remove routes.

Management Tools

Obviously additional tools and utilities are required for interacting with the FBOSS agent, reporting its status, generating configuration files, and debugging issues.

At the moment we do not have many of our tools ready for open source release, but we hope to make more of these available in the future weeks. In the meantime, the thrift compiler can automatically generate a python-remote script to allow manual invocation of the agent's various thrift interfaces.

Building

See the BUILD.md document for instructions on how to build FBOSS.

Future Development

FBOSS has been designed specifically to handle the needs of Facebook's data center networks, but we hope it can be useful for the wider community as well. However, note that this initial release of FBOSS will likely require modification and additional development to support other network configurations beyond the features used by Facebook. Until it matures more, FBOSS will likely be primarily of interest to network software developers, rather than to network administrators who are hoping to use it as an turnkey solution.

We look forward to getting feedback from the community, and we hope FBOSS can serve as a jumping-off point for other users wishing to program network switches.

FBOSS development is ongoing at Facebook, and we plan to continue releasing more components, additional features, and improvements to the existing tooling.

License

See LICENSE.

fboss's People

Contributors

aeckert avatar ahornby avatar amithash avatar binhuang00 avatar birdsoup avatar boryas avatar chadaustin avatar clement-cheung-fb avatar fanzeyi avatar harshitgulati18 avatar lukaspiatkowski avatar mikechoifb avatar msomasundaran avatar ninas avatar nivinl avatar phshaikh avatar rohitpuri0 avatar rskumaran-fb avatar saifhhasan avatar samankazemkhani avatar sas avatar schischi avatar shri-khare avatar simpkins avatar simuthus avatar surabhi236 avatar tfangit avatar wez avatar yfeldblum avatar zechengh09 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fboss's Issues

i2c_smbus_* not defined

Hi,

I'm attempting to compile fboss. I'm using Fedora 28.

[ 33%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/IPv6Handler.cpp.o
/home/bluecmd/fboss/fboss/agent/I2c.cpp: In member function ‘int facebook::fboss::I2cDevice::readBlock(int, uint8_t*)’:
/home/bluecmd/fboss/fboss/agent/I2c.cpp:42:13: error: ‘i2c_smbus_read_i2c_block_data’ was not declared in this scope
   auto rc = i2c_smbus_read_i2c_block_data(fd(), offset, I2C_BLOCK_SIZE,
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/bluecmd/fboss/fboss/agent/I2c.cpp:42:13: note: suggested alternative: ‘i2c_smbus_ioctl_data’
   auto rc = i2c_smbus_read_i2c_block_data(fd(), offset, I2C_BLOCK_SIZE,
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             i2c_smbus_ioctl_data
/home/bluecmd/fboss/fboss/agent/I2c.cpp: In member function ‘uint16_t facebook::fboss::I2cDevice::readWord(int)’:
/home/bluecmd/fboss/fboss/agent/I2c.cpp:51:15: error: ‘i2c_smbus_read_word_data’ was not declared in this scope
   auto data = i2c_smbus_read_word_data(fd(), offset);
               ^~~~~~~~~~~~~~~~~~~~~~~~
/home/bluecmd/fboss/fboss/agent/I2c.cpp:51:15: note: suggested alternative: ‘i2c_smbus_ioctl_data’
   auto data = i2c_smbus_read_word_data(fd(), offset);
               ^~~~~~~~~~~~~~~~~~~~~~~~
               i2c_smbus_ioctl_data
/home/bluecmd/fboss/fboss/agent/I2c.cpp: In member function ‘uint8_t facebook::fboss::I2cDevice::readByte(int)’:
/home/bluecmd/fboss/fboss/agent/I2c.cpp:59:15: error: ‘i2c_smbus_read_byte_data’ was not declared in this scope
   auto data = i2c_smbus_read_byte_data(fd(), offset);
               ^~~~~~~~~~~~~~~~~~~~~~~~
/home/bluecmd/fboss/fboss/agent/I2c.cpp:59:15: note: suggested alternative: ‘i2c_smbus_ioctl_data’
   auto data = i2c_smbus_read_byte_data(fd(), offset);
               ^~~~~~~~~~~~~~~~~~~~~~~~
               i2c_smbus_ioctl_data
/home/bluecmd/fboss/fboss/agent/I2c.cpp: In member function ‘void facebook::fboss::I2cDevice::read(int, int, uint8_t*)’:
/home/bluecmd/fboss/fboss/agent/I2c.cpp:71:10: error: ‘i2c_smbus_read_i2c_block_data’ was not declared in this scope
     rc = i2c_smbus_read_i2c_block_data(fd(), offset + i,
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/bluecmd/fboss/fboss/agent/I2c.cpp:71:10: note: suggested alternative: ‘i2c_smbus_ioctl_data’
     rc = i2c_smbus_read_i2c_block_data(fd(), offset + i,
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          i2c_smbus_ioctl_data
make[2]: *** [CMakeFiles/fboss_agent.dir/build.make:1090: CMakeFiles/fboss_agent.dir/fboss/agent/I2c.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:793: CMakeFiles/fboss_agent.dir/all] Error 2

I fixed this locally by installing libi2c-devel and patching like this:

diff --git a/fboss/agent/I2c.cpp b/fboss/agent/I2c.cpp
index d266afa..841f510 100644
--- a/fboss/agent/I2c.cpp
+++ b/fboss/agent/I2c.cpp
@@ -17,6 +17,7 @@ extern "C" {
 #include <sys/ioctl.h>
 #include <fcntl.h>
 #include <linux/i2c-dev.h>
+#include <i2c/smbus.h>
 }
 
 namespace facebook { namespace fboss {

I'm a bit confused why nobody seem to have reported this over the years, maybe it works differently on non-Fedora platforms.

fboss build failure

Hi

I am trying to build the FBOSS on the centos 7 server per README. Also installed dependencies.

export CPLUS_INCLUDE_PATH=/opt/rh/rh-python36/root/usr/include/python3.6m/
export PATH=/opt/rh/devtoolset-8/root/usr/bin/:/opt/rh/rh-python36/root/usr/bin:$PATH
sudo ./build/fbcode_builder/getdeps.py build fboss

/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/basic_string.h:3489:7: note: candidate expects 0 arguments, 3 provided
/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/basic_string.h: In instantiation of ‘struct std::basic_string<char, std::char_traits, folly::reentrant_allocator >::_Rep’:
/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/basic_string.h:3640:19: required from ‘std::basic_string<_CharT, _Traits, _Alloc>::~basic_string() [with _CharT = char; _Traits = std::char_traits; _Alloc = folly::reentrant_allocator]’
/tmp/fbcode_builder_getdeps-ZhomeZhabeebZfboss.gitZbuildZfbcode_builder-root/repos/github.com-facebook-folly.git/folly/experimental/symbolizer/ElfCache.h:68:52: required from here
/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/basic_string.h:3150:56: error: no class template named ‘rebind’ in ‘class folly::reentrant_allocator’
typedef typename _Alloc::template rebind::other _Raw_bytes_alloc;
^~~~~~~~~~~~~~~~
[5/201] Building CXX object CMakeFiles/folly_base.dir/folly/experimental/EnvUtil.cpp.o
[6/201] Building CXX object CMakeFiles/folly_base.dir/folly/executors/TimedDrivableExecutor.cpp.o
[7/201] Building CXX object CMakeFiles/folly_base.dir/folly/experimental/FunctionScheduler.cpp.o
[8/201] Building CXX object CMakeFiles/folly_base.dir/folly/experimental/DynamicParser.cpp.o
[9/201] Building CXX object CMakeFiles/folly_base.dir/folly/executors/SerialExecutor.cpp.o
[10/201] Building CXX object CMakeFiles/folly_base.dir/folly/executors/ThreadPoolExecutor.cpp.o
[11/201] Building CXX object CMakeFiles/folly_base.dir/folly/executors/TimekeeperScheduledExecutor.cpp.o
ninja: build stopped: subcommand failed.
Command '['/tmp/fbcode_builder_getdeps-ZhomeZhabeebZfboss.gitZbuildZfbcode_builder-root/installed/cmake-70sXSBX5BKHpcwdpi8LLyvIQG39LH3hh33Gr00Z-yWU/bin/cmake', '--build', '/tmp/fbcode_builder_getdeps-ZhomeZhabeebZfboss.gitZbuildZfbcode_builder-root/build/folly', '--target', 'install', '--config', 'Release', '-j', '8']' returned non-zero exit status 1.
!! Failed

Logging in qsfp_service

Hi,

I fail to see how folly is configuredi n qsfp_service. In wedge_agent there is:

FOLLY_INIT_LOGGING_CONFIG("fboss=DBG2; default:async=true");

but this seems to be omitted in qsfp_service. I've been unsuccessful in trying to make any useful log messages appear except the ones that use VLOG().

Exception in add route through fboss_route.py

There is an error during add route through the fboss script.

=================================================

Traceback (most recent call last):
File "fboss_route.py", line 18, in
from neteng.fboss.ctrl import FbossCtrl
ImportError: No module named neteng.fboss.ctrl

=================================================

Steps to reproduce:

  1. Start wedge_agent from sudo (# ./wedge_agent --config sample1.json)
  2. Change directory to './fboss/agent/tools'
  3. Start fboss_route.py (# python fboss_route.py add prefix=1.1.1.0/24 nexthop=10.1.1.1)

Reference documentation for FBOSS

Hi There, Can I find somewhere a reference documentation for FBOSS. I need to test FBOSS on Wedge 16x (40Gbps) switchs. Primarily, I'd love to find a reference documentation for fboss_wedge_agent configuration JSON input file.

Problem of connecting transceivers with I2C bus

Hi,

I am now playing with Wedge and making a simple utility that checks status of transceivers through i2c-dev. To this end, I am using the CP2112 device driver which is supported from kernel v3.19. You can check this at http://lxr.free-electrons.com/source/drivers/hid/hid-cp2112.c?v=3.19. Of course, I am using kernel v3.19.

Then, using I2C-tools I can find devices that connected with I2C bus (i.e., i2c-1). The message is as below:
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- 2a -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- 74 -- 76 --

0x51 for FRU_EEPROM
0x74 for I2C Mux1
0x76 for I2C Mux2

As you might know, to establish the channel connecting to the transceiver#1, you first write a proper value (i.e., 0x02 for the mux1, 0x00 for the mux2) to the control register in I2C Muxes with the i2c_smbus_write_byte() defined in SMBus spec. However, this might not work for me. The transceiver is not presented at I2C bus (i.e., 0x50).

Anyone who tries this?

Test

Testing new settings

Build error after fixing the bugs in CMakeList.txt

[ 17%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/NeighborUpdater.cpp.o
/home/junhosuh/workspace/fboss/fboss/agent/NeighborUpdater.cpp: In destructor ‘virtual facebook::fboss::NeighborUpdater::~NeighborUpdater()’:
/home/junhosuh/workspace/fboss/fboss/agent/NeighborUpdater.cpp:156:37: error: no matching function for call to ‘std::vectorfolly::Future<folly::Unit >::push_back(std::remove_referencefolly::Future<void&>::type)’
stopTasks.push_back(std::move(f));
^
/home/junhosuh/workspace/fboss/fboss/agent/NeighborUpdater.cpp:156:37: note: candidates are:
In file included from /usr/include/c++/4.8/vector:64:0,
from /usr/include/c++/4.8/bits/random.h:34,
from /usr/include/c++/4.8/random:50,
from /usr/include/c++/4.8/bits/stl_algo.h:65,
from /usr/include/c++/4.8/algorithm:62,
from /usr/include/boost/container/detail/flat_tree.hpp:23,
from /usr/include/boost/container/flat_map.hpp:25,
from /home/junhosuh/workspace/fboss/fboss/agent/NeighborUpdater.h:12,
from /home/junhosuh/workspace/fboss/fboss/agent/NeighborUpdater.cpp:10:
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = folly::Futurefolly::Unit; _Alloc = std::allocatorfolly::Future<folly::Unit >; std::vector<_Tp, _Alloc>::value_type = folly::Futurefolly::Unit]
push_back(const value_type& __x)
^
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note: no known conversion for argument 1 from ‘std::remove_referencefolly::Future<void&>::type {aka folly::Future}’ to ‘const value_type& {aka const folly::Futurefolly::Unit&}’
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note: void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = folly::Futurefolly::Unit; _Alloc = std::allocatorfolly::Future<folly::Unit >; std::vector<_Tp, _Alloc>::value_type = folly::Futurefolly::Unit]
push_back(value_type&& __x)
^
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note: no known conversion for argument 1 from ‘std::remove_referencefolly::Future<void&>::type {aka folly::Future}’ to ‘std::vectorfolly::Future<folly::Unit >::value_type&& {aka folly::Futurefolly::Unit&&}’
make[2]: *** [CMakeFiles/fboss_agent.dir/fboss/agent/NeighborUpdater.cpp.o] Error 1
make[1]: *** [CMakeFiles/fboss_agent.dir/all] Error 2
make: *** [all] Error 2

How to build the utilities found in fboss/fboss/util/

Hi,

I follow the steps described in BUILD.md, the following three executable files can be generated in build/ folder:
wedge_agent,
qsfp_service,
agent_test

But there is no sim_agent as mentioned in BUILD.md.

There are utility codes in fboss/fboss/util/. Is there a document describing how to build those utilities?

Thanks in advance.

Lewis

fboss_route.py error

I am getting the following error when i followed the instructions in Readme.md
[email protected]:~/git/fboss/fboss/agent/tools$ python fboss_route.py host add 172.31.0.0/24 172.16.1.1
Traceback (most recent call last):
File "fboss_route.py", line 19, in
from neteng.fboss.ctrl import FbossCtrl
File "/home/osboxes/git/fboss/buiild/gen/fboss/agent/if/gen-py/neteng/fboss/ctrl/FbossCtrl.py", line 10, in
from thrift.util.Recursive import fix_spec
ImportError: No module named util.Recursive

issues on porting FBOSS to an OpenNSL supported platform

Hi,

I try to run agent on an AS6812-32X switch which is running ONL (Open Network Linux).

Firstly, I link fboss_agent with the opennsl.so that works for AS6812-32X and build wedge_agent executable.

Secondly, I install all wedge_agent needed libraries (such as folly, glog, gflags,...) onto the switch.

Thirdly, I configure the switch to have more than 64 ports during opennsl driver initialization so as to use the /etc/fboss/sample1.json (got from fboss/agent/configs/sample1.json) configuration directly.

Then I run wedge_agent -mgmt_if=ma1 -can_warm_boot=false -mode=wedge -config=/etc/fboss/sample1.json, the console prints out the following two kinds of errors:

E0101 01:05:35.657263 2394 WedgeProductInfo.cpp:131] json parse error on line 0: expected json value
E0101 01:05:35.658212 2394 WedgeProductInfo.cpp:66] json parse error on line 0: expected json value

E0101 02:11:02.600317 4870 WedgePort.cpp:104] Error retrieving info for transceiver 0 Exception: apache::thrift::transport::TTransportException: AsyncSocketException: connect failed, type = Socket not open, errno = 111 (Connection refused): Connection refused
E0101 02:11:02.618465 4870 WedgePort.cpp:104] Error retrieving info for transceiver 0 Exception: apache::thrift::transport::TTransportException: AsyncSocketException: connect failed, type = Socket not open, errno = 111 (Connection refused): Connection refused


Could someone give me a guidance on fixing the above two errors?

By the way, is there a porting guide for us to follow for porting FBOSS to a new platform?

Thanks in advance.

-Lewis

compile fboss fail:fboss/agent/hw/bcm/BcmHostKey.cpp.o' failed

i try to complie fboss,but i get fail, like this:
someone can help me ?

All-Series:/fboss$ git pull
Updating 7c538af..3ea43ee
Fast-forward
CMakeLists.txt | 19 +++++++++++------
fboss/agent/ApplyThriftConfig.cpp | 10 +++++++++
fboss/agent/SwSwitch.cpp | 22 ++++++++++++-------
fboss/agent/TunManager.cpp | 5 +++++
fboss/agent/TunManager.h | 7 +++++-
fboss/agent/hw/bcm/BcmHost.cpp | 2 +-
fboss/agent/hw/bcm/BcmHostKey.cpp | 2 +-
fboss/agent/hw/bcm/BcmHostKey.h | 10 ++++-----
fboss/agent/hw/bcm/BcmIntf.cpp | 14 +++++++++---
fboss/agent/hw/bcm/BcmIntf.h | 23 ++++++++++++++++----
fboss/agent/hw/bcm/BcmLabeledEgress.h | 8 +++++--
fboss/agent/hw/bcm/BcmLabeledTunnel.cpp | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
fboss/agent/hw/bcm/BcmLabeledTunnel.h | 50 +++++++++++++++++++++++++++++++++++++++++++
fboss/agent/hw/bcm/BcmLabeledTunnelEgress.cpp | 34 +++++++++++++++++++++++++++++
fboss/agent/hw/bcm/BcmLabeledTunnelEgress.h | 37 ++++++++++++++++++++++++++++++++
fboss/agent/hw/bcm/BcmSwitch.cpp | 1 +
fboss/agent/hw/bcm/oss/BcmLabeledEgress.cpp | 21 ++++++++++++++++++
fboss/agent/hw/bcm/oss/BcmLabeledTunnel.cpp | 10 +++++++++
fboss/agent/hw/bcm/oss/BcmLabeledTunnelEgress.cpp | 16 ++++++++++++++
fboss/agent/hw/bcm/tests/BcmHostKeyTests.cpp | 8 +++----
fboss/agent/hw/sai/fake/FakeSaiSwitch.cpp | 14 ++++++++++++
fboss/agent/hw/sai/fake/FakeSaiSwitch.h | 8 +++++++
fboss/agent/hw/sai/switch/SaiFdbManager.cpp | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
fboss/agent/hw/sai/switch/SaiFdbManager.h | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
fboss/agent/hw/sai/switch/SaiManagerTable.cpp | 23 ++++++++++++++++++++
fboss/agent/hw/sai/switch/SaiManagerTable.h | 10 +++++++++
fboss/agent/hw/sai/switch/SaiNeighborManager.cpp | 16 ++++++++++----
fboss/agent/hw/sai/switch/SaiNeighborManager.h | 6 +++++-
fboss/agent/if/mpls.thrift | 7 ++++++
fboss/agent/switch_config.thrift | 32 ++++++++++++++++++++++++++++
fboss/agent/test/MockTunManager.h | 1 +
fboss/agent/test/RoutingTest.cpp | 2 +-
fboss/agent/test/TestUtils.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------
fboss/agent/test/TestUtils.h | 11 ++++++++--
fboss/agent/test/TunInterfaceTest.cpp | 37 ++++++++++++++++++++++++++++++++
35 files changed, 712 insertions(+), 96 deletions(-)
create mode 100644 fboss/agent/hw/bcm/BcmLabeledTunnel.cpp
create mode 100644 fboss/agent/hw/bcm/BcmLabeledTunnel.h
create mode 100644 fboss/agent/hw/bcm/BcmLabeledTunnelEgress.cpp
create mode 100644 fboss/agent/hw/bcm/BcmLabeledTunnelEgress.h
create mode 100644 fboss/agent/hw/bcm/oss/BcmLabeledEgress.cpp
create mode 100644 fboss/agent/hw/bcm/oss/BcmLabeledTunnel.cpp
create mode 100644 fboss/agent/hw/bcm/oss/BcmLabeledTunnelEgress.cpp
create mode 100644 fboss/agent/hw/sai/switch/SaiFdbManager.cpp
create mode 100644 fboss/agent/hw/sai/switch/SaiFdbManager.h
create mode 100644 fboss/agent/test/TunInterfaceTest.cpp
All-Series:
/fboss$
All-Series:/fboss$ cd build/
All-Series:
/fboss/build$ cmake ..
-- Found folly: /usr/local
-- Found fizz: /usr/local
-- Found wangle: /usr/local
-- Found FBThrift: /usr/local
-- Configuring done
CMake Warning (dev) at CMakeLists.txt:591 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "agent_test" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:591 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "agent_test" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:572 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "wedge_qsfp_util" links to target "yarpl::yarpl" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:572 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "wedge_qsfp_util" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:567 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "cp2112_util" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:567 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "cp2112_util" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:245 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "bcm_test" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:245 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "bcm_test" links to target "rsocket::ReactiveSocket" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:229 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "qsfp_service" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:229 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "qsfp_service" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:211 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "wedge_agent" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:211 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "wedge_agent" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "netlink_manager_service_cpp2" links to target "yarpl::yarpl" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:186 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "netlink_manager_service_cpp2" links to target
"rsocket::ReactiveSocket" but the target was not found. Perhaps a
find_package() call is missing for an IMPORTED target, or an ALIAS target
is missing?
Call Stack (most recent call first):
CMakeLists.txt:186 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "hardware_stats_cpp2" links to target "yarpl::yarpl" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:162 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "hardware_stats_cpp2" links to target "rsocket::ReactiveSocket" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:162 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "switch_config_cpp2" links to target "yarpl::yarpl" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:64 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "switch_config_cpp2" links to target "rsocket::ReactiveSocket" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:64 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "fboss_cpp2" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:117 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "fboss_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:117 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "ctrl_cpp2" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:125 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "ctrl_cpp2" links to target "rsocket::ReactiveSocket" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:125 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "qsfp_cpp2" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:173 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "qsfp_cpp2" links to target "rsocket::ReactiveSocket" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:173 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "platform_config_cpp2" links to target "yarpl::yarpl" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:81 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "platform_config_cpp2" links to target "rsocket::ReactiveSocket" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:81 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "bcmswitch_cpp2" links to target "yarpl::yarpl" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:158 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "bcmswitch_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:158 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "agent_config_cpp2" links to target "yarpl::yarpl" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:72 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "agent_config_cpp2" links to target "rsocket::ReactiveSocket" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:72 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "fb303_cpp2" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:48 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "fb303_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:48 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "transceiver_cpp2" links to target "yarpl::yarpl" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:107 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "transceiver_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:107 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "network_address_cpp2" links to target "yarpl::yarpl" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:54 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "network_address_cpp2" links to target "rsocket::ReactiveSocket" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:54 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:276 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "fboss_agent" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:276 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "fboss_agent" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "pcap_pubsub_cpp2" links to target "yarpl::yarpl" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:166 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "pcap_pubsub_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:166 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "switch_state_cpp2" links to target "yarpl::yarpl" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:90 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "switch_state_cpp2" links to target "rsocket::ReactiveSocket" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:90 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "optic_cpp2" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:111 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "optic_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:111 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "external_phy_cpp2" links to target "yarpl::yarpl" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:99 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "external_phy_cpp2" links to target "rsocket::ReactiveSocket" but
the target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:99 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "mpls_cpp2" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:58 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "mpls_cpp2" links to target "rsocket::ReactiveSocket" but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:58 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "sflow_cpp2" links to target "yarpl::yarpl" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:121 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "sflow_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:121 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:220 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "netlink_manager" links to target "yarpl::yarpl" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:220 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "netlink_manager" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "sim_ctrl_cpp2" links to target "yarpl::yarpl" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:139 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "sim_ctrl_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:139 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "bcm_config_cpp2" links to target "yarpl::yarpl" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:148 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "bcm_config_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:148 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "packettrace_cpp2" links to target "yarpl::yarpl" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:154 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning (dev) at ThriftCppLibrary.cmake:94 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "packettrace_cpp2" links to target "rsocket::ReactiveSocket" but the
target was not found. Perhaps a find_package() call is missing for an
IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:154 (add_thrift_cpp2_library)
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Warning at CMakeLists.txt:591 (add_executable):
Cannot generate a safe runtime search path for target agent_test because
files in some directories may conflict with libraries in implicit
directories:

runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /usr/local/lib

Some of these libraries may not be found correctly.

CMake Warning at CMakeLists.txt:572 (add_executable):
Cannot generate a safe runtime search path for target wedge_qsfp_util
because files in some directories may conflict with libraries in implicit
directories:

runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /usr/local/lib

Some of these libraries may not be found correctly.

CMake Warning at CMakeLists.txt:567 (add_executable):
Cannot generate a safe runtime search path for target cp2112_util because
files in some directories may conflict with libraries in implicit
directories:

runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /usr/local/lib

Some of these libraries may not be found correctly.

CMake Warning at CMakeLists.txt:245 (add_executable):
Cannot generate a safe runtime search path for target bcm_test because
files in some directories may conflict with libraries in implicit
directories:

runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /usr/local/lib

Some of these libraries may not be found correctly.

CMake Warning at CMakeLists.txt:229 (add_executable):
Cannot generate a safe runtime search path for target qsfp_service because
files in some directories may conflict with libraries in implicit
directories:

runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /usr/local/lib

Some of these libraries may not be found correctly.

CMake Warning at CMakeLists.txt:211 (add_executable):
Cannot generate a safe runtime search path for target wedge_agent because
files in some directories may conflict with libraries in implicit
directories:

runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /usr/local/lib

Some of these libraries may not be found correctly.

CMake Warning at CMakeLists.txt:220 (add_executable):
Cannot generate a safe runtime search path for target netlink_manager
because files in some directories may conflict with libraries in implicit
directories:

runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /usr/local/lib

Some of these libraries may not be found correctly.

-- Generating done
-- Build files have been written to: /home/wukuncan/fboss/build
All-Series:/fboss/build$ cd ..
All-Series:
/fboss$ cd build/
All-Series:~/fboss/build$ make
[ 0%] Built target gtest
[ 0%] Generating fboss/agent/if/gen-cpp2/mpls_constants.h, fboss/agent/if/gen-cpp2/mpls_constants.cpp, fboss/agent/if/gen-cpp2/mpls_types.h, fboss/agent/if/gen-cpp2/mpls_types.tcc, fboss/agent/if/gen-cpp2/mpls_types_custom_protocol.h, fboss/agent/if/gen-cpp2/mpls_data.h, fboss/agent/if/gen-cpp2/mpls_data.cpp, fboss/agent/if/gen-cpp2/mpls_types.cpp
Scanning dependencies of target mpls_cpp2
[ 0%] Building CXX object CMakeFiles/mpls_cpp2.dir/fboss/agent/if/gen-cpp2/mpls_data.cpp.o
[ 0%] Building CXX object CMakeFiles/mpls_cpp2.dir/fboss/agent/if/gen-cpp2/mpls_types.cpp.o
[ 0%] Linking CXX static library libmpls_cpp2.a
[ 0%] Built target mpls_cpp2
[ 1%] Built target fboss_cpp2
[ 3%] Built target fb303_cpp2
Scanning dependencies of target transceiver_cpp2
[ 3%] Linking CXX static library libtransceiver_cpp2.a
[ 4%] Built target transceiver_cpp2
[ 5%] Built target network_address_cpp2
[ 5%] Generating fboss/agent/if/gen-cpp2/optic_constants.h, fboss/agent/if/gen-cpp2/optic_constants.cpp, fboss/agent/if/gen-cpp2/optic_types.h, fboss/agent/if/gen-cpp2/optic_types.tcc, fboss/agent/if/gen-cpp2/optic_types_custom_protocol.h, fboss/agent/if/gen-cpp2/optic_data.h, fboss/agent/if/gen-cpp2/optic_data.cpp, fboss/agent/if/gen-cpp2/optic_types.cpp
Scanning dependencies of target optic_cpp2
[ 5%] Building CXX object CMakeFiles/optic_cpp2.dir/fboss/agent/if/gen-cpp2/optic_data.cpp.o
[ 6%] Building CXX object CMakeFiles/optic_cpp2.dir/fboss/agent/if/gen-cpp2/optic_types.cpp.o
[ 6%] Linking CXX static library liboptic_cpp2.a
[ 6%] Built target optic_cpp2
[ 6%] Generating fboss/agent/if/gen-cpp2/ctrl_constants.h, fboss/agent/if/gen-cpp2/ctrl_constants.cpp, fboss/agent/if/gen-cpp2/ctrl_types.h, fboss/agent/if/gen-cpp2/ctrl_types.tcc, fboss/agent/if/gen-cpp2/ctrl_types_custom_protocol.h, fboss/agent/if/gen-cpp2/FbossCtrl.h, fboss/agent/if/gen-cpp2/FbossCtrl.tcc, fboss/agent/if/gen-cpp2/FbossCtrlAsyncClient.h, fboss/agent/if/gen-cpp2/FbossCtrl_custom_protocol.h, fboss/agent/if/gen-cpp2/NeighborListenerClient.h, fboss/agent/if/gen-cpp2/NeighborListenerClient.tcc, fboss/agent/if/gen-cpp2/NeighborListenerClientAsyncClient.h, fboss/agent/if/gen-cpp2/NeighborListenerClient_custom_protocol.h, fboss/agent/if/gen-cpp2/ctrl_data.h, fboss/agent/if/gen-cpp2/ctrl_data.cpp, fboss/agent/if/gen-cpp2/ctrl_types.cpp, fboss/agent/if/gen-cpp2/FbossCtrl.cpp, fboss/agent/if/gen-cpp2/FbossCtrlAsyncClient.cpp, fboss/agent/if/gen-cpp2/FbossCtrl_processmap_binary.cpp, fboss/agent/if/gen-cpp2/FbossCtrl_processmap_compact.cpp, fboss/agent/if/gen-cpp2/NeighborListenerClient.cpp, fboss/agent/if/gen-cpp2/NeighborListenerClientAsyncClient.cpp, fboss/agent/if/gen-cpp2/NeighborListenerClient_processmap_binary.cpp, fboss/agent/if/gen-cpp2/NeighborListenerClient_processmap_compact.cpp
[WARNING:/home/wukuncan/fboss/common/fb303/if/fb303.thrift:19] Uncaptured doctext at on line 17.
Scanning dependencies of target ctrl_cpp2
[ 6%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/ctrl_data.cpp.o
[ 6%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/ctrl_types.cpp.o
[ 7%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/FbossCtrl.cpp.o
[ 7%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/FbossCtrlAsyncClient.cpp.o
[ 7%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/FbossCtrl_processmap_binary.cpp.o
[ 7%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/FbossCtrl_processmap_compact.cpp.o
[ 8%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/NeighborListenerClient.cpp.o
[ 8%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/NeighborListenerClientAsyncClient.cpp.o
[ 8%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/NeighborListenerClient_processmap_binary.cpp.o
[ 8%] Building CXX object CMakeFiles/ctrl_cpp2.dir/fboss/agent/if/gen-cpp2/NeighborListenerClient_processmap_compact.cpp.o
[ 9%] Linking CXX static library libctrl_cpp2.a
[ 9%] Built target ctrl_cpp2
[ 9%] Generating fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_constants.h, fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_constants.cpp, fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_types.h, fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_types.tcc, fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_types_custom_protocol.h, fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService.h, fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService.tcc, fboss/netlink_manager/if/gen-cpp2/NetlinkManagerServiceAsyncClient.h, fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService_custom_protocol.h, fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_data.h, fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_data.cpp, fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_types.cpp, fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService.cpp, fboss/netlink_manager/if/gen-cpp2/NetlinkManagerServiceAsyncClient.cpp, fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService_processmap_binary.cpp, fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService_processmap_compact.cpp
[WARNING:/home/wukuncan/fboss/common/fb303/if/fb303.thrift:19] Uncaptured doctext at on line 17.
Scanning dependencies of target netlink_manager_service_cpp2
[ 10%] Building CXX object CMakeFiles/netlink_manager_service_cpp2.dir/fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_data.cpp.o
[ 10%] Building CXX object CMakeFiles/netlink_manager_service_cpp2.dir/fboss/netlink_manager/if/gen-cpp2/netlink_manager_service_types.cpp.o
[ 10%] Building CXX object CMakeFiles/netlink_manager_service_cpp2.dir/fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService.cpp.o
[ 10%] Building CXX object CMakeFiles/netlink_manager_service_cpp2.dir/fboss/netlink_manager/if/gen-cpp2/NetlinkManagerServiceAsyncClient.cpp.o
[ 11%] Building CXX object CMakeFiles/netlink_manager_service_cpp2.dir/fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService_processmap_binary.cpp.o
[ 11%] Building CXX object CMakeFiles/netlink_manager_service_cpp2.dir/fboss/netlink_manager/if/gen-cpp2/NetlinkManagerService_processmap_compact.cpp.o
[ 11%] Linking CXX static library libnetlink_manager_service_cpp2.a
[ 11%] Built target netlink_manager_service_cpp2
[ 12%] Built target hardware_stats_cpp2
[ 13%] Generating fboss/agent/gen-cpp2/switch_config_constants.h, fboss/agent/gen-cpp2/switch_config_constants.cpp, fboss/agent/gen-cpp2/switch_config_types.h, fboss/agent/gen-cpp2/switch_config_types.tcc, fboss/agent/gen-cpp2/switch_config_types_custom_protocol.h, fboss/agent/gen-cpp2/switch_config_data.h, fboss/agent/gen-cpp2/switch_config_data.cpp, fboss/agent/gen-cpp2/switch_config_types.cpp
Scanning dependencies of target switch_config_cpp2
[ 13%] Building CXX object CMakeFiles/switch_config_cpp2.dir/fboss/agent/gen-cpp2/switch_config_data.cpp.o
[ 13%] Building CXX object CMakeFiles/switch_config_cpp2.dir/fboss/agent/gen-cpp2/switch_config_types.cpp.o
[ 13%] Linking CXX static library libswitch_config_cpp2.a
[ 13%] Built target switch_config_cpp2
[ 14%] Generating fboss/qsfp_service/if/gen-cpp2/qsfp_constants.h, fboss/qsfp_service/if/gen-cpp2/qsfp_constants.cpp, fboss/qsfp_service/if/gen-cpp2/qsfp_types.h, fboss/qsfp_service/if/gen-cpp2/qsfp_types.tcc, fboss/qsfp_service/if/gen-cpp2/qsfp_types_custom_protocol.h, fboss/qsfp_service/if/gen-cpp2/QsfpService.h, fboss/qsfp_service/if/gen-cpp2/QsfpService.tcc, fboss/qsfp_service/if/gen-cpp2/QsfpServiceAsyncClient.h, fboss/qsfp_service/if/gen-cpp2/QsfpService_custom_protocol.h, fboss/qsfp_service/if/gen-cpp2/qsfp_data.h, fboss/qsfp_service/if/gen-cpp2/qsfp_data.cpp, fboss/qsfp_service/if/gen-cpp2/qsfp_types.cpp, fboss/qsfp_service/if/gen-cpp2/QsfpService.cpp, fboss/qsfp_service/if/gen-cpp2/QsfpServiceAsyncClient.cpp, fboss/qsfp_service/if/gen-cpp2/QsfpService_processmap_binary.cpp, fboss/qsfp_service/if/gen-cpp2/QsfpService_processmap_compact.cpp
[WARNING:/home/wukuncan/fboss/common/fb303/if/fb303.thrift:19] Uncaptured doctext at on line 17.
Scanning dependencies of target qsfp_cpp2
[ 14%] Building CXX object CMakeFiles/qsfp_cpp2.dir/fboss/qsfp_service/if/gen-cpp2/qsfp_data.cpp.o
[ 14%] Building CXX object CMakeFiles/qsfp_cpp2.dir/fboss/qsfp_service/if/gen-cpp2/qsfp_types.cpp.o
[ 14%] Building CXX object CMakeFiles/qsfp_cpp2.dir/fboss/qsfp_service/if/gen-cpp2/QsfpService.cpp.o
[ 15%] Building CXX object CMakeFiles/qsfp_cpp2.dir/fboss/qsfp_service/if/gen-cpp2/QsfpServiceAsyncClient.cpp.o
[ 15%] Building CXX object CMakeFiles/qsfp_cpp2.dir/fboss/qsfp_service/if/gen-cpp2/QsfpService_processmap_binary.cpp.o
[ 15%] Building CXX object CMakeFiles/qsfp_cpp2.dir/fboss/qsfp_service/if/gen-cpp2/QsfpService_processmap_compact.cpp.o
[ 15%] Linking CXX static library libqsfp_cpp2.a
[ 15%] Built target qsfp_cpp2
[ 16%] Built target bcm_config_cpp2
[ 16%] Generating fboss/lib/phy/gen-cpp2/external_phy_constants.h, fboss/lib/phy/gen-cpp2/external_phy_constants.cpp, fboss/lib/phy/gen-cpp2/external_phy_types.h, fboss/lib/phy/gen-cpp2/external_phy_types.tcc, fboss/lib/phy/gen-cpp2/external_phy_types_custom_protocol.h, fboss/lib/phy/gen-cpp2/external_phy_data.h, fboss/lib/phy/gen-cpp2/external_phy_data.cpp, fboss/lib/phy/gen-cpp2/external_phy_types.cpp
Scanning dependencies of target external_phy_cpp2
[ 16%] Building CXX object CMakeFiles/external_phy_cpp2.dir/fboss/lib/phy/gen-cpp2/external_phy_data.cpp.o
[ 16%] Building CXX object CMakeFiles/external_phy_cpp2.dir/fboss/lib/phy/gen-cpp2/external_phy_types.cpp.o
[ 16%] Linking CXX static library libexternal_phy_cpp2.a
[ 16%] Built target external_phy_cpp2
[ 16%] Generating fboss/agent/gen-cpp2/platform_config_constants.h, fboss/agent/gen-cpp2/platform_config_constants.cpp, fboss/agent/gen-cpp2/platform_config_types.h, fboss/agent/gen-cpp2/platform_config_types.tcc, fboss/agent/gen-cpp2/platform_config_types_custom_protocol.h, fboss/agent/gen-cpp2/platform_config_data.h, fboss/agent/gen-cpp2/platform_config_data.cpp, fboss/agent/gen-cpp2/platform_config_types.cpp
Scanning dependencies of target platform_config_cpp2
[ 16%] Building CXX object CMakeFiles/platform_config_cpp2.dir/fboss/agent/gen-cpp2/platform_config_data.cpp.o
[ 16%] Building CXX object CMakeFiles/platform_config_cpp2.dir/fboss/agent/gen-cpp2/platform_config_types.cpp.o
[ 16%] Linking CXX static library libplatform_config_cpp2.a
[ 16%] Built target platform_config_cpp2
[ 17%] Built target bcmswitch_cpp2
[ 17%] Generating fboss/agent/gen-cpp2/agent_config_constants.h, fboss/agent/gen-cpp2/agent_config_constants.cpp, fboss/agent/gen-cpp2/agent_config_types.h, fboss/agent/gen-cpp2/agent_config_types.tcc, fboss/agent/gen-cpp2/agent_config_types_custom_protocol.h, fboss/agent/gen-cpp2/agent_config_data.h, fboss/agent/gen-cpp2/agent_config_data.cpp, fboss/agent/gen-cpp2/agent_config_types.cpp
Scanning dependencies of target agent_config_cpp2
[ 17%] Building CXX object CMakeFiles/agent_config_cpp2.dir/fboss/agent/gen-cpp2/agent_config_data.cpp.o
[ 17%] Building CXX object CMakeFiles/agent_config_cpp2.dir/fboss/agent/gen-cpp2/agent_config_types.cpp.o
[ 17%] Linking CXX static library libagent_config_cpp2.a
[ 17%] Built target agent_config_cpp2
[ 18%] Built target packettrace_cpp2
[ 21%] Built target pcap_pubsub_cpp2
[ 22%] Generating fboss/agent/gen-cpp2/switch_state_constants.h, fboss/agent/gen-cpp2/switch_state_constants.cpp, fboss/agent/gen-cpp2/switch_state_types.h, fboss/agent/gen-cpp2/switch_state_types.tcc, fboss/agent/gen-cpp2/switch_state_types_custom_protocol.h, fboss/agent/gen-cpp2/switch_state_data.h, fboss/agent/gen-cpp2/switch_state_data.cpp, fboss/agent/gen-cpp2/switch_state_types.cpp
Scanning dependencies of target switch_state_cpp2
[ 22%] Building CXX object CMakeFiles/switch_state_cpp2.dir/fboss/agent/gen-cpp2/switch_state_data.cpp.o
[ 22%] Building CXX object CMakeFiles/switch_state_cpp2.dir/fboss/agent/gen-cpp2/switch_state_types.cpp.o
[ 22%] Linking CXX static library libswitch_state_cpp2.a
[ 22%] Built target switch_state_cpp2
[ 23%] Built target sflow_cpp2
[ 23%] Generating fboss/agent/hw/sim/gen-cpp2/sim_ctrl_constants.h, fboss/agent/hw/sim/gen-cpp2/sim_ctrl_constants.cpp, fboss/agent/hw/sim/gen-cpp2/sim_ctrl_types.h, fboss/agent/hw/sim/gen-cpp2/sim_ctrl_types.tcc, fboss/agent/hw/sim/gen-cpp2/sim_ctrl_types_custom_protocol.h, fboss/agent/hw/sim/gen-cpp2/SimCtrl.h, fboss/agent/hw/sim/gen-cpp2/SimCtrl.tcc, fboss/agent/hw/sim/gen-cpp2/SimCtrlAsyncClient.h, fboss/agent/hw/sim/gen-cpp2/SimCtrl_custom_protocol.h, fboss/agent/hw/sim/gen-cpp2/sim_ctrl_data.h, fboss/agent/hw/sim/gen-cpp2/sim_ctrl_data.cpp, fboss/agent/hw/sim/gen-cpp2/sim_ctrl_types.cpp, fboss/agent/hw/sim/gen-cpp2/SimCtrl.cpp, fboss/agent/hw/sim/gen-cpp2/SimCtrlAsyncClient.cpp, fboss/agent/hw/sim/gen-cpp2/SimCtrl_processmap_binary.cpp, fboss/agent/hw/sim/gen-cpp2/SimCtrl_processmap_compact.cpp
[WARNING:/home/wukuncan/fboss/common/fb303/if/fb303.thrift:19] Uncaptured doctext at on line 17.
Scanning dependencies of target sim_ctrl_cpp2
[ 23%] Building CXX object CMakeFiles/sim_ctrl_cpp2.dir/fboss/agent/hw/sim/gen-cpp2/sim_ctrl_data.cpp.o
[ 23%] Building CXX object CMakeFiles/sim_ctrl_cpp2.dir/fboss/agent/hw/sim/gen-cpp2/sim_ctrl_types.cpp.o
[ 23%] Building CXX object CMakeFiles/sim_ctrl_cpp2.dir/fboss/agent/hw/sim/gen-cpp2/SimCtrl.cpp.o
[ 24%] Building CXX object CMakeFiles/sim_ctrl_cpp2.dir/fboss/agent/hw/sim/gen-cpp2/SimCtrlAsyncClient.cpp.o
[ 24%] Building CXX object CMakeFiles/sim_ctrl_cpp2.dir/fboss/agent/hw/sim/gen-cpp2/SimCtrl_processmap_binary.cpp.o
[ 24%] Building CXX object CMakeFiles/sim_ctrl_cpp2.dir/fboss/agent/hw/sim/gen-cpp2/SimCtrl_processmap_compact.cpp.o
[ 24%] Linking CXX static library libsim_ctrl_cpp2.a
[ 24%] Built target sim_ctrl_cpp2
Scanning dependencies of target fboss_agent
[ 24%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/AgentConfig.cpp.o
[ 24%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/AlpmUtils.cpp.o
[ 24%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/ApplyThriftConfig.cpp.o
[ 25%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/ArpCache.cpp.o
[ 25%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/ArpHandler.cpp.o
[ 25%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/capture/PcapFile.cpp.o
[ 25%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/capture/PcapPkt.cpp.o
[ 25%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/capture/PcapQueue.cpp.o
[ 26%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/capture/PcapWriter.cpp.o
[ 26%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/capture/PktCapture.cpp.o
[ 26%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/capture/PktCaptureManager.cpp.o
[ 26%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/DHCPv4Handler.cpp.o
[ 27%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/DHCPv6Handler.cpp.o
[ 27%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmAclTable.cpp.o
[ 27%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmAPI.cpp.o
[ 28%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmConfig.cpp.o
[ 28%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmControlPlaneQueueManager.cpp.o
[ 28%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmCosQueueManager.cpp.o
[ 28%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmEgress.cpp.o
[ 28%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmHost.cpp.o
[ 29%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmHostKey.cpp.o
In file included from /usr/local/include/folly/Expected.h:34:0,
from /usr/local/include/folly/dynamic.h:65,
from /home/wukuncan/fboss/fboss/agent/state/RouteNextHop.h:12,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:16,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:10:
/usr/local/include/folly/Optional.h: In instantiation of ‘constexpr bool folly::operator!=(const folly::Optional&, const folly::Optional&) [with U = facebook::fboss::InterfaceID; V = facebook::fboss::InterfaceID]’:
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:50:37: required from here
/usr/local/include/folly/Optional.h:508:14: error: ambiguous overload for ‘operator==’ (operand types are ‘const folly::Optionalfacebook::fboss::InterfaceID’ and ‘const folly::Optionalfacebook::fboss::InterfaceID’)
return !(a == b);
~~~^~~~~
/usr/local/include/folly/Optional.h:496:16: note: candidate: constexpr bool folly::operator==(const folly::Optional&, const folly::Optional&) [with U = facebook::fboss::InterfaceID; V = facebook::fboss::InterfaceID]
constexpr bool operator==(const Optional& a, const Optional& b) {
^~~~~~~~
/usr/local/include/folly/Optional.h:486:16: note: candidate: constexpr bool folly::operator==(const U&, const folly::Optional&) [with U = folly::Optionalfacebook::fboss::InterfaceID; V = facebook::fboss::InterfaceID]
constexpr bool operator==(const U& a, const Optional& b) {
^~~~~~~~
/usr/local/include/folly/Optional.h:476:16: note: candidate: constexpr bool folly::operator==(const folly::Optional&, const V&) [with U = facebook::fboss::InterfaceID; V = folly::Optionalfacebook::fboss::InterfaceID]
constexpr bool operator==(const Optional& a, const V& b) {
^~~~~~~~
In file included from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:10:0:
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:59:17: note: candidate: bool facebook::fboss::operator==(const SelfType&, const SelfType&) [with SelfType = folly::Optionalfacebook::fboss::InterfaceID; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]
friend bool operator==(SelfType const& lhs, SelfType const& rhs);
^~~~~~~~
In file included from /usr/local/include/folly/Poly.h:51:0,
from /home/wukuncan/fboss/fboss/agent/state/RouteNextHop.h:14,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:16,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:10:
/usr/local/include/folly/detail/PolyDetail.h: In instantiation of ‘decltype(auto) folly::detail::PolyNode<I, Tail>::polyCall(As&& ...) const [with long unsigned int K = 7; As = {const folly::detail::PolyValfacebook::fboss::IHostKey&}; I = facebook::fboss::IHostKey; Tail = folly::detail::PolyRootfacebook::fboss::IHostKey]’:
/usr/local/include/folly/detail/PolyDetail.h:720:15: required by substitution of ‘template<long unsigned int N, class This, class ... As> static decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) folly::detail::PolyAccess::call(This&&, As&& ...) [with long unsigned int N = 7; This = const folly::detail::PolyValfacebook::fboss::IHostKey&; As = {const folly::detail::PolyValfacebook::fboss::IHostKey&}]’
/usr/local/include/folly/Poly.h:237:44: required by substitution of ‘template<long unsigned int N, class This, class ... As> decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) folly::poly_call(This&&, As&& ...) [with long unsigned int N = 7; This = const folly::detail::PolyValfacebook::fboss::IHostKey&; As = {const folly::detail::PolyValfacebook::fboss::IHostKey&}]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:88:29: required from ‘bool facebook::fboss::operator==(const SelfType&, const SelfType&) [with SelfType = folly::detail::PolyValfacebook::fboss::IHostKey; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:64:16: required from ‘static bool facebook::fboss::IHostKey::eq(const T&, const T&) [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface
(int) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; I = facebook::fboss::IHostKey; U = folly::detail::PolyValfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyValfacebook::fboss::IHostKey&, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal(T&&) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:62:24: required from here
/usr/local/include/folly/detail/PolyDetail.h:799:62: error: could not convert ‘as#0’ from ‘const folly::detail::PolyValfacebook::fboss::IHostKey’ to ‘folly::Poly<const facebook::fboss::IHostKey&>’
return std::get(select(PolyAccess::vtable(this)))(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
PolyAccess::data(this), static_cast<As&&>(as)...);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp: In instantiation of ‘bool facebook::fboss::operator==(const SelfType&, const SelfType&) [with SelfType = folly::detail::PolyValfacebook::fboss::IHostKey; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’:
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:64:16: required from ‘static bool facebook::fboss::IHostKey::eq(const T&, const T&) [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface_(int) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; I = facebook::fboss::IHostKey; U = folly::detail::PolyValfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyValfacebook::fboss::IHostKey&, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal(T&&) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:62:24: required from here
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:88:38: error: void value not ignored as it ought to be
return folly::poly_call<7>(lhs, rhs);
^
In file included from /usr/local/include/folly/Poly.h:51:0,
from /home/wukuncan/fboss/fboss/agent/state/RouteNextHop.h:14,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:16,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:10:
/usr/local/include/folly/detail/PolyDetail.h: In instantiation of ‘decltype(auto) folly::detail::PolyNode<I, Tail>::polyCall(As&& ...) const [with long unsigned int K = 6; As = {const folly::detail::PolyValfacebook::fboss::IHostKey&}; I = facebook::fboss::IHostKey; Tail = folly::detail::PolyRootfacebook::fboss::IHostKey]’:
/usr/local/include/folly/detail/PolyDetail.h:720:15: required by substitution of ‘template<long unsigned int N, class This, class ... As> static decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) folly::detail::PolyAccess::call(This&&, As&& ...) [with long unsigned int N = 6; This = const folly::detail::PolyValfacebook::fboss::IHostKey&; As = {const folly::detail::PolyValfacebook::fboss::IHostKey&}]’
/usr/local/include/folly/Poly.h:237:44: required by substitution of ‘template<long unsigned int N, class This, class ... As> decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) folly::poly_call(This&&, As&& ...) [with long unsigned int N = 6; This = const folly::detail::PolyValfacebook::fboss::IHostKey&; As = {const folly::detail::PolyValfacebook::fboss::IHostKey&}]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:83:29: required from ‘bool facebook::fboss::operator<(const SelfType&, const SelfType&) [with SelfType = folly::detail::PolyValfacebook::fboss::IHostKey; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:69:16: required from ‘static bool facebook::fboss::IHostKey::lt(const T&, const T&) [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface
(int) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; I = facebook::fboss::IHostKey; U = folly::detail::PolyValfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyValfacebook::fboss::IHostKey&, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal(T&&) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:62:24: required from here
/usr/local/include/folly/detail/PolyDetail.h:799:62: error: could not convert ‘as#0’ from ‘const folly::detail::PolyValfacebook::fboss::IHostKey’ to ‘folly::Poly<const facebook::fboss::IHostKey&>’
return std::get(select(PolyAccess::vtable(this)))(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
PolyAccess::data(this), static_cast<As&&>(as)...);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp: In instantiation of ‘bool facebook::fboss::operator<(const SelfType&, const SelfType&) [with SelfType = folly::detail::PolyValfacebook::fboss::IHostKey; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’:
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:69:16: required from ‘static bool facebook::fboss::IHostKey::lt(const T&, const T&) [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface_(int) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; I = facebook::fboss::IHostKey; U = folly::detail::PolyValfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyValfacebook::fboss::IHostKey&, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal(T&&) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:62:24: required from here
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:83:38: error: void value not ignored as it ought to be
return folly::poly_call<6>(lhs, rhs);
^
In file included from /usr/local/include/folly/Poly.h:51:0,
from /home/wukuncan/fboss/fboss/agent/state/RouteNextHop.h:14,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:16,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:10:
/usr/local/include/folly/detail/PolyDetail.h: In instantiation of ‘decltype(auto) folly::detail::PolyNode<I, Tail>::polyCall(As&& ...) const [with long unsigned int K = 7; As = {const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&}; I = facebook::fboss::IHostKey; Tail = folly::detail::PolyRoot<const facebook::fboss::IHostKey&>]’:
/usr/local/include/folly/detail/PolyDetail.h:720:15: required by substitution of ‘template<long unsigned int N, class This, class ... As> static decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) folly::detail::PolyAccess::call(This&&, As&& ...) [with long unsigned int N = 7; This = const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&; As = {const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&}]’
/usr/local/include/folly/Poly.h:237:44: required by substitution of ‘template<long unsigned int N, class This, class ... As> decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) folly::poly_call(This&&, As&& ...) [with long unsigned int N = 7; This = const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&; As = {const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&}]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:88:29: required from ‘bool facebook::fboss::operator==(const SelfType&, const SelfType&) [with SelfType = folly::detail::PolyRef<const facebook::fboss::IHostKey&>; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:64:16: required from ‘static bool facebook::fboss::IHostKey::eq(const T&, const T&) [with T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: [ skipping 9 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface
(int) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; I = facebook::fboss::IHostKey; U = folly::detail::PolyValfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyValfacebook::fboss::IHostKey&, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal(T&&) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:62:24: required from here
/usr/local/include/folly/detail/PolyDetail.h:799:62: error: could not convert ‘as#0’ from ‘const folly::detail::PolyRef<const facebook::fboss::IHostKey&>’ to ‘folly::Poly<const facebook::fboss::IHostKey&>’
return std::get(select(PolyAccess::vtable(this)))(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
PolyAccess::data(this), static_cast<As&&>(as)...);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp: In instantiation of ‘bool facebook::fboss::operator==(const SelfType&, const SelfType&) [with SelfType = folly::detail::PolyRef<const facebook::fboss::IHostKey&>; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’:
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:64:16: required from ‘static bool facebook::fboss::IHostKey::eq(const T&, const T&) [with T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decay<const facebook::fboss::IHostKey&>::type; T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface_(int) [with T = const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&; I = const facebook::fboss::IHostKey&; U = folly::detail::PolyRef<const facebook::fboss::IHostKey&>; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = ]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&, const facebook::fboss::IHostKey&>’
/usr/local/include/folly/Poly.h:595:76: [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface_(int) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; I = facebook::fboss::IHostKey; U = folly::detail::PolyValfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyValfacebook::fboss::IHostKey&, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal(T&&) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:62:24: required from here
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:88:38: error: void value not ignored as it ought to be
return folly::poly_call<7>(lhs, rhs);
^
In file included from /usr/local/include/folly/Poly.h:51:0,
from /home/wukuncan/fboss/fboss/agent/state/RouteNextHop.h:14,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:16,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:10:
/usr/local/include/folly/detail/PolyDetail.h: In instantiation of ‘decltype(auto) folly::detail::PolyNode<I, Tail>::polyCall(As&& ...) const [with long unsigned int K = 6; As = {const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&}; I = facebook::fboss::IHostKey; Tail = folly::detail::PolyRoot<const facebook::fboss::IHostKey&>]’:
/usr/local/include/folly/detail/PolyDetail.h:720:15: required by substitution of ‘template<long unsigned int N, class This, class ... As> static decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) folly::detail::PolyAccess::call(This&&, As&& ...) [with long unsigned int N = 6; This = const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&; As = {const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&}]’
/usr/local/include/folly/Poly.h:237:44: required by substitution of ‘template<long unsigned int N, class This, class ... As> decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) folly::poly_call(This&&, As&& ...) [with long unsigned int N = 6; This = const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&; As = {const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&}]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:83:29: required from ‘bool facebook::fboss::operator<(const SelfType&, const SelfType&) [with SelfType = folly::detail::PolyRef<const facebook::fboss::IHostKey&>; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:69:16: required from ‘static bool facebook::fboss::IHostKey::lt(const T&, const T&) [with T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: [ skipping 9 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface
(int) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; I = facebook::fboss::IHostKey; U = folly::detail::PolyValfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyValfacebook::fboss::IHostKey&, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal(T&&) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:62:24: required from here
/usr/local/include/folly/detail/PolyDetail.h:799:62: error: could not convert ‘as#0’ from ‘const folly::detail::PolyRef<const facebook::fboss::IHostKey&>’ to ‘folly::Poly<const facebook::fboss::IHostKey&>’
return std::get(select(PolyAccess::vtable(this)))(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
PolyAccess::data(this), static_cast<As&&>(as)...);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp: In instantiation of ‘bool facebook::fboss::operator<(const SelfType&, const SelfType&) [with SelfType = folly::detail::PolyRef<const facebook::fboss::IHostKey&>; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’:
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:69:16: required from ‘static bool facebook::fboss::IHostKey::lt(const T&, const T&) [with T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decay<const facebook::fboss::IHostKey&>::type; T = folly::detail::PolyRef<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface_(int) [with T = const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&; I = const facebook::fboss::IHostKey&; U = folly::detail::PolyRef<const facebook::fboss::IHostKey&>; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = ]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyRef<const facebook::fboss::IHostKey&>&, const facebook::fboss::IHostKey&>’
/usr/local/include/folly/Poly.h:595:76: [ skipping 6 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::detail::PolyValfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface_(int) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; I = facebook::fboss::IHostKey; U = folly::detail::PolyValfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef_::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::
)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::detail::PolyValfacebook::fboss::IHostKey&, const folly::detail::PolyValfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::detail::PolyValfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<const folly::detail::PolyValfacebook::fboss::IHostKey&, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal(T&&) [with T = const folly::detail::PolyValfacebook::fboss::IHostKey&; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:62:24: required from here
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:83:38: error: void value not ignored as it ought to be
return folly::poly_call<6>(lhs, rhs);
^
In file included from /usr/local/include/folly/Poly.h:51:0,
from /home/wukuncan/fboss/fboss/agent/state/RouteNextHop.h:14,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:16,
from /home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:10:
/usr/local/include/folly/detail/PolyDetail.h: In instantiation of ‘static decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) folly::detail::PolyAccess::call(This&&, As&& ...) [with long unsigned int N = 7; This = const folly::Polyfacebook::fboss::IHostKey&; As = {const folly::Polyfacebook::fboss::IHostKey&}; decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) = bool]’:
/usr/local/include/folly/Poly.h:240:37: required from ‘decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) folly::poly_call(This&&, As&& ...) [with long unsigned int N = 7; This = const folly::Polyfacebook::fboss::IHostKey&; As = {const folly::Polyfacebook::fboss::IHostKey&}; decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) = bool]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:88:29: required from ‘bool facebook::fboss::operator==(const SelfType&, const SelfType&) [with SelfType = folly::Polyfacebook::fboss::IHostKey; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:64:16: required from ‘static bool facebook::fboss::IHostKey::eq(const T&, const T&) [with T = folly::Polyfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::Polyfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::Polyfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface
(int) [with T = folly::Polyfacebook::fboss::IHostKey; I = facebook::fboss::IHostKey; U = folly::Polyfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::Polyfacebook::fboss::IHostKey&, const folly::Polyfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::Polyfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::Polyfacebook::fboss::IHostKey&, const folly::Polyfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::Polyfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<folly::Polyfacebook::fboss::IHostKey, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal<T, >(T&&) [with T = folly::Polyfacebook::fboss::IHostKey; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:98:35: required from here
/usr/local/include/folly/detail/PolyDetail.h:723:5: error: static assertion failed: When passing a Poly<> object to call(), you must explicitly say which Interface to dispatch to, as in call<0, MyInterface>(self, args...)
static_assert(
^~~~~~~~~~~~~
/usr/local/include/folly/detail/PolyDetail.h: In instantiation of ‘static decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) folly::detail::PolyAccess::call(This&&, As&& ...) [with long unsigned int N = 6; This = const folly::Polyfacebook::fboss::IHostKey&; As = {const folly::Polyfacebook::fboss::IHostKey&}; decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) = bool]’:
/usr/local/include/folly/Poly.h:240:37: required from ‘decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) folly::poly_call(This&&, As&& ...) [with long unsigned int N = 6; This = const folly::Polyfacebook::fboss::IHostKey&; As = {const folly::Polyfacebook::fboss::IHostKey&}; decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) = bool]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:83:29: required from ‘bool facebook::fboss::operator<(const SelfType&, const SelfType&) [with SelfType = folly::Polyfacebook::fboss::IHostKey; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:69:16: required from ‘static bool facebook::fboss::IHostKey::lt(const T&, const T&) [with T = folly::Polyfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::Polyfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::Polyfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface
(int) [with T = folly::Polyfacebook::fboss::IHostKey; I = facebook::fboss::IHostKey; U = folly::Polyfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::Polyfacebook::fboss::IHostKey&, const folly::Polyfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::Polyfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::Polyfacebook::fboss::IHostKey&, const folly::Polyfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::Polyfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<folly::Polyfacebook::fboss::IHostKey, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal<T, >(T&&) [with T = folly::Polyfacebook::fboss::IHostKey; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:98:35: required from here
/usr/local/include/folly/detail/PolyDetail.h:723:5: error: static assertion failed: When passing a Poly<> object to call(), you must explicitly say which Interface to dispatch to, as in call<0, MyInterface>(self, args...)
/usr/local/include/folly/detail/PolyDetail.h: In instantiation of ‘static decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) folly::detail::PolyAccess::call(This&&, As&& ...) [with long unsigned int N = 7; This = const folly::Poly<const facebook::fboss::IHostKey&>&; As = {const folly::Poly<const facebook::fboss::IHostKey&>&}; decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) = bool]’:
/usr/local/include/folly/Poly.h:240:37: required from ‘decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) folly::poly_call(This&&, As&& ...) [with long unsigned int N = 7; This = const folly::Poly<const facebook::fboss::IHostKey&>&; As = {const folly::Poly<const facebook::fboss::IHostKey&>&}; decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) = bool]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:88:29: required from ‘bool facebook::fboss::operator==(const SelfType&, const SelfType&) [with SelfType = folly::Poly<const facebook::fboss::IHostKey&>; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:64:16: required from ‘static bool facebook::fboss::IHostKey::eq(const T&, const T&) [with T = folly::Poly<const facebook::fboss::IHostKey&>]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::Poly<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decay<const facebook::fboss::IHostKey&>::type; T = folly::Poly<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: [ skipping 8 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::Polyfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::Polyfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface
(int) [with T = folly::Polyfacebook::fboss::IHostKey; I = facebook::fboss::IHostKey; U = folly::Polyfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::Polyfacebook::fboss::IHostKey&, const folly::Polyfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::Polyfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::Polyfacebook::fboss::IHostKey&, const folly::Polyfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::Polyfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<folly::Polyfacebook::fboss::IHostKey, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal<T, >(T&&) [with T = folly::Polyfacebook::fboss::IHostKey; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:98:35: required from here
/usr/local/include/folly/detail/PolyDetail.h:723:5: error: static assertion failed: When passing a Poly<> object to call(), you must explicitly say which Interface to dispatch to, as in call<0, MyInterface>(self, args...)
/usr/local/include/folly/detail/PolyDetail.h: In instantiation of ‘static decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) folly::detail::PolyAccess::call(This&&, As&& ...) [with long unsigned int N = 6; This = const folly::Poly<const facebook::fboss::IHostKey&>&; As = {const folly::Poly<const facebook::fboss::IHostKey&>&}; decltype (static_cast<This&&>(this).polyCall(static_cast<As&>(folly::detail::PolyAccess::call::args) ...)) = bool]’:
/usr/local/include/folly/Poly.h:240:37: required from ‘decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) folly::poly_call(This&&, As&& ...) [with long unsigned int N = 6; This = const folly::Poly<const facebook::fboss::IHostKey&>&; As = {const folly::Poly<const facebook::fboss::IHostKey&>&}; decltype (folly::detail::PolyAccess:: call(static_cast<This&&>(this), static_cast<As&>(folly::poly_call::as) ...)) = bool]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:83:29: required from ‘bool facebook::fboss::operator<(const SelfType&, const SelfType&) [with SelfType = folly::Poly<const facebook::fboss::IHostKey&>; Base = folly::detail::ArchetypeRootfacebook::fboss::IHostKey]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:69:16: required from ‘static bool facebook::fboss::IHostKey::lt(const T&, const T&) [with T = folly::Poly<const facebook::fboss::IHostKey&>]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::Poly<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decay<const facebook::fboss::IHostKey&>::type; T = folly::Poly<const facebook::fboss::IHostKey&>]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: [ skipping 8 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.h:83:28: required by substitution of ‘template using Members = typename decltype (folly::detail::deduceMembers((& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)))::Members<(& T:: getVrf), (& T:: addr), (& T:: intfID), (& T:: hasLabel), (& T:: getLabel), (& T:: str), (& eq), (& lt), (& T:: needsMplsTunnel), (& T:: tunnelLabelStack)> [with T = folly::Polyfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:229:66: required by substitution of ‘template<class I, class T> using MembersOf = typename I::Members<folly::remove_cvref_t > [with I = std::decayfacebook::fboss::IHostKey::type; T = folly::Polyfacebook::fboss::IHostKey]’
/usr/local/include/folly/detail/PolyDetail.h:904:5: required by substitution of ‘template<class T, class I, class U, typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type , typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type , class> std::true_type folly::detail::modelsInterface
(int) [with T = folly::Polyfacebook::fboss::IHostKey; I = facebook::fboss::IHostKey; U = folly::Polyfacebook::fboss::IHostKey; typename std::enable_if<folly::Negation<std::is_base_of<folly::detail::PolyBase, U> >::value, int>::type = ; typename std::enable_if<std::is_constructible<typename folly::detail::XRef
::type::apply, T>::value, int>::type = ; = folly::detail::TypeList<std::integral_constant<int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getVrf>, std::integral_constant<folly::IPAddress (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::addr>, std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::intfID>, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::hasLabel>, std::integral_constant<unsigned int (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::getLabel>, std::integral_constant<std::__cxx11::basic_string<char, std::char_traits, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::str>, std::integral_constant<bool ()(const folly::Polyfacebook::fboss::IHostKey&, const folly::Polyfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::eq<folly::Polyfacebook::fboss::IHostKey > >, std::integral_constant<bool ()(const folly::Polyfacebook::fboss::IHostKey&, const folly::Polyfacebook::fboss::IHostKey&), facebook::fboss::IHostKey::lt<folly::Polyfacebook::fboss::IHostKey > >, std::integral_constant<bool (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::needsMplsTunnel>, std::integral_constant<std::vector<int, std::allocator > (facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::)() const, &facebook::fboss::IHostKey::Interface<folly::detail::PolyNode<facebook::fboss::IHostKey, folly::detail::PolyRootfacebook::fboss::IHostKey > >::tunnelLabelStack> >]’
/usr/local/include/folly/detail/PolyDetail.h:910:57: required from ‘struct folly::detail::ModelsInterface<folly::Polyfacebook::fboss::IHostKey, facebook::fboss::IHostKey>’
/usr/local/include/folly/Poly.h:521:76: required by substitution of ‘template<class T, typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type > folly::detail::PolyValfacebook::fboss::IHostKey::PolyVal<T, >(T&&) [with T = folly::Polyfacebook::fboss::IHostKey; typename std::enable_if<folly::detail::ModelsInterface<T, facebook::fboss::IHostKey>::value, int>::type = ]’
/home/wukuncan/fboss/fboss/agent/hw/bcm/BcmHostKey.cpp:98:35: required from here
/usr/local/include/folly/detail/PolyDetail.h:723:5: error: static assertion failed: When passing a Poly<> object to call(), you must explicitly say which Interface to dispatch to, as in call<0, MyInterface>(self, args...)
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = int; D = const folly::detail::Data; As = {}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<int (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::getVrf>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
static R call(D& d, As... as) {
^~~~
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = folly::IPAddress; D = const folly::detail::Data; As = {}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<folly::IPAddress (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::addr>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = folly::Optionalfacebook::fboss::InterfaceID; D = const folly::detail::Data; As = {}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::intfID>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<bool (facebook::fboss::BcmHostKey::)() const, &facebook::fboss::BcmHostKey::hasLabel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = unsigned int; D = const folly::detail::Data; As = {}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<unsigned int (facebook::fboss::BcmHostKey::
)() const, &facebook::fboss::BcmHostKey::getLabel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = std::__cxx11::basic_string; D = const folly::detail::Data; As = {}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<std::__cxx11::basic_string (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::str>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::
::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {folly::Poly<const facebook::fboss::IHostKey&>}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<bool ()(const facebook::fboss::BcmHostKey&, const facebook::fboss::BcmHostKey&), facebook::fboss::IHostKey::eqfacebook::fboss::BcmHostKey >; I = facebook::fboss::IHostKey; Args = {const facebook::fboss::BcmHostKey&}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {folly::Poly<const facebook::fboss::IHostKey&>}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<bool (
)(const facebook::fboss::BcmHostKey&, const facebook::fboss::BcmHostKey&), facebook::fboss::IHostKey::ltfacebook::fboss::BcmHostKey >; I = facebook::fboss::IHostKey; Args = {const facebook::fboss::BcmHostKey&}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<bool (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::needsMplsTunnel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::
::call(D&, As ...) [with R = std::vector; D = const folly::detail::Data; As = {}; T = const facebook::fboss::BcmHostKey&; User = std::integral_constant<std::vector (facebook::fboss::BcmHostKey::)() const, &facebook::fboss::BcmHostKey::tunnelLabelStack>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = int; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<int (facebook::fboss::BcmHostKey::
)() const, &facebook::fboss::BcmHostKey::getVrf>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = folly::IPAddress; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<folly::IPAddress (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::addr>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::
::call(D&, As ...) [with R = folly::Optionalfacebook::fboss::InterfaceID; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::BcmHostKey::)() const, &facebook::fboss::BcmHostKey::intfID>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<bool (facebook::fboss::BcmHostKey::
)() const, &facebook::fboss::BcmHostKey::hasLabel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = unsigned int; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<unsigned int (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::getLabel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::
::call(D&, As ...) [with R = std::__cxx11::basic_string; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<std::__cxx11::basic_string (facebook::fboss::BcmHostKey::)() const, &facebook::fboss::BcmHostKey::str>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {folly::Poly<const facebook::fboss::IHostKey&>}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<bool (
)(const facebook::fboss::BcmHostKey&, const facebook::fboss::BcmHostKey&), facebook::fboss::IHostKey::eqfacebook::fboss::BcmHostKey >; I = facebook::fboss::IHostKey; Args = {const facebook::fboss::BcmHostKey&}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {folly::Poly<const facebook::fboss::IHostKey&>}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<bool (*)(const facebook::fboss::BcmHostKey&, const facebook::fboss::BcmHostKey&), facebook::fboss::IHostKey::ltfacebook::fboss::BcmHostKey >; I = facebook::fboss::IHostKey; Args = {const facebook::fboss::BcmHostKey&}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::
::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<bool (facebook::fboss::BcmHostKey::)() const, &facebook::fboss::BcmHostKey::needsMplsTunnel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = std::vector; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&; User = std::integral_constant<std::vector (facebook::fboss::BcmHostKey::
)() const, &facebook::fboss::BcmHostKey::tunnelLabelStack>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = int; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<int (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::getVrf>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::
::call(D&, As ...) [with R = folly::IPAddress; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<folly::IPAddress (facebook::fboss::BcmHostKey::)() const, &facebook::fboss::BcmHostKey::addr>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = folly::Optionalfacebook::fboss::InterfaceID; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<folly::Optionalfacebook::fboss::InterfaceID (facebook::fboss::BcmHostKey::
)() const, &facebook::fboss::BcmHostKey::intfID>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<bool (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::hasLabel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::
::call(D&, As ...) [with R = unsigned int; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<unsigned int (facebook::fboss::BcmHostKey::)() const, &facebook::fboss::BcmHostKey::getLabel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = std::__cxx11::basic_string; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<std::__cxx11::basic_string (facebook::fboss::BcmHostKey::
)() const, &facebook::fboss::BcmHostKey::str>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {folly::Poly<const facebook::fboss::IHostKey&>}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<bool (*)(const facebook::fboss::BcmHostKey&, const facebook::fboss::BcmHostKey&), facebook::fboss::IHostKey::eqfacebook::fboss::BcmHostKey >; I = facebook::fboss::IHostKey; Args = {const facebook::fboss::BcmHostKey&}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::
::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {folly::Poly<const facebook::fboss::IHostKey&>}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<bool ()(const facebook::fboss::BcmHostKey&, const facebook::fboss::BcmHostKey&), facebook::fboss::IHostKey::ltfacebook::fboss::BcmHostKey >; I = facebook::fboss::IHostKey; Args = {const facebook::fboss::BcmHostKey&}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = bool; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<bool (facebook::fboss::BcmHostKey::
)() const, &facebook::fboss::BcmHostKey::needsMplsTunnel>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
/usr/local/include/folly/detail/PolyDetail.h:522:16: warning: ‘static R folly::detail::ThunkFn<T, User, I, folly::detail::TypeList<Args ...>, std::integral_constant<bool, ((! std::is_const<typename std::remove_reference< >::type>::value) || folly::detail::IsConstMember::value)> >::operator folly::detail::FnPtr<R, D&, As ...>() const::_::call(D&, As ...) [with R = std::vector; D = const folly::detail::Data; As = {}; T = facebook::fboss::BcmHostKey&&; User = std::integral_constant<std::vector (facebook::fboss::BcmHostKey::*)() const, &facebook::fboss::BcmHostKey::tunnelLabelStack>; I = facebook::fboss::IHostKey; Args = {}]’ used but never defined
CMakeFiles/fboss_agent.dir/build.make:590: recipe for target 'CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmHostKey.cpp.o' failed
make[2]: *** [CMakeFiles/fboss_agent.dir/fboss/agent/hw/bcm/BcmHostKey.cpp.o] Error 1
CMakeFiles/Makefile2:907: recipe for target 'CMakeFiles/fboss_agent.dir/all' failed
make[1]: *** [CMakeFiles/fboss_agent.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

How to add a resolved next hop to fboss

Hi everyone,

I'm trying to configure some routes on fboss(currently with sim_agent) using fboss_route.py and wandering how can I add a route with resolved NH since everything I've tried is unresolved? Actually how to configure resolved NH (or a host which can be used as NH) at all?

Even if I try to add a route with IP of my own interface(10.10.10.1) I see the log message which tells me that the NH is unresolved(see the log below the config). I have even tried to do a hack by calling directly ArpHandler::arpUpdateRequired() from the code and I apparently the ARP entry was added(saw the log message: "Adding ARP entry for 10.10.10.2 --> 10:10:10:10:10:02") but after that when I tried to add a route with 10.10.10.2 NH I still saw this log message about unresolved NH.

BTW, why does this route appear in the table: "Added route 10.10.10.0/[email protected] State:CR, => [email protected]"? We can not route using our own IP as NH.

Now I'm really confused and don't know how to proceed.

The config is very simple:
{
"version": 0,
"ports": [
{
"logicalID": 1,
"state": 2,
"minFrameSize": 64,
"maxFrameSize": 1500,
"parserType": 1,
"routable": true,
"ingressVlan": 110,
"speed": 0
},
{
"logicalID": 2,
"state": 2,
"minFrameSize": 64,
"maxFrameSize": 1500,
"parserType": 1,
"routable": true,
"ingressVlan": 120,
"speed": 0
}
],
"vlans": [
{
"name": "V110",
"id": 110,
"recordStats": true,
"routable": true,
"ipAddresses": [
"10.10.10.1"
]
},
{
"name": "V120",
"id": 120,
"recordStats": true,
"routable": true,
"ipAddresses": [
"20.20.20.1"
]
}
],
"vlanPorts": [
{
"vlanID": 110,
"logicalPort": 1,
"spanningTreeState": 2,
"emitTags": false
},
{
"vlanID": 120,
"logicalPort": 2,
"spanningTreeState": 2,
"emitTags": false
}
],
"defaultVlan": 110,
"interfaces":
[
{
"intfID": 1,
"routerID": 4,
"vlanID": 110,
"mac":"10:10:10:10:10:01",
"ipAddresses": [
"10.10.10.1/24"
]
},
{
"intfID": 2,
"routerID": 4,
"vlanID": 120,
"mac":"20:20:20:20:20:01",
"ipAddresses": [
"20.20.20.1/24"
]
}

],
"arpTimeoutSeconds": 60,
"arpRefreshSeconds": 20,
"arpAgerInterval": 5,
"proactiveArp": false
}

The log:

./sim_agent --logtostderr=1 --minloglevel=0 -v=3 --config ../fboss.json
I1214 20:53:57.288607 11626 SwSwitch.cpp:294] Registering state observer: IPv6Handler
I1214 20:53:57.288758 11626 SwSwitch.cpp:294] Registering state observer: NeighborUpdater
I1214 20:53:57.289929 11627 SwSwitch.cpp:227] hardware initialized in 0 seconds; applying initial config
I1214 20:53:57.290119 11626 ThriftServer.cpp:223] libevent 2.0.21-stable method epoll
I1214 20:53:57.301103 11627 Main.cpp:135] local MAC is 02:00:00:00:00:01
I1214 20:53:57.301318 11630 SwSwitch.cpp:420] preparing state update apply initial config
I1214 20:53:57.301331 11630 SwSwitch.cpp:919] Loading config from local config file ../fboss.json
I1214 20:53:57.312749 11630 RouteUpdater.cpp:115] Added route 10.10.10.0/[email protected] State:CR, => [email protected]
I1214 20:53:57.312891 11630 RouteUpdater.cpp:115] Added route 20.20.20.0/[email protected] State:CR, => [email protected]
I1214 20:53:57.313022 11630 RouteUpdater.cpp:115] Added route fe80::/[email protected] State:R, => TO_CPU
I1214 20:53:57.313503 11630 SwSwitch.cpp:515] Updating state: old_gen=0 new_gen=1
I1214 20:53:57.313855 11630 SwSwitch.cpp:560] Update state took 281us
I1214 20:53:57.314029 11627 FunctionScheduler.cpp:137] Starting FunctionScheduler with 4 functions.
I1214 20:53:57.314059 11627 FunctionScheduler.cpp:144] - func: updateStats, period = 1000ms, delay = 0ms
I1214 20:53:57.314070 11627 FunctionScheduler.cpp:144] - func: flushWarmBoot, period = 1000ms, delay = 30000ms
I1214 20:53:57.314075 11627 FunctionScheduler.cpp:144] - func: DetectTransceiver, period = 1000ms, delay = 0ms
I1214 20:53:57.314084 11627 FunctionScheduler.cpp:144] - func: CacheUpdateTransceiver, period = 15000ms, delay = 15000ms
I1214 20:53:57.314127 11627 Main.cpp:179] Started background thread: UpdateStatsThread
I1214 20:53:57.331481 11626 Main.cpp:301] serving on localhost on port 5909
I1214 21:02:43.154876 11630 SwSwitch.cpp:420] preparing state update sync fib
I1214 21:02:43.154989 11630 RouteUpdater.cpp:115] Added route 10.10.10.0/[email protected] State:CR, => [email protected]
I1214 21:02:43.155028 11630 RouteUpdater.cpp:115] Added route 20.20.20.0/[email protected] State:CR, => [email protected]
I1214 21:02:43.155066 11630 RouteUpdater.cpp:115] Added route fe80::/[email protected] State:R, => TO_CPU
I1214 21:02:43.155227 11645 ThriftHandler.cpp:86] Sync 0 routes took 363us
I1214 21:02:43.155900 11648 Acceptor.cpp:395] Acceptor=0x2cc8c98 onEmpty()
I1214 21:02:44.977035 11630 SwSwitch.cpp:420] preparing state update add unicast route
I1214 21:02:44.977193 11630 RouteUpdater.cpp:115] Added route 7.7.7.0/[email protected] State:, => DROP
I1214 21:02:44.977212 11630 RouteUpdater.cpp:266] Could not find route for nhop : 10.10.10.1
I1214 21:02:44.977223 11630 RouteUpdater.cpp:307] Cannot resolve route 7.7.7.0/[email protected] State:U, => DROP
I1214 21:02:44.977314 11630 SwSwitch.cpp:515] Updating state: old_gen=1 new_gen=2
I1214 21:02:44.977344 11630 SwSwitch.cpp:560] Update state took 29us
I1214 21:02:44.977373 11645 ThriftHandler.cpp:86] Add 1 routes took 422us
I1214 21:02:44.977731 11649 Acceptor.cpp:395] Acceptor=0x2ccd228 onEmpty()

Does`parserType` set to `0` works as expected ?

On a Wedge 16x I'm running FBOSS version a376ab2 compiled from sources and running on ONL-DEB8 with kernel 3.16.53. I'm using the configuration fboss/agent/configs/sample1.json.

In this configuration, parserType is set to 0 for all ports. By the way I see in logs information about IP addresses.

/**
* The parser type for a port.
* This controls how much of the packet header will be parsed.
*/
enum ParserType {
L2 = 0,
L3 = 1,
L4 = 2,
ALL = 3,
}

Example

E0824 16:10:56.229668  2927 SwSwitch.cpp:1032] error processing trapped packet: N8facebook5fboss10FbossErrorE: No interface with ip : 255.255.255.255

And FBOSS is crashing when handling IPv6 packets

*** Aborted at 1535125247 (unix time) try "date -d @1535125247" if you are using GNU date ***
PC: @     0x7f3cf2237b4a boost::container::flat_map<>::end()
*** SIGSEGV (@0x50) received by PID 2662 (TID 0x7f3cf0ce7700) from PID 80; stack trace: ***
    @     0x7f3ceed1e0c0 (unknown)
    @     0x7f3cf2237b4a boost::container::flat_map<>::end()
    @     0x7f3cf2236836 facebook::fboss::Interface::hasAddress()
    @     0x7f3cf2433c41 facebook::fboss::IPv6Handler::handlePacket()
    @     0x7f3cf22c5d9a facebook::fboss::SwSwitch::handlePacket()
    @     0x7f3cf22c5298 facebook::fboss::SwSwitch::packetReceived()
    @     0x7f3cf217c469 facebook::fboss::BcmSwitch::packetReceived()
    @     0x7f3cf217c37b facebook::fboss::BcmSwitch::packetRxCallback()
    @     0x7f3cebeae031 (unknown)
    @     0x7f3cebeaea31 (unknown)
    @     0x7f3cebeb3984 (unknown)
    @     0x7f3cec5aadae (unknown)
    @     0x7f3ceed14494 start_thread
    @     0x7f3ce8c9dacf clone
    @                0x0 (unknown)

It looks like with only IPv4 traffic I don't get any crash.

For now, my priority is to use my switchs as basic L2 switchs.

Any ideas ?

Newlines in repo description

$ http get https://api.github.com/repos/facebook/fboss | jq .description
"Facebook Open Switching System\n\nSoftware for controlling network switches."

Breaks some of my scripts

warmboot removes "unreferenced" routes and then crashes if it comes back

When fboss warmboots, the trident will have routes I had previously added with fboss_route.py but list_routes will not show them. A minute later, FBOSS will remove those routes from the trident as "unreferenced" and then any attempt to add them back will cause FBOSS to crash.

I0113 04:56:06.449673  6445 ThreadManager.tcc:336] ThreadManager::add called with numa == true, but not a NumaThreadManager
I0113 04:56:06.450521  6465 SwSwitch.cpp:578] Updating state: old_gen=1 new_gen=2
E0113 04:56:06.475909  6465 SwSwitch.cpp:232] Unable to dump switch state to /var/facebook/fboss/crash/switch_state
F0113 04:56:06.476253  6465 SwSwitch.cpp:612] error applying state change to hardware: N8facebook5fboss8BcmErrorE: failed to create a route entry for fe80::/64 @ TO_CPU @egress 100002: Invalid parameter
*** Check failure stack trace: ***
    @     0x7fe13bc61778  (unknown)
    @     0x7fe13bc616b2  (unknown)
    @     0x7fe13bc610b4  (unknown)
    @     0x7fe13bc64055  (unknown)
    @          0x115d1d1  facebook::fboss::SwSwitch::applyUpdate()
    @          0x115c2f5  facebook::fboss::SwSwitch::handlePendingUpdates()
    @          0x115bf14  facebook::fboss::SwSwitch::handlePendingUpdatesHelper()
    @     0x7fe13b28d909  folly::EventBase::FunctionRunner::messageAvailable()
    @     0x7fe13b28f76e  folly::NotificationQueue<>::Consumer::consumeMessages()
    @     0x7fe1336bc3dc  (unknown)
    @     0x7fe13b28af8f  folly::EventBase::loopBody()
    @     0x7fe13b28b8e4  folly::EventBase::loopForever()
    @          0x115f46e  facebook::fboss::SwSwitch::threadLoop()
    @          0x115f1b5  _ZZN8facebook5fboss8SwSwitch12startThreadsEvENKUlvE0_clEv
    @          0x1163790  _ZNSt12_Bind_simpleIFZN8facebook5fboss8SwSwitch12startThreadsEvEUlvE0_vEE9_M_invokeIIEEEvSt12_Index_tupleIIXspT_EEE
    @          0x1163624  _ZNSt12_Bind_simpleIFZN8facebook5fboss8SwSwitch12startThreadsEvEUlvE0_vEEclEv
    @          0x1163510  _ZNSt6thread5_ImplISt12_Bind_simpleIFZN8facebook5fboss8SwSwitch12startThreadsEvEUlvE0_vEEE6_M_runEv
    @     0x7fe13566a970  (unknown)
    @     0x7fe13ac7b0a4  start_thread
    @     0x7fe134dda04d  (unknown)
    @              (nil)  (unknown)

Cannot build latest code on Ubuntu 14.04

I've just pulled the latest fboss code, pulled and installed latest folly and fbthrift from github, executed getdeps.sh. Till that moment everything is OK. But when I execute cmake .. from the created build dir(as this is mentioned in BUILD document) I got the error as follows:

CMake Error at CMakeLists.txt:63 (add_library):
Cannot find source file:

/home/vsenchyshyn/projects/xpliant/tmp/fboss/build/gen/common/network/if/gen-cpp/Address_reflection.cpp

Since the latest commit is fixing build I'm wondering what's wrong in my case? Do I need to install folly and fbthrift of specific version in order to make build working correctly? If yes then how can I do that? If not then what else could be wrong?

[build] build failed on switch(centos 7)

Hi guys, i try to build fboss, but below error occurs, any body can help?

nager.cpp.o.d -o CMakeFiles/phy_management_base.dir/fboss/lib/phy/PhyManager.cpp.o -c /tmp/fbcode_builder_getdeps-ZrootZfbossZbuildZfbcode_builder-root/repos/github.com-facebook-fboss.git/fboss/lib/phy/PhyManager.cpp
In file included from /tmp/fbcode_builder_getdeps-ZrootZfbossZbuildZfbcode_builder-root/repos/github.com-facebook-fboss.git/fboss/lib/phy/PhyManager.cpp:3:0:
/tmp/fbcode_builder_getdeps-ZrootZfbossZbuildZfbcode_builder-root/repos/github.com-facebook-fboss.git/fboss/lib/phy/PhyManager.h:12:10: fatal error: fboss/mka_service/if/gen-cpp2/mka_types.h: No such file or directory
 #include "fboss/mka_service/if/gen-cpp2/mka_types.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[4/1340] Building CXX object CMakeFiles/agent_test_utils.dir/fboss/agent/test/CounterCache.cpp.o
ninja: build stopped: subcommand failed.
Command '['/tmp/fbcode_builder_getdeps-ZrootZfbossZbuildZfbcode_builder-root/installed/cmake-u4hhUzFmJyVJ8F0324Dhh7kKEZhK70zPtU7YUQOuiII/bin/cmake', '--build', '/tmp/fbcode_builder_getdeps-ZrootZfbossZbuildZfbcode_builder-root/build/fboss', '--target', 'install', '--config', 'Release', '-j', '4']' returned non-zero exit status 1.
!! Failed

Cannot run system_tests

Hi.

After I updated local repo, I cannot run system_tests. Cannot find fboss.system_tests.facebook package required here: https://github.com/facebook/fboss/blob/master/fboss/system_tests/testutils/test_topology.py#L10

~/fboss/fboss/system_tests# python3 system_tests.py --config test_topologies/example_topology.py --test_dirs tests/
Traceback (most recent call last):
File "system_tests.py", line 229, in <module>
sys.exit(main(sys.argv))
File "system_tests.py", line 225, in main
run_tests(options)
File "system_tests.py", line 190, in run_tests
options.test_topology = dynamic_generate_test_topology(options)
File "system_tests.py", line 94, in dynamic_generate_test_topology
spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 673, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "test_topologies/example_topology.py", line 6, in <module>
from fboss.system_tests.testutils.test_topology import (TestHost,
File "/usr/lib/python3/dist-packages/fboss/system_tests/testutils/test_topology.py", line 10, in <module>
from fboss.system_tests.facebook.utils.agent_config import (
ImportError: No module named 'fboss.system_tests.facebook'

According to TESTING.md fboss/system_tests/facebook directory is internal.

Same with libfb package here: https://github.com/facebook/fboss/blob/master/fboss/system_tests/testutils/paramiko_utils.py#L8

Thanks

./getdeps.sh fails during building of thrift on the latest code on Ubuntu 14.04

I see a compilation error as follows when try to execute ./getdeps.sh on the latest fboss sources:

/bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I../../.. -pthread -I/usr/include -I../cpp -I../../../../gperftools-2.0.99/src -I/home/vsenchyshyn/projects/xpliant/tmp/fboss/external/folly -I/home/vsenchyshyn/projects/xpliant/tmp/fboss/external/wangle -std=gnu++0x -MT libthriftcpp2_la-GeneratedCodeHelper.lo -MD -MP -MF .deps/libthriftcpp2_la-GeneratedCodeHelper.Tpo -c -o libthriftcpp2_la-GeneratedCodeHelper.lo test -f 'GeneratedCodeHelper.cpp' || echo './'GeneratedCodeHelper.cpp
make[5]: *** No rule to make target 'asybc/SaslNegotiationHandler.cpp', needed by 'asybc/libthriftcpp2_la-SaslNegotiationHandler.lo'. Stop.
make[5]: *** Waiting for unfinished jobs....

Using interface ID 1000 crashes wedge_agent

Hi,

In https://github.com/facebook/fboss/blob/master/fboss/agent/configs/sample3.json you document that a reasonable number for an interface ID is 1000. This number is not allowed by the code in TunManager.cpp.

Using interface 1000 results in a negative table ID and this trace:

[...]
1017 21:45:55.289333 10665 ArpHandler.cpp:153] sending ARP request on vlan 552 to 10.32.12.250 (ff:ff:ff:ff:ff:ff): 10.32.12.250 is 56:ab:3a:05:fc:0a
I1017 21:45:55.726236 10671 FunctionScheduler.cpp:505] Now running updateStats
I1017 21:45:56.011499 10664 SwSwitch.cpp:1129] Link state changed: 61->UP
V1017 21:45:56.011653 10664 SwSwitch.cpp:39] LinkState: Port 61 Up
I1017 21:45:56.011729 10666 SwSwitch.cpp:787] preparing state update Port OperState Update
I1017 21:45:56.011877 10666 SwSwitch.cpp:921] Updating state: old_gen=2 new_gen=3
V1017 21:45:56.012053 10666 BcmSwitch.cpp:927] Oper state changed on port 61: UP
V1017 21:45:56.012317 10666 SwSwitch.cpp:970] Update state took 437us
V1017 21:45:56.012439 10669 QsfpCache.cpp:95] Will sync port 61
V1017 21:45:56.012494 10669 QsfpCache.cpp:158] Starting new request
V1017 21:45:56.013056 10669 QsfpCache.cpp:140] Will try to sync 1 ports to qsfp_service
I1017 21:45:56.013183 10664 SwSwitch.cpp:1129] Link state changed: 62->UP
V1017 21:45:56.013342 10664 SwSwitch.cpp:39] LinkState: Port 62 Up
I1017 21:45:56.013737 10667 TunManager.cpp:229] Brought up interface fboss1000 @ index 6
F1017 21:45:56.013898 10667 TunManager.cpp:252] Check failed: tableId >= 1 (-740 vs. 1)
I1017 21:45:56.014421 10666 SwSwitch.cpp:787] preparing state update Port OperState Update
I1017 21:45:56.014553 10666 SwSwitch.cpp:921] Updating state: old_gen=3 new_gen=4
V1017 21:45:56.015269 10666 BcmSwitch.cpp:927] Oper state changed on port 62: UP
V1017 21:45:56.015559 10666 SwSwitch.cpp:970] Update state took 1000us
V1017 21:45:56.015684 10669 QsfpCache.cpp:84] Already an active outstanding request to qsfp_service
*** Check failure stack trace: ***
    @     0x7fac6b11213d  google::LogMessage::Fail()
    @     0x7fac6b113fa3  google::LogMessage::SendToLog()
    @     0x7fac6b111ccb  google::LogMessage::Flush()
    @     0x7fac6b11498e  google::LogMessageFatal::~LogMessageFatal()
    @     0x55a8782e8efb  facebook::fboss::TunManager::getTableId()
    @     0x55a8782e935b  facebook::fboss::TunManager::addRemoveRouteTable()
    @     0x55a8782f0350  facebook::fboss::TunManager::addRouteTable()
    @     0x55a8782ed5cc  _ZZN8facebook5fboss10TunManager4syncESt10shared_ptrINS0_11SwitchStateEEENKUlRN5boost9container16container_detail12vec_iteratorIPSt4pairINS0_11InterfaceIDES9_IbNS6_8flat_mapIN5folly9IPAddressEhSt4lessISD_ENS6_13new_allocatorIS9_ISD_hEEEEEEELb1EEESO_E0_clESO_SO_
    @     0x55a8782eedd2  _ZN8facebook5fboss10TunManager12applyChangesIN5boost9container8flat_mapINS0_11InterfaceIDESt4pairIbNS5_IN5folly9IPAddressEhSt4lessIS9_ENS4_13new_allocatorIS7_IS9_hEEEEEESA_IS6_ENSC_IS7_IS6_SG_EEEEEZNS1_4syncESt10shared_ptrINS0_11SwitchStateEEEUlRNS4_16container_detail12vec_iteratorIPSI_Lb1EEESS_E0_ZNS1_4syncESN_EUlSS_E1_ZNS1_4syncESN_EUlSS_E2_EEvRKT_SY_T0_T1_T2_
    @     0x55a8782edd08  facebook::fboss::TunManager::sync()
    @     0x55a8782e771a  _ZZN8facebook5fboss10TunManager12stateUpdatedERKNS0_10StateDeltaEENKUlvE_clEv
    @     0x55a8782ef76c  _ZN5folly6detail8function14FunctionTraitsIFvvEE9callSmallIZN8facebook5fboss10TunManager12stateUpdatedERKNS7_10StateDeltaEEUlvE_EEvRNS1_4DataE
    @     0x55a878106d55  folly::detail::function::FunctionTraits<>::operator()()
    @     0x55a878d13910  folly::EventBase::FunctionRunner::messageAvailable()
    @     0x55a878d165f9  folly::NotificationQueue<>::Consumer::consumeMessages()
I1017 21:45:56.099323 10669 Cpp2Channel.cpp:198] Got an EOF on channel
V1017 21:45:56.099586 10669 QsfpCache.cpp:149] Got 1 transceivers from qsfp_service
V1017 21:45:56.099711 10669 QsfpCache.cpp:172] Finished request
    @     0x55a878d15224  folly::NotificationQueue<>::Consumer::handlerReady()
    @     0x55a878d1cc33  folly::EventHandler::libeventCallback()
    @     0x7fac6aca75a0  event_base_loop
    @     0x55a878d0fd4c  folly::EventBase::loopBody()
    @     0x55a878d0f7f6  folly::EventBase::loop()
    @     0x55a878d10db5  folly::EventBase::loopForever()
    @     0x55a878292840  facebook::fboss::SwSwitch::threadLoop()
    @     0x55a878291fc2  _ZZN8facebook5fboss8SwSwitch12startThreadsEvENKUlvE1_clEv
    @     0x55a87829be84  _ZNSt12_Bind_simpleIFZN8facebook5fboss8SwSwitch12startThreadsEvEUlvE1_vEE9_M_invokeIJEEEvSt12_Index_tupleIJXspT_EEE
    @     0x55a87829bcbf  _ZNSt12_Bind_simpleIFZN8facebook5fboss8SwSwitch12startThreadsEvEUlvE1_vEEclEv
    @     0x55a87829bbf2  _ZNSt6thread11_State_implISt12_Bind_simpleIFZN8facebook5fboss8SwSwitch12startThreadsEvEUlvE1_vEEE6_M_runEv
    @     0x7fac652d4e6f  (unknown)
    @     0x7fac6ba3c494  start_thread
    @     0x7fac64a49acf  clone
    @              (nil)  (unknown)
Aborted

Configuration:

...
    "vlans": [
        {
            "id": 1,
            "ipAddresses": [],
            "name": "DEFAULT",
            "recordStats": true,
            "routable": false
        },
        {
            "id": 552,
            "ipAddresses": [],
            "name": "DEPLOY",
            "recordStats": true,
            "routable": false
        }
    ],
    "interfaces": [
        {
              "intfID": 10,
              "routerID": 0,
              "vlanID": 552,
              "ipAddresses": [
                    "10.32.12.250/24"
              ]
        }
    ]
}

Unable to run SAI fake tests

When try to execute sai_test-fake-1.5.0, I encountered the following error.

[[email protected] fboss]# ./sai_test-fake-1.5.0 --gtest_filter=HwVlanTest.VlanApplyConfig
Note: Google Test filter = HwVlanTest.VlanApplyConfig
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from HwVlanTest
[ RUN      ] HwVlanTest.VlanApplyConfig
Not valid AgentConfig, fallback to parsing as SwitchConfig...
E0717 04:28:20.606528 358895 PlatformProductInfo.cpp:148] json parse error on line 0: expected json value
E0717 04:28:20.606630 358895 PlatformProductInfo.cpp:70] Failed initializing ProductInfo from /var/facebook/fboss/fruid.json, fall back to use fbwhoami: json parse error on line 0: expected json value
unknown file: Failure
C++ exception with description "invalid model name " thrown in SetUp().
[  FAILED  ] HwVlanTest.VlanApplyConfig (3 ms)
[----------] 1 test from HwVlanTest (3 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (3 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] HwVlanTest.VlanApplyConfig

 1 FAILED TEST

Upon copying a fruid.json from /tmp/fboss_bins-1cmivb7i6/share/th/fruid.json, the test seems to proceed further but then crashes.

[[email protected] fboss]# cp /tmp/fboss_bins-1cmivb7i6/share/th/fruid.json /var/facebook/fboss/.
[[email protected] fboss]#
[[email protected] fboss]#
[[email protected] fboss]#
[[email protected] fboss]# ./sai_test-fake-1.5.0 --gtest_filter=HwVlanTest.VlanApplyConfig
Note: Google Test filter = HwVlanTest.VlanApplyConfig
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from HwVlanTest
[ RUN      ] HwVlanTest.VlanApplyConfig
Not valid AgentConfig, fallback to parsing as SwitchConfig...
*** Aborted at 1594960127 (unix time) try "date -d @1594960127" if you are using GNU date ***
PC: @                0x0 (unknown)
*** SIGSEGV (@0x10000001f) received by PID 358898 (TID 0x7ffa017e8840) from PID 31; stack trace: ***
    @     0x7ffa00701546 google::(anonymous namespace)::FailureSignalHandler()
    @     0x7ff9ff76e630 (unknown)
    @           0x6eb916 facebook::fboss::SaiBcmPlatform::getHwConfig()
    @           0x6e29ba facebook::fboss::SaiPlatform::generateHwConfigFile()
    @           0xd05d6b facebook::fboss::Platform::init()
    @           0x6e1a6e facebook::fboss::initSaiPlatform()
    @           0x5b6593 facebook::fboss::SaiSwitchEnsemble::SaiSwitchEnsemble()
    @           0x5b60e2 facebook::fboss::createHwEnsemble()
    @           0x601cb9 facebook::fboss::HwTest::SetUp()
    @           0x6de6ea testing::internal::HandleExceptionsInMethodIfSupported<>()
    @           0x6d51d9 testing::Test::Run()
    @           0x6d54b2 testing::TestInfo::Run()
    @           0x6d5628 testing::TestSuite::Run()
    @           0x6d5c23 testing::internal::UnitTestImpl::RunAllTests()
    @           0x6dec2a testing::internal::HandleExceptionsInMethodIfSupported<>()
    @           0x6d5e75 testing::UnitTest::Run()
    @           0x4f2d9f main
    @     0x7ff9feb94555 __libc_start_main
    @           0x56467c (unknown)
    @                0x0 (unknown)
Segmentation fault

This possibly makes the application think it is some kind of HW platform.

Is there a sample fruid.json available to execute the fake SAI tests?
2a5e5b1 is the commit used when building fboss.

Any help is much appreciated?

qsfp_service crashes on bad modules

If you have a broken QSFP module inserted when qsfp_service is running, it fails with:

E1008 18:30:19.830410  5199 FunctionScheduler.cpp:508] Error running the scheduled function <refreshTransceivers>: N8facebook5fboss10FbossErrorE: QSFP IDProm failed as QSFP is not ready

but otherwise continues to run. If you then restart qsfp_service it crashes with:

E1006 18:27:01.224939 28763 WedgeProductInfo.cpp:67] json parse error on line 0: expected json value
terminate called after throwing an instance of 'facebook::fboss::FbossError'
  what():  QSFP IDProm failed as QSFP is not ready
*** Aborted at 1538850421 (unix time) try "date -d @1538850421" if you are using GNU date ***
PC: @     0x7f5e3ac46fff gsignal
*** SIGABRT (@0x705b) received by PID 28763 (TID 0x7f5e439c8a80) from PID 28763; stack trace: ***
    @     0x7f5e416860c0 (unknown)
    @     0x7f5e3ac46fff gsignal
    @     0x7f5e3ac4842a abort
    @     0x7f5e3b55f0ad __gnu_cxx::__verbose_terminate_handler()
    @     0x7f5e3b55d066 (unknown)
    @     0x7f5e3b55d0b1 std::terminate()
    @     0x7f5e3b55d2c9 __cxa_throw
    @     0x562fdc2f9fa0 facebook::fboss::QsfpModule::setQsfpIdprom()
    @     0x562fdc2fc7e1 facebook::fboss::QsfpModule::updateQsfpData()
    @     0x562fdc2fbc34 facebook::fboss::QsfpModule::refreshLocked()
    @     0x562fdc2fba87 facebook::fboss::QsfpModule::refresh()
    @     0x562fdc30d81a facebook::fboss::WedgeManager::initTransceiverMap()
    @     0x562fdc2f5d77 facebook::fboss::QsfpServiceHandler::init()
    @     0x562fdc2f2ea4 main
    @     0x7f5e3ac342e1 __libc_start_main
    @     0x562fdc2f221a _start
    @                0x0 (unknown)

Build failed on ubuntu 14.04 with thrift/lib/cpp/async/TEventBase.h: No such file or directory

[ 16%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/Main.cpp.o
[ 17%] Building CXX object CMakeFiles/fboss_agent.dir/fboss/agent/NeighborListenerClient.cpp.o
/home/osboxes/git/fboss/fboss/agent/NeighborListenerClient.cpp:12:45: fatal error: thrift/lib/cpp/async/TEventBase.h: No such file or directory
#include <thrift/lib/cpp/async/TEventBase.h>
^
compilation terminated.
make[2]: *** [CMakeFiles/fboss_agent.dir/fboss/agent/NeighborListenerClient.cpp.o] Error 1
make[1]: *** [CMakeFiles/fboss_agent.dir/all] Error 2
make: *** [all] Error 2

Issues in build

I am facing a problem while building. I used the getdeps.sh for the dependencies and followed rest of the build instructions, but make command errored out with the below messages. Anybody have any suggestions?


~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp: In lambda function:
~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp:391:21: error: ‘class facebook::stats::ExportedStatMap’ has no member named ‘getStatPtr’
return statMap->getStatPtr(statName)->getSum(0);
^
~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp: In lambda function:
~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp:395:15: error: void value not ignored as it ought to be ctr.bytes = getSumStat(prefix, "bytes");
^
~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp:396:19: error: void value not ignored as it ought to be ctr.ucastPkts = getSumStat(prefix, "unicast_pkts");
^
~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp:397:23: error: void value not ignored as it ought to be ctr.multicastPkts = getSumStat(prefix, "multicast_pkts");
^
~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp:398:23: error: void value not ignored as it ought to be ctr.broadcastPkts = getSumStat(prefix, "broadcast_pkts");
^
~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp:399:23: error: void value not ignored as it ought to be ctr.errors.errors = getSumStat(prefix, "errors");
^
~/home/workspace/fboss/fboss/agent/ThriftHandler.cpp:400:25: error: void value not ignored as it ought to be ctr.errors.discards = getSumStat(prefix, "discards");

OpenNSL 3.5.0.1 report

Hi,

We're currently running FBOSS with a naively updated OpenNSL 3.5.0.1.

Since the reported crash in getdeps.sh should occur in opennsl_pkt_alloc we verified the upgrade by using LLDP:

V1008 19:57:34.172925 10343 BcmSwitch.cpp:1520] sendPacketOutOfPort for5
V1008 19:57:34.173009 10343 LldpManager.cpp:191] sent LLDP  on port 5 with CPU MAC 56:ab:3a:05:fc:0a port id XE5 and vlan 552
[..]
V1008 19:57:34.175858 10343 BcmSwitch.cpp:1520] sendPacketOutOfPort for61
V1008 19:57:34.175936 10343 LldpManager.cpp:191] sent LLDP  on port 61 with CPU MAC 56:ab:3a:05:fc:0a port id XE61 and vlan 552
V1008 19:57:34.176015 10343 BcmSwitch.cpp:1520] sendPacketOutOfPort for62
V1008 19:57:34.176088 10343 LldpManager.cpp:191] sent LLDP  on port 62 with CPU MAC 56:ab:3a:05:fc:0a port id XE62 and vlan 552
V1008 19:57:34.176190 10343 LldpManager.cpp:90] Skipping LLDP send as this port is disabled 63
V1008 19:57:34.176255 10343 LldpManager.cpp:90] Skipping LLDP send as this port is disabled 64

No crash was observed.

Using OpenNSL 3.5.0.1 allows using modern kernel drivers and to configure the OpenNSL BCM configuration, so upgrading to it would probably interesting for a lot of folks.

Compilation failure - missing files (commit 71edc23)

Unable to build the FBOSS agent code. Some of the files from the neteng/fboss/lib directory seem to be missing in the master branch).

Compiler output:
....
fboss/agent/state/RouteTableRib.h:17:40: fatal error: neteng/fboss/lib/RadixTree.h: No such file or directory
#include "neteng/fboss/lib/RadixTree.h"

....

Thanks

question for HSDK support

Hi fboss team,
I see attachHSDK is empty, does that mean fboss has not supported HSDK yet? And when will fboss support it? Thanks!

Link failure

I am unable to build fboss agent. I ran ./getdeps.sh before building fboss. No errors reported.
Can someone please advise on this?

Thanks,
Sandesh

[100%] Linking CXX executable wedge_agent
../external/fbthrift/thrift/lib/cpp2/.libs/libthriftcpp2.so: undefined reference to `vtable for apache::thrift::ThriftProcessor'
collect2: error: ld returned 1 exit status
CMakeFiles/wedge_agent.dir/build.make:263: recipe for target 'wedge_agent' failed
make[2]: *** [wedge_agent] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/wedge_agent.dir/all' failed
make[1]: *** [CMakeFiles/wedge_agent.dir/all] Error 2
Makefile:83: recipe for target 'all' failed

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
uname -a
Linux 4.10.0-33-generic #37~16.04.1-Ubuntu SMP Fri Aug 11 14:07:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Linker errors with fboss

libfboss_agent.a(BcmTxPacket.cpp.o): In function folly::threadlocal_detail::PthreadKeyUnregister::registerKey(unsigned int)': BcmTxPacket.cpp:(.text._ZN5folly18threadlocal_detail20PthreadKeyUnregister11registerKeyEj[_ZN5folly18threadlocal_detail20PthreadKeyUnregister11registerKeyEj]+0x11): undefined reference tofolly::threadlocal_detail::PthreadKeyUnregister::instance_'
libfboss_agent.a(PktCaptureManager.cpp.o): In function folly::detail::qfind_first_byte_of_nosse(folly::detail::StringPieceLite, folly::detail::StringPieceLite)': PktCaptureManager.cpp:(.text._ZN5folly6detail25qfind_first_byte_of_nosseENS0_15StringPieceLiteES1_[_ZN5folly6detail25qfind_first_byte_of_nosseENS0_15StringPieceLiteES1_]+0xed): undefined reference tofolly::detail::qfind_first_byte_of_byteset(folly::detail::StringPieceLite, folly::detail::StringPieceLite)'
libfboss_agent.a(PktCaptureManager.cpp.o): In function folly::detail::qfind_first_byte_of(folly::Range<char const*>, folly::Range<char const*>)': PktCaptureManager.cpp:(.text._ZN5folly6detail19qfind_first_byte_ofENS_5RangeIPKcEES4_[_ZN5folly6detail19qfind_first_byte_ofENS_5RangeIPKcEES4_]+0x64): undefined reference tofolly::detail::qfind_first_byte_of_sse42(folly::detail::StringPieceLite, folly::detail::StringPieceLite)'
libfboss_agent.a(Address_types.cpp.o): In function apache::thrift::JSONProtocolWriterCommon::writeJSONChar(unsigned char)': Address_types.cpp:(.text._ZN6apache6thrift24JSONProtocolWriterCommon13writeJSONCharEh[_ZN6apache6thrift24JSONProtocolWriterCommon13writeJSONCharEh]+0x7f): undefined reference toapache::thrift::JSONProtocolWriterCommon::kJSONCharTable'
libfboss_agent.a(Address_types.cpp.o): In function unsigned int apache::thrift::JSONProtocolReaderCommon::readJSONString<std::string>(std::string&)': Address_types.cpp:(.text._ZN6apache6thrift24JSONProtocolReaderCommon14readJSONStringISsEEjRT_[_ZN6apache6thrift24JSONProtocolReaderCommon14readJSONStringISsEEjRT_]+0x17b): undefined reference toapache::thrift::JSONProtocolReaderCommon::kEscapeChars'
Address_types.cpp:(.text.ZN6apache6thrift24JSONProtocolReaderCommon14readJSONStringISsEEjRT[ZN6apache6thrift24JSONProtocolReaderCommon14readJSONStringISsEEjRT]+0x28b): undefined reference to apache::thrift::JSONProtocolReaderCommon::kEscapeChars' Address_types.cpp:(.text._ZN6apache6thrift24JSONProtocolReaderCommon14readJSONStringISsEEjRT_[_ZN6apache6thrift24JSONProtocolReaderCommon14readJSONStringISsEEjRT_]+0x2b3): undefined reference toapache::thrift::JSONProtocolReaderCommon::kEscapeCharVals'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::handleRead()' /usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSocket::~AsyncSocket()'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::getRawBytesReceived() const' /usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::shutdownWriteNow()'
/usr/local/lib/libthrift.so: undefined reference to folly::AsyncSocket::setReadCB(folly::AsyncReader::ReadCallback*)' /usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::connect(folly::AsyncSocket::ConnectCallback_, folly::SocketAddress const&, int, std::map<folly::AsyncSocket::OptionKey, int, std::lessfolly::AsyncSocket::OptionKey, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&)'
/usr/local/lib/libthrift.so: undefined reference to folly::AsyncSSLSocket::getApplicationProtocol()' /usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::setEorTracking(bool)'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::shutdownWrite()' /usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::getRawBytesWritten() const'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::performRead(void__, unsigned long_, unsigned long_)' /usr/local/lib/libthrift.so: undefined reference to folly::AsyncSocket::writeChain(folly::AsyncWriter::WriteCallback_, std::unique_ptr<folly::IOBuf, std::default_deletefolly::IOBuf >&&, folly::WriteFlags)'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::closeNow()' /usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSocket::write(folly::AsyncWriter::WriteCallback_, void const_, unsigned long, folly::WriteFlags)'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSocket::~AsyncSocket()' /usr/local/lib/libthrift.so: undefined reference tofolly::AsyncSSLSocket::getSelectedNextProtocolNoThrow(unsigned char const**, unsigned int_, folly::SSLContext::NextProtocolType_) const'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::~AsyncSSLSocket()' /usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::handleConnect()'
/usr/local/lib/libthrift.so: undefined reference to folly::AsyncSocket::writev(folly::AsyncWriter::WriteCallback*, iovec const*, unsigned long, folly::WriteFlags)' /usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::performWrite(iovec const_, unsigned int, folly::WriteFlags, unsigned int_, unsigned int_)'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSocket::writeChain(folly::AsyncWriter::WriteCallback_, std::unique_ptr<folly::IOBuf, std::default_delete<folly::IOBuf> >&&, folly::WriteFlags)' /usr/local/lib/libthriftcpp2.so: undefined reference to folly::AsyncSSLSocket::getSSLCertSigAlgName() const'
/usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::getApplicationProtocol()' /usr/local/lib/libthrift.so: undefined reference to folly::AsyncSocket::write(folly::AsyncWriter::WriteCallback*, void const*, unsigned long, folly::WriteFlags)'
/usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::setReadCB(folly::AsyncReader::ReadCallback*)' /usr/local/lib/libthriftcpp2.so: undefined reference to folly::EventBase::runAfterDrain(std::function<void ()>&&)'
/usr/local/lib/libthrift.so: undefined reference tofolly::detail::LifoSemRawNodestd::atomic::pool()' /usr/local/lib/libthrift.so: undefined reference to folly::AsyncSSLSocket::getSelectedNextProtocol(unsigned char const**, unsigned int_, folly::SSLContext::NextProtocolType_) const'
/usr/local/lib/libthriftcpp2.so: undefined reference to folly::SSLContext::setRandomizedAdvertisedNextProtocols(std::list<folly::SSLContext::NextProtocolsItem, std::allocator<folly::SSLContext::NextProtocolsItem> > const&, folly::SSLContext::NextProtocolType)' /usr/local/lib/libthrift.so: undefined reference tofolly::AsyncSSLSocket::setReadCB(folly::AsyncReader::ReadCallback_)'
/usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::prepareReadBuffer(void__, unsigned long_)' /usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::good() const'
/usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::connecting() const' /usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::AsyncSSLSocket()'
/usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSocket::writev(folly::AsyncWriter::WriteCallback_, iovec const_, unsigned long, folly::WriteFlags)' /usr/local/lib/libthrift.so: undefined reference to virtual thunk to folly::AsyncSSLSocket::handleWrite()'
/usr/local/lib/libthrift.so: undefined reference tovirtual thunk to folly::AsyncSSLSocket::checkForImmediateRead()' /usr/local/lib/libthriftcpp2.so: undefined reference to folly::EventBase::tryRunAfterDelay(std::function<void ()> const&, unsigned int, folly::TimeoutManager::InternalEnum)'
/usr/local/lib/libthrift.so: undefined reference to`virtual thunk to folly::AsyncSSLSocket::isEorTrackingEnabled() const'
collect2: error: ld returned 1 exit status
make[2]: *** [wedge_agent] Error 1
make[1]: *** [CMakeFiles/wedge_agent.dir/all] Error 2
make: *** [all] Error 2
[email protected]:
/git/fboss/buiild$

fboss build fails with "folly/folly-config.h" no such file or directory..

Hi,

I am trying build fboss on my box, installed all the necessary dependencies with "getdeps.sh", but the build fails with the above error - I could see that in the repository pulled by the script, such a file does not exist.

Can somebody tell me how to get past this issue?

Thanks,
-nagp

Port numbering in FBOSS Python Tool output

Hello,

On a Wedge 16x I'm running FBOSS version a376ab2 compiled from sources and running ONL-DEB8 with kernel 3.16.53. I'm using the configuration fboss/agent/configs/sample1.json.

When running the command fboss_route.py list_ports, I see that port numbers in the output does not match the actual port numbers of the switch. In the output logical ports 1, 2, 3, 4 matches physical port 2, Ports 5, 6, 7, 8 matches physical port 1. Ports 3 and 4 are swapped as well and so on.

fboss_route.py list_ports output Actual Wedge Port Breakout Cable number
Port 1: [enabled=True, up=False, present=None] 2 1
Port 2: [enabled=True, up=False, present=None] 2 2
Port 3: [enabled=True, up=False, present=None] 2 3
Port 4: [enabled=True, up=False, present=None] 2 4
Port 5: [enabled=True, up=False, present=None] 1 1
Port 6: [enabled=True, up=False, present=None] 1 2
Port 7: [enabled=True, up=False, present=None] 1 3
Port 8: [enabled=True, up=False, present=None] 1 4
Port 9: [enabled=True, up=False, present=None] 4 1
Port 10: [enabled=True, up=False, present=None] 4 2
Port 11: [enabled=True, up=False, present=None] 4 3
Port 12: [enabled=True, up=False, present=None] 4 4
Port 13: [enabled=True, up=False, present=None] 3 1
Port 14: [enabled=True, up=False, present=None] 3 2
Port 15: [enabled=True, up=False, present=None] 3 3
Port 16: [enabled=True, up=False, present=None] 3 4
Port 17: [enabled=True, up=False, present=None] 6 1
Port 18: [enabled=True, up=False, present=None] 6 2
Port 19: [enabled=True, up=False, present=None] 6 3
Port 20: [enabled=True, up=False, present=None] 6 4
Port 21: [enabled=True, up=False, present=None] 5 1
Port 22: [enabled=True, up=False, present=None] 5 2
Port 23: [enabled=True, up=False, present=None] 5 3
Port 24: [enabled=True, up=False, present=None] 5 4
Port 25: [enabled=True, up=False, present=None] 8 1
Port 26: [enabled=True, up=False, present=None] 8 2
Port 27: [enabled=True, up=False, present=None] 8 3
Port 28: [enabled=True, up=False, present=None] 8 4
Port 29: [enabled=True, up=False, present=None] 7 1
Port 30: [enabled=True, up=False, present=None] 7 2
Port 31: [enabled=True, up=False, present=None] 7 3
Port 32: [enabled=True, up=False, present=None] 7 4
Port 33: [enabled=True, up=False, present=None] 10 1
Port 34: [enabled=True, up=False, present=None] 10 2
Port 35: [enabled=True, up=False, present=None] 10 3
Port 36: [enabled=True, up=False, present=None] 10 4
Port 37: [enabled=True, up=False, present=None] 9 1
Port 38: [enabled=True, up=False, present=None] 9 2
Port 39: [enabled=True, up=False, present=None] 9 3
Port 40: [enabled=True, up=False, present=None] 9 4
Port 41: [enabled=True, up=False, present=None] 12 1
Port 42: [enabled=True, up=False, present=None] 12 2
Port 43: [enabled=True, up=False, present=None] 12 3
Port 44: [enabled=True, up=False, present=None] 12 4
Port 45: [enabled=True, up=False, present=None] 11 1
Port 46: [enabled=True, up=False, present=None] 11 2
Port 47: [enabled=True, up=False, present=None] 11 3
Port 48: [enabled=True, up=False, present=None] 11 4
Port 49: [enabled=True, up=False, present=None] 14 1
Port 50: [enabled=True, up=False, present=None] 14 2
Port 51: [enabled=True, up=False, present=None] 14 3
Port 52: [enabled=True, up=False, present=None] 14 4
Port 53: [enabled=True, up=False, present=None] 13 1
Port 54: [enabled=True, up=False, present=None] 13 2
Port 55: [enabled=True, up=False, present=None] 13 3
Port 56: [enabled=True, up=False, present=None] 13 4
Port 57: [enabled=True, up=False, present=None] 16 1
Port 58: [enabled=True, up=False, present=None] 16 2
Port 59: [enabled=True, up=False, present=None] 16 3
Port 60: [enabled=True, up=False, present=None] 16 4
Port 61: [enabled=True, up=False, present=None] 15 1
Port 62: [enabled=True, up=False, present=None] 15 2
Port 63: [enabled=True, up=False, present=None] 15 3
Port 64: [enabled=True, up=False, present=None] 15 4

Does someone have an explanation for that ? Is it configurable somewhere ?

Of course I could implement the mapping on the client side. But if there is a better solution I would prefer to do it in a clean way.

fboss_route.py prints binary addresses

Not terribly useful for humans:

# fboss_route.py list_routes
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\xa9\xfe\x00\x00', port=0), prefixLength=16), nextHopAddrs=[BinaryAddress(addr='\xa9\xfe\x00\n', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\xac\x1f\x01\x00', port=0), prefixLength=24), nextHopAddrs=[BinaryAddress(addr='\xac\x1f\x01\x00', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\xac\x1f\x02\x00', port=0), prefixLength=24), nextHopAddrs=[BinaryAddress(addr='\xac\x1f\x02\x00', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\xac\x1f\x03\x00', port=0), prefixLength=24), nextHopAddrs=[BinaryAddress(addr='\xac\x1f\x03\x00', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\xac\x1f\x04\x00', port=0), prefixLength=24), nextHopAddrs=[BinaryAddress(addr='\xac\x1f\x04\x00', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\xac\x1f\x05\x00', port=0), prefixLength=24), nextHopAddrs=[BinaryAddress(addr='\xac\x1f\x05\x00', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\xac\x1f\x06\x00', port=0), prefixLength=24), nextHopAddrs=[BinaryAddress(addr='\xac\x1f\x06\x00', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\n\x0b\x00n', port=0), prefixLength=31), nextHopAddrs=[BinaryAddress(addr='\n\x0b\x00o', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\n\x0b\x08n', port=0), prefixLength=31), nextHopAddrs=[BinaryAddress(addr='\n\x0b\x08o', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\n\x0b\x10n', port=0), prefixLength=31), nextHopAddrs=[BinaryAddress(addr='\n\x0b\x10o', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\n\x0b\x18n', port=0), prefixLength=31), nextHopAddrs=[BinaryAddress(addr='\n\x0b\x18o', port=0)])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr=' \x01\x00\xdb\x11\x11\x11P\x00\x00\x00\x00\x00\x00\x00\x00', port=0), prefixLength=64), nextHopAddrs=[BinaryAddress(addr=' \x01\x00\xdb\x11\x11\x11P\x00\x00\x00\x00\x00\x)
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr='\xfe\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', port=0), prefixLength=64), nextHopAddrs=[])
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr=' \x01\x00\xdb33\x0e\x01\x10\x00\x00\x00\x00\x00\x00\xaa', port=0), prefixLength=127), nextHopAddrs=[BinaryAddress(addr=' \x01\x00\xdb33\x0e\x01\x10\x00\x00\x00\x00\x00\x0)
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr=' \x01\x00\xdb34\x0e\x01\x10\x00\x00\x00\x00\x00\x00\xaa', port=0), prefixLength=127), nextHopAddrs=[BinaryAddress(addr=' \x01\x00\xdb34\x0e\x01\x10\x00\x00\x00\x00\x00\x0)
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr=' \x01\x00\xdb35\x0e\x01\x10\x00\x00\x00\x00\x00\x00\xaa', port=0), prefixLength=127), nextHopAddrs=[BinaryAddress(addr=' \x01\x00\xdb35\x0e\x01\x10\x00\x00\x00\x00\x00\x0)
Route UnicastRoute(dest=IpPrefix(ip=BinaryAddress(addr=' \x01\x00\xdb36\x0e\x01\x10\x00\x00\x00\x00\x00\x00\xaa', port=0), prefixLength=127), nextHopAddrs=[BinaryAddress(addr=' \x01\x00\xdb36\x0e\x01\x10\x00\x00\x00\x00\x00\x0)

fbthrift fails to build saying missing mstch even though mstch is built

Hello,

I am trying to build FBOSS, however, when I get to building fbtrhift from the getdeps.sh it says it cannot find mstch, even though I see it built in the external/mstch directory.
I believe a missing CPPFLAG variable pointing to the correct path is missing since fbthrift is running lmstch to find the library and it fails.

Please advise...

Regression: crash on startup

Hi,

We just updated from e440fcd0e1abfbcea5a08b18494d54bb78c561d6 to current master. With the same configuration we now get:

$ sudo  /usr/local/bin/wedge_agent -mode=wedge -mgmt_if=ma1 -config=/etc/wedge.json -alsologtostderr -v=10000
[ ... ]
xLatency_: 0us notificationQueueSize: 0 nothingHandledYet(): 0
I0927 20:07:37.147341  1304 EventBase.cpp:396] EventBase 0x7ffcc88d4570 loop time: 1001
I0927 20:07:38.148428  1304 EventBase.cpp:481] EventBase 0x7ffcc88d4570 virtual void folly::EventBase::bumpHandlingTime() (loop) latest 18446744073709551589 next 18446744073709551590
I0927 20:07:38.148479  1304 EventBase.cpp:690] latest 18446744073709551589 next 18446744073709551590
I0927 20:07:38.148499  1304 EventBase.cpp:488] EventBase 0x7ffcc88d4570 virtual void folly::EventBase::bumpHandlingTime() (loop) startWork_ 37729045998319
I0927 20:07:38.148531  1304 EventBase.cpp:481] EventBase 0x7ffcc88d4570 virtual void folly::EventBase::bumpHandlingTime() (loop) latest 18446744073709551590 next 18446744073709551590
I0927 20:07:38.148555  1304 EventBase.cpp:690] latest 18446744073709551590 next 18446744073709551590
I0927 20:07:38.148582  1304 EventBase.cpp:690] latest 18446744073709551590 next 18446744073709551590
I0927 20:07:38.148607  1304 EventBase.cpp:356] EventBase 0x7ffcc88d4570 did not timeout  loop time guess: 1001350 idle time: 1001272 busy time: 78 avgLoopTime: 80.0261 maxLatencyLoopTime: 80.0261 maxLatency_: 0us notificationQueueSize: 0 nothingHandledYet(): 0
I0927 20:07:38.148648  1304 EventBase.cpp:396] EventBase 0x7ffcc88d4570 loop time: 1001
Common SDK init completed
I0927 20:07:38.959753  1325 BcmSwitch.cpp:588]  Performing cold boot
I0927 20:07:38.959548  1325 BcmSwitch.cpp:559] Initializing BcmSwitch for unit 0
I0927 20:07:39.149735  1304 EventBase.cpp:481] EventBase 0x7ffcc88d4570 virtual void folly::EventBase::bumpHandlingTime() (loop) latest 18446744073709551590 next 18446744073709551591
I0927 20:07:39.149780  1304 EventBase.cpp:690] latest 18446744073709551590 next 18446744073709551591
I0927 20:07:39.149821  1304 EventBase.cpp:488] EventBase 0x7ffcc88d4570 virtual void folly::EventBase::bumpHandlingTime() (loop) startWork_ 37730047318753
I0927 20:07:39.149868  1304 EventBase.cpp:481] EventBase 0x7ffcc88d4570 virtual void folly::EventBase::bumpHandlingTime() (loop) latest 18446744073709551591 next 18446744073709551591
I0927 20:07:39.149914  1304 EventBase.cpp:690] latest 18446744073709551591 next 18446744073709551591
I0927 20:07:39.149950  1304 EventBase.cpp:690] latest 18446744073709551591 next 18446744073709551591
I0927 20:07:39.149984  1304 EventBase.cpp:356] EventBase 0x7ffcc88d4570 did not timeout  loop time guess: 1001366 idle time: 1001241 busy time: 125 avgLoopTime: 102.76 maxLatencyLoopTime: 102.76 maxLatency_: 0us notificationQueueSize: 0 nothingHandledYet(): 0
I0927 20:07:39.150044  1304 EventBase.cpp:396] EventBase 0x7ffcc88d4570 loop time: 1001
*** Aborted at 1538078859 (unix time) try "date -d @1538078859" if you are using GNU date ***
PC: @     0x563ea0887664 std::unique_ptr<>::get()
*** SIGSEGV (@0x10) received by PID 1304 (TID 0x7fe0448f3700) from PID 16; stack trace: ***
    @     0x7fe05c0ae0c0 (unknown)
    @     0x563ea0887664 std::unique_ptr<>::get()
    @     0x563ea0887682 std::unique_ptr<>::operator->()
    @     0x563ea0882a38 facebook::fboss::BcmControlPlane::getMulticastQueueSettings()
    @     0x563ea0870a9a facebook::fboss::BcmSwitch::getColdBootSwitchState()
    @     0x563ea087305c facebook::fboss::BcmSwitch::init()
    @     0x563ea09f9fde facebook::fboss::SwSwitch::init()
    @     0x563ea092e57d facebook::fboss::Initializer::initImpl()
    @     0x563ea092de9c facebook::fboss::Initializer::initThread()
    @     0x563ea09366ac _ZSt13__invoke_implIvRKMN8facebook5fboss11InitializerEFvvEPS2_JEET_St21__invoke_memfun_derefOT0_OT1_DpOT2_
    @     0x563ea0936639 _ZSt8__invokeIRKMN8facebook5fboss11InitializerEFvvEJPS2_EENSt9result_ofIFOT_DpOT0_EE4typeESA_SD_
    @     0x563ea09365ea _ZNKSt12_Mem_fn_baseIMN8facebook5fboss11InitializerEFvvELb1EEclIJPS2_EEEDTcl8__invokedtdefpT6_M_pmfspcl7forwardIT_Efp_EEEDpOS8_
    @     0x563ea0936591 _ZNSt12_Bind_simpleIFSt7_Mem_fnIMN8facebook5fboss11InitializerEFvvEEPS3_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE
    @     0x563ea09363cd std::_Bind_simple<>::operator()()
    @     0x563ea0936194 std::thread::_State_impl<>::_M_run()
    @     0x7fe055195e6f (unknown)
    @     0x7fe05c0a4494 start_thread
    @     0x7fe05490aacf clone
    @                0x0 (unknown)
Segmentation fault
[email protected]:~$ sudo  /usr/local

To me it looks like queueManager_ is not initialized by the time that de9ad1f introduced the call to getMulticastQueueSettings.

We will try to debug this, will post any findings.

Make Wedge transparent to VLANs

Hi,

I need to make sure the switch is transparent to VLANs
is it possible ? and how ?
I can not find an example of fboss config that allows this ...

thanks

fboss_route.py thrift crashing on `list_optics`

Using a Wedge 40 with pure open-source ONL & FBOSS, list_optics crashes with a thrift error:

[email protected]:~# fboss_route.py list_optics
Traceback (most recent call last):
  File "/usr/local/bin/fboss_route.py", line 188, in <module>
    args.func(args)
  File "/usr/local/bin/fboss_route.py", line 72, in list_optics
    for key,val in client.getTransceiverInfo(range(1,64)).iteritems():
  File "/usr/local/lib/python2.7/dist-packages/fboss/ctrl/FbossCtrl.py", line 1023, in getTransceiverInfo
    return self.recv_getTransceiverInfo()
  File "/usr/local/lib/python2.7/dist-packages/fboss/ctrl/FbossCtrl.py", line 1040, in recv_getTransceiverInfo
    raise x
thrift.Thrift.TApplicationException: St12out_of_range: flat_map::at key not found

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.