Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ find_package(Glog REQUIRED)
include_directories(${GLOG_INCLUDE_DIRS})
find_package(folly CONFIG REQUIRED)
include_directories(${FOLLY_INCLUDE_DIR})
find_package(Boost REQUIRED COMPONENTS container filesystem)
find_package(Boost REQUIRED COMPONENTS container filesystem regex)
include_directories(${Boost_INCLUDE_DIR})
find_package(fb303 CONFIG REQUIRED)
find_package(fizz CONFIG REQUIRED)
Expand Down
1 change: 0 additions & 1 deletion cmake/AgentHwSaiStoreTest.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ add_executable(store_test
fboss/agent/hw/sai/store/tests/UdfStoreTest.cpp
fboss/agent/hw/sai/store/tests/VlanStoreTest.cpp
fboss/agent/hw/sai/store/tests/WredStoreTest.cpp
fboss/agent/hw/sai/store/tests/UdfStoreTest.cpp
)

target_link_libraries(store_test
Expand Down
1 change: 0 additions & 1 deletion cmake/AgentState.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@ add_library(state
fboss/agent/state/UdfGroupMap.cpp
fboss/agent/state/UdfPacketMatcher.cpp
fboss/agent/state/UdfPacketMatcherMap.cpp
fboss/agent/state/IpTunnel.cpp
fboss/agent/state/IpTunnelMap.cpp
fboss/agent/state/Vlan.cpp
fboss/agent/state/VlanMap.cpp
Expand Down
1 change: 0 additions & 1 deletion cmake/AgentTestAgentHwTests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,6 @@ add_library(agent_hw_test_src
fboss/agent/test/agent_hw_tests/AgentRollbackTests.cpp
fboss/agent/test/agent_hw_tests/AgentRouteRollbackTests.cpp
fboss/agent/test/agent_hw_tests/AgentPacketStreamHandlerTests.cpp
fboss/agent/test/agent_hw_tests/AgentAclTableGroupTests.cpp
)

target_link_libraries(agent_hw_test_src
Expand Down
12 changes: 10 additions & 2 deletions cmake/CliFboss2.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -968,6 +968,11 @@ add_library(fboss2_config_lib
fboss/cli/fboss2/commands/config/protocol/bgp/neighbor/CmdConfigProtocolBgpNeighbor.h
fboss/cli/fboss2/commands/config/protocol/bgp/peer-group/CmdConfigProtocolBgpPeerGroup.cpp
fboss/cli/fboss2/commands/config/protocol/bgp/peer-group/CmdConfigProtocolBgpPeerGroup.h
fboss/cli/fboss2/commands/config/protocol/bgp/policy/CmdConfigProtocolBgpPolicy.cpp
fboss/cli/fboss2/commands/config/protocol/bgp/policy/CmdConfigProtocolBgpPolicy.h
fboss/cli/fboss2/commands/config/protocol/bgp/policy/as-path-list/BgpAsPathListCliUtils.h
fboss/cli/fboss2/commands/config/protocol/bgp/policy/as-path-list/CmdConfigProtocolBgpPolicyAsPathList.cpp
fboss/cli/fboss2/commands/config/protocol/bgp/policy/as-path-list/CmdConfigProtocolBgpPolicyAsPathList.h
fboss/cli/fboss2/commands/config/ptp/CmdConfigPtp.cpp
fboss/cli/fboss2/commands/config/ptp/CmdConfigPtp.h
fboss/cli/fboss2/commands/config/ptp/transparent_clock/CmdConfigPtpTransparentClock.cpp
Expand Down Expand Up @@ -1104,6 +1109,10 @@ add_library(fboss2_config_lib
fboss/cli/fboss2/commands/delete/protocol/bgp/neighbor/CmdDeleteProtocolBgpNeighbor.h
fboss/cli/fboss2/commands/delete/protocol/bgp/peer-group/CmdDeleteProtocolBgpPeerGroup.cpp
fboss/cli/fboss2/commands/delete/protocol/bgp/peer-group/CmdDeleteProtocolBgpPeerGroup.h
fboss/cli/fboss2/commands/delete/protocol/bgp/policy/CmdDeleteProtocolBgpPolicy.cpp
fboss/cli/fboss2/commands/delete/protocol/bgp/policy/CmdDeleteProtocolBgpPolicy.h
fboss/cli/fboss2/commands/delete/protocol/bgp/policy/as-path-list/CmdDeleteProtocolBgpPolicyAsPathList.cpp
fboss/cli/fboss2/commands/delete/protocol/bgp/policy/as-path-list/CmdDeleteProtocolBgpPolicyAsPathList.h
fboss/cli/fboss2/commands/delete/protocol/CmdDeleteProtocol.h
fboss/cli/fboss2/commands/delete/protocol/static/CmdDeleteProtocolStatic.cpp
fboss/cli/fboss2/commands/delete/protocol/static/CmdDeleteProtocolStatic.h
Expand All @@ -1117,8 +1126,6 @@ add_library(fboss2_config_lib
fboss/cli/fboss2/commands/delete/copp/queue/CmdDeleteCoppQueue.h
fboss/cli/fboss2/commands/delete/copp/reason/CmdDeleteCoppReason.cpp
fboss/cli/fboss2/commands/delete/copp/reason/CmdDeleteCoppReason.h
fboss/cli/fboss2/commands/delete/qos/CmdDeleteQos.cpp
fboss/cli/fboss2/commands/delete/qos/CmdDeleteQos.h
fboss/cli/fboss2/commands/delete/qos/policy/CmdDeleteQosPolicy.cpp
fboss/cli/fboss2/commands/delete/qos/policy/CmdDeleteQosPolicy.h
fboss/cli/fboss2/commands/delete/qos/policy/CmdDeleteQosPolicyMap.cpp
Expand Down Expand Up @@ -1161,6 +1168,7 @@ target_link_libraries(fboss2_config_lib
bgp_config_cpp2
switchinfo_utils
platform_mapping
Boost::regex
Folly::folly
)

Expand Down
2 changes: 2 additions & 0 deletions cmake/CliFboss2TestConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ add_executable(fboss2_cmd_config_test
fboss/cli/fboss2/test/config/CmdConfigIcmpV4UnavailableSrcAddrTest.cpp
fboss/cli/fboss2/test/config/CmdConfigBgpNeighborTest.cpp
fboss/cli/fboss2/test/config/CmdConfigBgpPeerGroupTest.cpp
fboss/cli/fboss2/test/config/CmdConfigBgpPolicyAsPathListTest.cpp
fboss/cli/fboss2/test/config/CmdConfigCoppTest.cpp
fboss/cli/fboss2/test/config/CmdConfigDataPlaneTrafficPolicyTest.cpp
fboss/cli/fboss2/test/config/CmdConfigDhcpTest.cpp
Expand Down Expand Up @@ -50,6 +51,7 @@ add_executable(fboss2_cmd_config_test
fboss/cli/fboss2/test/config/CmdDeleteArpTest.cpp
fboss/cli/fboss2/test/config/CmdDeleteBgpNeighborTest.cpp
fboss/cli/fboss2/test/config/CmdDeleteBgpPeerGroupTest.cpp
fboss/cli/fboss2/test/config/CmdDeleteBgpPolicyAsPathListTest.cpp
fboss/cli/fboss2/test/config/CmdDeleteConfigInterfaceTest.cpp
fboss/cli/fboss2/test/config/CmdDeleteCoppQueueTest.cpp
fboss/cli/fboss2/test/config/CmdDeleteCoppReasonTest.cpp
Expand Down
1 change: 1 addition & 0 deletions cmake/CliFboss2TestIntegrationTest.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ add_executable(fboss2_integration_test
fboss/cli/fboss2/test/integration_test/ConfigBgpGlobalTest.cpp
fboss/cli/fboss2/test/integration_test/ConfigBgpNeighborTest.cpp
fboss/cli/fboss2/test/integration_test/ConfigBgpPeerGroupTest.cpp
fboss/cli/fboss2/test/integration_test/ConfigBgpPolicyAsPathListTest.cpp
fboss/cli/fboss2/test/integration_test/ConfigBgpSessionTest.cpp
fboss/cli/fboss2/test/integration_test/ConfigConcurrentSessionsTest.cpp
fboss/cli/fboss2/test/integration_test/ConfigHostnameTest.cpp
Expand Down
1 change: 0 additions & 1 deletion cmake/ThriftCowVisitors.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ add_library(
thrift_cow_visitors
fboss/thrift_cow/visitors/DeltaVisitor.h
fboss/thrift_cow/visitors/ExtendedPathVisitor.h
fboss/thrift_cow/visitors/ExtendedPathVisitor.h
fboss/thrift_cow/visitors/PathVisitor.h
fboss/thrift_cow/visitors/RecurseVisitor.h
fboss/thrift_cow/visitors/VisitorUtils.h
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/debugging/fboss_cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -1249,7 +1249,7 @@ The BGP command families are:
- **`config protocol bgp global [<attribute> <value> ...]`**: process-wide settings such as `router-id`, `local-asn`, `hold-time`, `confed-asn`, `cluster-id`, `network6` (advertised networks), and `switch-limit` overload-protection settings.
- **`config protocol bgp neighbor <ip-address> [<attribute> <value> ...]`**: per-neighbor settings such as `remote-asn`, `local-asn`, `peer-group`, `description`, `bind-addr address`, `next-hop4`/`next-hop6`/`next-hop-self`, `passive <true|false>`, `afi disable-ipv4-afi`/`disable-ipv6-afi`, `rr-client`, `confed-peer`, `type`, `ingress-policy`/`egress-policy`, `add-path send|receive`, `link-bandwidth`, `graceful-restart restart-time`, `timers hold-time|keepalive|out-delay|withdraw-unprog-delay`, and `max-route pre-filter|post-filter` limits. A bare `neighbor <ip-address>` creates the neighbor.
- **`config protocol bgp peer-group <name> [<attribute> <value> ...]`**: the same attribute family applied to a peer group, which neighbors can then reference via `peer-group`.
- **`config protocol bgp policy as-path-list <name> [entry <seq-num>] [<attribute> <value> ...]`**: BGP routing policy objects. `as-path-list` entries support `asn-regexp`, `description`, and `match-logic <EQUAL|NOT_EQUAL>`. More policy object types (community-list, prefix-list, routing-policy) will follow the same pattern.
- **`config protocol bgp policy as-path-list <name> [<attribute> <value> ...]`**: BGP routing policy objects. An `as-path-list` is a flat set of AS-path regexes: `regex <regex>` appends one pattern (repeat the command per pattern; join AS numbers with `_`, e.g. `^65000_65001$`), plus `description` and `boolean-operator <AND|OR>`. `delete ... as-path-list <name> regex <regex>` removes one pattern. More policy object types (community-list, prefix-list, routing-policy) follow the same pattern.

Each family has a `delete` counterpart, e.g. `fboss2-dev delete protocol bgp neighbor <ip-address>`.

Expand Down
12 changes: 12 additions & 0 deletions fboss/cli/fboss2/BUCK
Original file line number Diff line number Diff line change
Expand Up @@ -1177,6 +1177,8 @@ cpp_library(
"commands/config/protocol/bgp/global/CmdConfigProtocolBgpGlobal.cpp",
"commands/config/protocol/bgp/neighbor/CmdConfigProtocolBgpNeighbor.cpp",
"commands/config/protocol/bgp/peer-group/CmdConfigProtocolBgpPeerGroup.cpp",
"commands/config/protocol/bgp/policy/CmdConfigProtocolBgpPolicy.cpp",
"commands/config/protocol/bgp/policy/as-path-list/CmdConfigProtocolBgpPolicyAsPathList.cpp",
"commands/config/protocol/static/CmdConfigProtocolStatic.cpp",
"commands/config/protocol/static/route/add/CmdConfigProtocolStaticRouteAdd.cpp",
"commands/config/ptp/CmdConfigPtp.cpp",
Expand Down Expand Up @@ -1244,6 +1246,8 @@ cpp_library(
"commands/delete/protocol/bgp/CmdDeleteProtocolBgp.cpp",
"commands/delete/protocol/bgp/neighbor/CmdDeleteProtocolBgpNeighbor.cpp",
"commands/delete/protocol/bgp/peer-group/CmdDeleteProtocolBgpPeerGroup.cpp",
"commands/delete/protocol/bgp/policy/CmdDeleteProtocolBgpPolicy.cpp",
"commands/delete/protocol/bgp/policy/as-path-list/CmdDeleteProtocolBgpPolicyAsPathList.cpp",
"commands/delete/protocol/static/CmdDeleteProtocolStatic.cpp",
"commands/delete/protocol/static/route/CmdDeleteProtocolStaticRoute.cpp",
"commands/delete/qos/CmdDeleteQos.cpp",
Expand Down Expand Up @@ -1317,6 +1321,9 @@ cpp_library(
"commands/config/protocol/bgp/global/CmdConfigProtocolBgpGlobal.h",
"commands/config/protocol/bgp/neighbor/CmdConfigProtocolBgpNeighbor.h",
"commands/config/protocol/bgp/peer-group/CmdConfigProtocolBgpPeerGroup.h",
"commands/config/protocol/bgp/policy/CmdConfigProtocolBgpPolicy.h",
"commands/config/protocol/bgp/policy/as-path-list/BgpAsPathListCliUtils.h",
"commands/config/protocol/bgp/policy/as-path-list/CmdConfigProtocolBgpPolicyAsPathList.h",
"commands/config/protocol/static/CmdConfigProtocolStatic.h",
"commands/config/protocol/static/route/StaticRouteUtils.h",
"commands/config/protocol/static/route/add/CmdConfigProtocolStaticRouteAdd.h",
Expand Down Expand Up @@ -1385,6 +1392,8 @@ cpp_library(
"commands/delete/protocol/bgp/CmdDeleteProtocolBgp.h",
"commands/delete/protocol/bgp/neighbor/CmdDeleteProtocolBgpNeighbor.h",
"commands/delete/protocol/bgp/peer-group/CmdDeleteProtocolBgpPeerGroup.h",
"commands/delete/protocol/bgp/policy/CmdDeleteProtocolBgpPolicy.h",
"commands/delete/protocol/bgp/policy/as-path-list/CmdDeleteProtocolBgpPolicyAsPathList.h",
"commands/delete/protocol/static/CmdDeleteProtocolStatic.h",
"commands/delete/protocol/static/route/CmdDeleteProtocolStaticRoute.h",
"commands/delete/qos/CmdDeleteQos.h",
Expand Down Expand Up @@ -1457,6 +1466,9 @@ cpp_library(
"//thrift/lib/cpp2:field_ref",
"//thrift/lib/cpp2/gen:module_types_h",
],
external_deps = [
("boost", None, "boost_regex"),
],
)

export_file(
Expand Down
34 changes: 34 additions & 0 deletions fboss/cli/fboss2/CmdListConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
#include "fboss/cli/fboss2/commands/config/protocol/bgp/global/CmdConfigProtocolBgpGlobal.h"
#include "fboss/cli/fboss2/commands/config/protocol/bgp/neighbor/CmdConfigProtocolBgpNeighbor.h"
#include "fboss/cli/fboss2/commands/config/protocol/bgp/peer-group/CmdConfigProtocolBgpPeerGroup.h"
#include "fboss/cli/fboss2/commands/config/protocol/bgp/policy/CmdConfigProtocolBgpPolicy.h"
#include "fboss/cli/fboss2/commands/config/protocol/bgp/policy/as-path-list/CmdConfigProtocolBgpPolicyAsPathList.h"
#include "fboss/cli/fboss2/commands/config/protocol/static/CmdConfigProtocolStatic.h"
#include "fboss/cli/fboss2/commands/config/protocol/static/route/add/CmdConfigProtocolStaticRouteAdd.h"
#include "fboss/cli/fboss2/commands/config/ptp/CmdConfigPtp.h"
Expand Down Expand Up @@ -109,6 +111,8 @@
#include "fboss/cli/fboss2/commands/delete/protocol/bgp/CmdDeleteProtocolBgp.h"
#include "fboss/cli/fboss2/commands/delete/protocol/bgp/neighbor/CmdDeleteProtocolBgpNeighbor.h"
#include "fboss/cli/fboss2/commands/delete/protocol/bgp/peer-group/CmdDeleteProtocolBgpPeerGroup.h"
#include "fboss/cli/fboss2/commands/delete/protocol/bgp/policy/CmdDeleteProtocolBgpPolicy.h"
#include "fboss/cli/fboss2/commands/delete/protocol/bgp/policy/as-path-list/CmdDeleteProtocolBgpPolicyAsPathList.h"
#include "fboss/cli/fboss2/commands/delete/protocol/static/CmdDeleteProtocolStatic.h"
#include "fboss/cli/fboss2/commands/delete/protocol/static/route/CmdDeleteProtocolStaticRoute.h"
#include "fboss/cli/fboss2/commands/delete/qos/CmdDeleteQos.h"
Expand Down Expand Up @@ -435,6 +439,22 @@ const CommandTree& kConfigCommandTree() {
commandHandler<CmdConfigProtocolBgpNeighbor>,
argRegistrar<CmdConfigProtocolBgpNeighborTraits>,
},
{
"policy",
"Configure BGP policy objects",
commandHandler<CmdConfigProtocolBgpPolicy>,
argRegistrar<CmdConfigProtocolBgpPolicyTraits>,
{{
"as-path-list",
"Configure BGP AS-path list: <name> "
"[<attribute> <value> ...] (description, "
"regex, boolean-operator)",
commandHandler<
CmdConfigProtocolBgpPolicyAsPathList>,
argRegistrar<
CmdConfigProtocolBgpPolicyAsPathListTraits>,
}},
},
},
},
{
Expand Down Expand Up @@ -776,6 +796,20 @@ const CommandTree& kConfigCommandTree() {
"Delete a BGP peer-group: <name>",
commandHandler<CmdDeleteProtocolBgpPeerGroup>,
argRegistrar<CmdDeleteProtocolBgpPeerGroupTraits>,
},
{
"policy",
"Delete BGP policy objects",
commandHandler<CmdDeleteProtocolBgpPolicy>,
argTypeHandler<CmdDeleteProtocolBgpPolicyTraits>,
{{
"as-path-list",
"Delete a BGP AS-path list, or one of its regexes: "
"<name> [regex <regex>]",
commandHandler<CmdDeleteProtocolBgpPolicyAsPathList>,
argRegistrar<
CmdDeleteProtocolBgpPolicyAsPathListTraits>,
}},
}},
},
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright (c) 2004-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/

#include "fboss/cli/fboss2/commands/config/protocol/bgp/policy/CmdConfigProtocolBgpPolicy.h"

#include "fboss/cli/fboss2/CmdHandler.cpp"

namespace facebook::fboss {

CmdConfigProtocolBgpPolicyTraits::RetType
CmdConfigProtocolBgpPolicy::queryClient(const HostInfo& /* hostInfo */) {
return "BGP policy configuration. Use subcommands: as-path-list";
}

void CmdConfigProtocolBgpPolicy::printOutput(const RetType& output) {
std::cout << output << std::endl;
}

// Explicit template instantiation
template void
CmdHandler<CmdConfigProtocolBgpPolicy, CmdConfigProtocolBgpPolicyTraits>::run();

} // namespace facebook::fboss
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Copyright (c) 2004-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/

#pragma once

#include "fboss/cli/fboss2/CmdHandler.h"
#include "fboss/cli/fboss2/commands/config/protocol/bgp/CmdConfigProtocolBgp.h"

namespace facebook::fboss {

// Grouping node for `config protocol bgp policy <object-type> ...`. Holds no
// state of its own; the per-object-type dispatchers (as-path-list, and later
// community-list/prefix-list/routing-policy) are its subcommands. Mirrors
// CmdConfigProtocolBgp.
struct CmdConfigProtocolBgpPolicyTraits : public WriteCommandTraits {
using ParentCmd = CmdConfigProtocolBgp;
using ObjectArgType = std::monostate;
using RetType = std::string;
};

class CmdConfigProtocolBgpPolicy : public CmdHandler<
CmdConfigProtocolBgpPolicy,
CmdConfigProtocolBgpPolicyTraits> {
public:
using ObjectArgType = CmdConfigProtocolBgpPolicyTraits::ObjectArgType;
using RetType = CmdConfigProtocolBgpPolicyTraits::RetType;

RetType queryClient(const HostInfo& hostInfo);

void printOutput(const RetType& output);
};

} // namespace facebook::fboss
Loading
Loading