Skip to content

[Nexthop][fboss2-dev] Add CLI command for managing static MAC entries on VLANs#837

Closed
benoit-nexthop wants to merge 1 commit intofacebook:mainfrom
nexthop-ai:fboss2-cli-prototype_part17
Closed

[Nexthop][fboss2-dev] Add CLI command for managing static MAC entries on VLANs#837
benoit-nexthop wants to merge 1 commit intofacebook:mainfrom
nexthop-ai:fboss2-cli-prototype_part17

Conversation

@benoit-nexthop
Copy link
Contributor

@benoit-nexthop benoit-nexthop commented Jan 26, 2026

Add new fboss2-dev CLI commands for managing static MAC address entries
on VLANs:

  • config vlan <vlan-id> static-mac add <mac-address> <port-id>
  • config vlan <vlan-id> static-mac delete <mac-address>

These commands allow operators to configure static MAC address entries
in the FBOSS switch configuration, which is useful for scenarios where
MAC addresses need to be pinned to specific ports.

Features:

  • VLAN ID validation (1-4094 range)
  • MAC address format validation
  • Port existence validation with automatic logical ID resolution
  • Duplicate entry detection for add operations
  • Integration with ConfigSession for proper config management

Unit tests:

   /var/FBOSS/tmp_bld_dir/build/fboss/fboss2_cmd_config_test --gtest_filter='CmdConfigVlanStaticMacTestFixture.*'

   Output:
   [==========] Running 31 tests from 1 test suite.
   ...
   [  PASSED  ] 31 tests.

Note: this change is part of a series, the previous one is #832, the next one is #838.

Sample usage

$ fboss2-dev config vlan 2001 static-mac add 02:00:00:E2:E2:01 eth1/1/1
Successfully added static MAC entry: MAC 02:00:00:E2:E2:01 -> VLAN 2001, Port eth1/1/1 (ID 9)
$ fboss2-dev config session commit
Config session committed successfully as r77 and config reloaded.
$ fboss2-dev config vlan 2001 static-mac delete 02:00:00:E2:E2:01
Successfully deleted static MAC entry: MAC 02:00:00:E2:E2:01 from VLAN 2001

Original change by @manoharan-nexthop

@meta-cla meta-cla bot added the CLA Signed label Jan 26, 2026
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part17 branch from 03e8084 to 4da44f1 Compare January 27, 2026 23:56
@benoit-nexthop benoit-nexthop changed the title [Nexthop][fboss2-dev] Add CLI commands for configuring priority group policies [Nexthop][fboss2-dev] Add CLI command for managing static MAC entries on VLANs Jan 27, 2026
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part17 branch 2 times, most recently from ea1247d to c5e8e1b Compare January 28, 2026 18:48
meta-codesync bot pushed a commit that referenced this pull request Mar 5, 2026
…esolution (#832)

Summary:
**Pre-submission checklist**
- [x] I've ran the linters locally and fixed lint errors related to the files I modified in this PR. You can install the linters by running `pip install -r requirements-dev.txt && pre-commit install`
- [x] `pre-commit run`

When multiple users have concurrent config sessions, the first user to commit succeeds, but subsequent users get an error because their session is based on a stale commit. Previously, whoever committed last would overwrite changes of other users that committed before them.

This commit adds a `config session rebase` command that:
1. Takes the diff between the config as of the base commit and the session
2. Re-applies this diff on top of the current HEAD (similar to git rebase)
3. Uses a recursive 3-way merge algorithm for JSON objects
4. Detects and reports conflicts at specific JSON paths
5. Updates the session's base to the current HEAD on success

The 3-way merge algorithm handles:
- Objects: recursively merges each key
- Arrays: element-by-element merge if sizes match
- Scalars: conflict if both head and session changed differently from base

Note: this change is part of a series, the previous one is #825, the next one is #837.

Pull Request resolved: #832

Test Plan:
Add unit tests covering:
- Successful rebase with non-conflicting changes
- Rebase failure when changes conflict
- Rebase not needed when session is already up-to-date

## Sample usage

TBD

Reviewed By: srikrishnagopu

Differential Revision: D95099578

Pulled By: joseph5wu

fbshipit-source-id: b665afa35a43829981ce9dd8434abf5b3942882a
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part17 branch from c5e8e1b to cf2969f Compare March 5, 2026 23:01
@benoit-nexthop benoit-nexthop requested review from a team as code owners March 5, 2026 23:01
@meta-codesync
Copy link

meta-codesync bot commented Mar 5, 2026

@joseph5wu has imported this pull request. If you are a Meta employee, you can view this in D95454566.

Add new fboss2-dev CLI commands for managing static MAC address entries
on VLANs:
 - `config vlan <vlan-id> static-mac add <mac-address> <port-id>`
 - `config vlan <vlan-id> static-mac delete <mac-address>`

These commands allow operators to configure static MAC address entries
in the FBOSS switch configuration, which is useful for scenarios where
MAC addresses need to be pinned to specific ports.

Features:
* VLAN ID validation (1-4094 range)
* MAC address format validation
* Port existence validation with automatic logical ID resolution
* Duplicate entry detection for add operations
* Integration with ConfigSession for proper config management

Unit Tests:
```
   ./fboss/oss/scripts/nhfboss-test.sh --timeout 30 --retry 0 --filter 'CmdConfigVlanStaticMac'

   Output:
   [==========] Running 33 tests from 1 test suite.
   ...
   [  PASSED  ] 33 tests.
```

Manual CLI Testing:
```
$ fboss2-dev config vlan 2001 static-mac add 02:00:00:E2:E2:01 eth1/1/1
Successfully added static MAC entry: MAC 02:00:00:E2:E2:01 -> VLAN 2001, Port eth1/1/1 (ID 9)
$ fboss2-dev config session commit
Config session committed successfully as r77 and config reloaded.
$ fboss2-dev config vlan 2001 static-mac delete 02:00:00:E2:E2:01
Successfully deleted static MAC entry: MAC 02:00:00:E2:E2:01 from VLAN 2001
```
@benoit-nexthop benoit-nexthop force-pushed the fboss2-cli-prototype_part17 branch from cf2969f to ce44eea Compare March 6, 2026 00:47
@facebook-github-bot
Copy link
Contributor

@benoit-nexthop has updated the pull request. You must reimport the pull request before landing.

@meta-codesync
Copy link

meta-codesync bot commented Mar 6, 2026

@joseph5wu merged this pull request in d3a68c6.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants