Jasmeet Bagga
jasmeetbagga@meta.com
90d · built 2026-05-28
90-day totals
- Commits
- 359
- Grow
- 9.7
- Maintenance
- 21.7
- Fixes
- 2.3
- Total ETV
- 33.7
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 9 %
- By Growth share
- Top 69 %
30-day trajectory
Last 30 days vs. the 30 days before. Up arrows on Growth and ETV mean improvement; up arrow on Fixes share means more time on fixes (worse).
Daily performance
Daily ETV, stacked by Growth, Maintenance and Fixes.
Work-mix over time
Share of Growth / Maintenance / Fixes over a rolling 7-day window. Reads as 'where is effort flowing right now'.
Bug flow over time
Monthly bug flow attributed to this developer. The left bar (red) is bug impact this dev authored that was addressed in the given month — combining bugs others fixed for them and bugs they fixed themselves. The right bar is fixes they personally shipped that month, split between self-fixes (overlap with the red bar) and fixes done for someone else. X-axis is fix-time, not introduction-time — the Navigara API attributes bugs backward to the author at the moment the fix lands.
- Self-fix share
- 59%
- Bugs you introduced
- 7.5
- Bugs you fixed
- 5.3
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 20 by ETV in the 90-day window.
- 0.9ETVAdd MySidFields to switch state Summary: Add MySidFields struct and mySidMaps to SwitchState thrift definition. MySidFields captures the MySID entry type, SID prefix, and resolved/unresolved next hop information. Also regenerate fsdb_model_thriftpath.h for OSS builds. Reviewed By: tanmayaudupa Differential Revision: D96879421 fbshipit-source-id: 4b8bc51bc0e76fa2adba317ae2ea2b72dec3a8c1github.com-facebook-fboss · dbd258c1 · 2026-03-18
- 0.8ETVagent/state: replace boost::flat_set/flat_map with std::set/std::map Summary: Replace boost::container::flat_set and boost::container::flat_map with std::set and std::map throughout fboss/agent/state/ headers: - LoadBalancer.h: IPv4/IPv6/Transport/MPLSFields - AggregatePort.h: Subports, SubportToForwardingState, SubportToPartnerState - Mirror.h: removed unused using declaration - Port.h: VlanMembership - NodeMap.h: default NodeContainer template parameter - AclMap.h: PrioAclMapTraits::NodeContainer - NeighborTable.h: NeighborTableTraits::NodeContainer Also fixes: - LookupClassRouteUpdater.cpp: dangling iterator from getVlans() returning std::map by value (was latent UB with flat_map too) - Benchmark/test files: qualified bare flat_set references that relied on the removed using declaration from Mirror.h Reviewed By: shri-khare Differential Revision: D99746258 fbshipit-source-id: 3a3c6e977df6e925cdf117baf3e45893fd5d2d1egithub.com-facebook-fboss · 092b11bd · 2026-04-21
- 0.8ETVAdd Srv6Api SAI wrapper for SRV6 SID List Summary: Create the FBOSS SAI API wrapper for the SRV6 SID List object type, following the TunnelApi pattern. This includes: - Srv6Api.h: SaiSrv6SidListTraits with Type, SegmentList, and NextHopId attributes, plus Srv6Api class wrapping sai_srv6_api_t CRUD operations - SaiIp6 wrapper struct in Traits.h to handle sai_ip6_t (uint8_t[16]) which cannot be stored in std::vector directly - Custom _fill/_realloc overloads in SaiAttribute.h for sai_segment_list_t - Srv6SidListSaiId strong type in Types.h - Srv6Api registered in SaiApiTable - SRV6 cases in LoggingUtil.cpp - FakeSaiSrv6 fake implementation for testing - Srv6ApiTracer for SAI call tracing - API unit tests (4 tests) - CMake build instructions Reviewed By: srikrishnagopu Differential Revision: D94454746 fbshipit-source-id: 2e26da501194b84cad39c37e47cbf38e7fa6bfe6github.com-facebook-fboss · 143db97c · 2026-03-01
- 0.7ETVAdd comprehensive unit tests for PktFactory Summary: Add 33 unit tests covering all public PktFactory functions: - makeEthHdr (with/without VLAN) - makeEthTxPacket (with/without VLAN, custom/default payload) - makeIpTxPacket (V4, V6, generic variants) - makeUDPTxPacket (V4, V6, generic, with payload, default payload) - makeTCPTxPacket (V4, V6, generic, dst-mac-only variants) - makeIpInIpTxPacket (outer/inner IPv6 with UDP) - makeARPTxPacket (request, reply, default target MAC) - makeNeighborSolicitation (solicited node multicast) - makeNeighborAdvertisement (with dst IP, with zero dst IP) - makePTPTxPacket (delay request, sync throws for unsupported type) - makeSflowV5Packet (V4, V6) Tests use TxPacket::allocateTxPacket as the allocator and verify packet contents via cursor-based parsing or EthFrame depending on the packet structure. Reviewed By: zechengh09 Differential Revision: D96602972 fbshipit-source-id: f505dedf69c0402ba1f685efb38a85d05a662208github.com-facebook-fboss · b5b0fab6 · 2026-03-15
- 0.6ETVAdd RIB MySid update APIs and unit tests Summary: Implement MySid update APIs in RoutingInformationBase to support SRv6 MySid entries in the RIB-to-SwitchState pipeline: - `mySidFromEntry()` helper: converts MySidEntry thrift struct to shared_ptr<MySid>, restricted to DECAPSULATE_AND_LOOKUP type with no nextHops (throws FbossError otherwise) - `RibRouteTables::updateRib()` (MySid): acquires write lock on synchronizedRouteTables_ and updates mySidTable - `RibRouteTables::updateFib()` (MySid): acquires read lock, calls callback, handles FbossHwUpdateError rollback via reconstructMySidTableFromSwitchState - `RibRouteTables::update()` (MySid): public entry point that calls updateRib then updateFib - `RoutingInformationBase::update()` (MySid): runs update on ribUpdateEventBase_ thread Also adds comprehensive unit tests (15 tests) covering: - Add/delete/replace MySid entries - Type and nextHop validation (reject non-DECAPSULATE types) - SwitchState reflection via MySidMapUpdater - Failure rollback scenarios (empty state, pre-existing entries, injected applied state, failed deletes) - Empty update handling Reviewed By: shri-khare Differential Revision: D97637513 fbshipit-source-id: d964f1ab33d97fc0121ed21658db7f2b17746979github.com-facebook-fboss · bae10990 · 2026-03-24
- 0.6ETVPreserve SRv6 fields through RIB route resolution Summary: SRv6 fields (srv6SegmentList, tunnelType, tunnelId) were being silently dropped during route resolution in RibRouteUpdater. This meant that even though client entries stored SRv6 nexthops correctly, the resolved forwarding info (getForwardInfo) lost the SRv6 encapsulation data, preventing SRv6 tunnels from being programmed in the SAI layer. Fixed 5 locations in RouteUpdater.cpp where SRv6 fields were not propagated: - mergeForwardInfosEcmp(): ECMP merge path now passes SRv6 fields to ResolvedNextHop construction - NextHopCombinedWeightsKey: Added SRv6 fields so UCMP weight combination correctly differentiates nexthops by tunnel - optimizeWeights(): UCMP optimization now preserves SRv6 fields - getFwdInfoFromNhop(): Both connected and recursive resolution paths now carry SRv6 fields through to resolved nexthops - resolveOne() callers: Pass SRv6 fields from unresolved nexthops to getFwdInfoFromNhop Added 5 unit tests covering: - ECMP resolution with SRv6 nexthops - UCMP resolution with SRv6 nexthops (weight ratio preservation) - IPv6 route resolution with SRv6 nexthops - Mixed SRv6 and plain nexthops through ECMP merge - Distinct SRv6 tunnelIds on same interface through UCMP Reviewed By: tanmayaudupa Differential Revision: D95174235 fbshipit-source-id: 94e55c4043e00e10bc3dca660d7d6352d6a0803agithub.com-facebook-fboss · d26767ea · 2026-03-06
- 0.5ETVAdd extended unit tests for SflowStructs covering free functions, enums, and error paths Summary: Add SflowStructsExtTest.cpp with 24 additional tests to achieve near-100% coverage of SflowStructs. The existing 38 tests cover struct serialize/deserialize/roundtrip well, but left gaps in: - Free functions: serializeIP/deserializeIP (direct IPv4/IPv6 round-trips, raw byte verification, unknown address type error path) - Free functions: serializeDataFormat, serializeSflowDataSource, serializeSflowPort (direct byte-level verification) - All 14 HeaderProtocol enum values round-trip (existing tests only used ETHERNET_ISO88023) - AddressType and HeaderProtocol enum numeric values - Error paths: FlowRecord unsupported format, SampleDatagram invalid/zero version - Edge cases: large header data (128 bytes), XDR padding for non-aligned header sizes, empty flow records/samples, unknown sample type skip - Size-vs-serialized consistency checks for FlowSample, SampleRecord, SampleDatagram - End-to-end IPv6 agent datagram with full nested structure - Constants: XDR_BASIC_BLOCK_SIZE, SampleDatagram::VERSION5 Reviewed By: shri-khare Differential Revision: D96622776 fbshipit-source-id: 072274c9babd2947c4e760290d7349af633245dfgithub.com-facebook-fboss · e6495b1d · 2026-03-15
- 0.5ETVAdd comprehensive unit tests for DHCPv6Packet Summary: Add 28 unit tests for DHCPv6Packet covering isDHCPv6Relay for all message types, computePacketLength (relay vs non-relay, with options), write/parse round-trip (non-relay, relay forward, relay reply, with options), addInterfaceIDOption, addRelayMessageOption with inner packet verification, extractOptions with and without selectors, appendOption, equality/inequality (type, transactionId, options, hopCount, addresses), toString, all non-relay type enum values, transaction ID 24-bit masking, and port/length constants. Reviewed By: shri-khare Differential Revision: D96608056 fbshipit-source-id: aef744448b062acd509d87f4a42de5db3f9b0845github.com-facebook-fboss · 40967d48 · 2026-03-15
- 0.5ETVAdd SRv6 field validation and unit tests for RouteNextHop Summary: Add constructor validation for SRv6 fields in ResolvedNextHop and UnresolvedNextHop: when srv6SegmentList is non-empty, tunnelType must be SRV6_ENCAP and tunnelId must be set. Throws FbossError otherwise. Move ResolvedNextHop constructor definitions from header to .cpp file and add a standalone validateSrv6Fields helper in an unnamed namespace. Add unit tests covering: - RouteNextHop: SRv6 equality, hash, thrift round-trip, comparison operators, and validation error cases - RouteNextHopEntry: SRv6 thrift round-trip, serialization, equality, UnicastRoute conversion, and FromNextHopsThrift with SRv6 fields Reviewed By: tanmayaudupa Differential Revision: D94743651 fbshipit-source-id: fd3e8754fbe8ae9911d8a765b018d261956afbd4github.com-facebook-fboss · 332c74cc · 2026-03-02
- 0.5ETVAdd comprehensive unit tests for EthFrame Summary: Add 22 unit tests for EthFrame covering parsing (IPv4, ARP frames), unhandled ethertype error handling, construction with V4/V6/MPLS payloads, getEthFrame template helpers, setDstMac, setVlan, stripVlans, decrementTTL, equality/inequality, getTxPacket/makeEthFrame round-trip, toString, and length calculations. Reviewed By: shri-khare Differential Revision: D96608294 fbshipit-source-id: c779609e125b5f7808c4d88eafde1c60b2f912c2github.com-facebook-fboss · ff14c7b7 · 2026-03-15
- 0.5ETVAdd comprehensive unit tests for ICMPExtHdr Summary: Add ICMPExtHdrTest.cpp with 28 tests covering all classes in ICMPExtHdr: - ICMPExtInterfaceCType: defaults, individual fields, all fields, different roles - ICMPExtIfaceNameSubObject: length with padding, no padding, single char, serialize, default empty - ICMPExtIpSubObjectV4/V6: length, serialize - ICMPExtInterfaceInformationObject: with IP only, name only, both, neither, serialize - ICMPExtHdr: length no objects, with objects, multiple objects, serialize, checksum validation Reviewed By: zechengh09 Differential Revision: D96582312 fbshipit-source-id: d36ed1694511a4e250fa37037d25f6198aff9ea4github.com-facebook-fboss · 6ff12d97 · 2026-03-15
- 0.4ETVRefactor bare `TEST(RibMySidUpdate)` tests into fixture-based `TEST_F` classes Summary: Split 28 bare `TEST(RibMySidUpdate, ...)` tests into four fixture-based test classes, each with shared `rib_` and `switchState_` members initialized in `SetUp()`: - `RibMySidCrudTest` (7 tests): add, delete, replace, empty update operations - `RibMySidValidationTest` (14 tests): `mySidFromEntry` reject/accept validation for all MySid types, nexthop constraints, SRV6 field requirements - `RibMySidSwitchStateTest` (3 tests): SwitchState propagation on add/delete, COW clone semantics - `RibMySidRollbackTest` (4 tests): HW update failure rollback, partial apply preservation Removed duplicated boilerplate (RIB creation, VRF setup, SwitchState init) from each test body. No functional changes — purely organizational. Reviewed By: zechengh09 Differential Revision: D105214126 fbshipit-source-id: e347388279ec34c6b5af2839fddcadbe9b1d2407github.com-facebook-fboss · 250e6bdf · 2026-05-16
- 0.4ETVAdd MySidEntry support to Srv6Api and tracer Summary: Add SaiMySidEntryTraits with MySidEntry class wrapping sai_my_sid_entry_t. Attributes: EndpointBehavior, EndpointBehaviorFlavor, NextHopId, Vrf. Add _create, _remove, _getAttribute, _setAttribute methods for MySidEntry to the Srv6Api class following the entry-based SAI object pattern. Add full tracer support (wrap functions, log functions, setMySidEntry serialization). Reviewed By: shri-khare Differential Revision: D96809995 fbshipit-source-id: cd6facc75c5f8598e29866f2038d97a481b5cfeagithub.com-facebook-fboss · 26c0bb74 · 2026-03-18
- 0.4ETVAdd RibMySidUpdater to resolve MySid next hops against RIB route tables Summary: RibMySidUpdater resolves next hops for MySid entries in the MySidTable. For each MySid entry with an unresolvedNextHopsId, it: 1. Retrieves the unresolved RouteNextHopSet from NextHopIDManager. 2. Resolves each member next hop against the v4/v6 route tables (which must already be resolved by RibRouteUpdater), using override next hops when present. 3. Allocates or updates the resolvedNextHopsId in NextHopIDManager. 4. Updates mySid.resolvedNextHopsId if the resolved set changed. Reviewed By: zechengh09 Differential Revision: D99201503 fbshipit-source-id: 477de84721a1329710c1357cbf06ee834ffa1132github.com-facebook-fboss · 10586334 · 2026-04-03
- 0.4ETVAdd comprehensive unit tests for MPLSPacket Summary: Add 20 unit tests for MPLSPacket covering constructors (header-only, with V4/V6 payloads), length(), serialize/parse round-trip, getTxPacket, equality/inequality, decrementTTL (V4 and V6), toString, and multi-label stack handling. Reviewed By: shri-khare Differential Revision: D96608238 fbshipit-source-id: 6853f739fc2513cf9e475f860e45b519efca06f6github.com-facebook-fboss · 9a3b93f7 · 2026-03-15
- 0.4ETVAdd comprehensive unit tests for TCPHeader Summary: Add 24 extended unit tests for TCPHeader covering all 3 constructors, size(), write/parse round-trip, parse error on too-small buffer, comprehensive equality/inequality tests (all fields), toString output verification, folly::to<string> and ostream operator, computeChecksum with IPv4/IPv6, updateChecksum, and max-values round-trip. Also documents a known bug where operator== compares dataOffsetAndReserved with itself instead of the other object's value. Reviewed By: shri-khare Differential Revision: D96608339 fbshipit-source-id: f9a29b071c0effbccfe52dbcb99a9ab198d6c4d5github.com-facebook-fboss · e90ce48a · 2026-03-15
- 0.4ETVPort state enable/disable for agg ports Summary: Allow user to specify agg port or regular ethernet ports for enable/disable commands Reviewed By: shri-khare Differential Revision: D104501554 fbshipit-source-id: dc0850a7ff045bcef405533c2146213a62ddf65bgithub.com-facebook-fboss · 65881cf0 · 2026-05-09
- 0.3ETVWrap ForwardingInformationBaseUpdater and MySidMapUpdater in RibToSwitchStateUpdater Summary: Recreate `ForwardingInformationBaseUpdater` as a standalone class containing the FIB-specific update logic (route tables → SwitchState). This was previously inlined in `RibToSwitchStateUpdater` before the rename in D97422309. `RibToSwitchStateUpdater` is now a thin wrapper that composes both `ForwardingInformationBaseUpdater` and `MySidMapUpdater`: - Calls `fibUpdater_(state)` to apply FIB changes - Calls `mySidUpdater_(state)` to apply MySid changes - Stores `lastDelta_` across the combined update All callers that receive `mySidTable` via the `RibToSwitchStateFunction` callback now pass it through to the `RibToSwitchStateUpdater` constructor, wiring up the full MySid update pipeline end-to-end. New files: - `ForwardingInformationBaseUpdater.h/cpp`: FIB update logic extracted from the old `RibToSwitchStateUpdater`, without `lastDelta_` Modified files: - `RibToSwitchStateUpdater.h/cpp`: Rewritten as wrapper - `FibUpdateHelpers.cpp`, `ApplyThriftConfig.cpp`, `DsfStateUpdaterUtil.cpp`, `SwSwitchRouteUpdateWrapper.cpp`, `HwSwitchRouteUpdateWrapper.cpp`, `HwSwitchEnsembleRouteUpdateWrapper.cpp`: Pass `mySidTable` through - `FibInteractionTests.cpp`: Pass empty `MySidTable` to updated constructor - `BUCK`: Added `ForwardingInformationBaseUpdater.cpp` to `fib_updater` Reviewed By: shri-khare Differential Revision: D97593102 fbshipit-source-id: 442a4c4cc00fa9c560ea27b53ef4bf559ac538fegithub.com-facebook-fboss · a99ca874 · 2026-03-24
- 0.3ETVRefactor SRV6 SegmentList from vector<IPAddressV6> to vector<array<uint8_t, 16>> Summary: Store SaiSrv6SidListTraits::SegmentList as `std::vector<std::array<uint8_t, 16>>` instead of `std::vector<folly::IPAddressV6>`. This eliminates the need for conversion buffers in SaiAttribute _fill calls since `std::array<uint8_t, 16>` has the same memory layout as `sai_ip6_t` and data can be pointed to directly. Conversion from switch state's `folly::IPAddressV6` segment lists happens at the caller boundary via a new `toSaiIp6List()` helper in AddressUtil. Reviewed By: Tianyu-Meta, shri-khare Differential Revision: D98397282 fbshipit-source-id: abfec1a627fbabbf6b9b03ebbeff761844a23d57github.com-facebook-fboss · 64841774 · 2026-03-27
- 0.3ETVPreserve route nhop cost metric in various rib classes Summary: As titled Reviewed By: msomasundaran Differential Revision: D104177271 fbshipit-source-id: 393d29c3cce68ec32bbd3d35f609d809f8fa9165github.com-facebook-fboss · dd6f2d3b · 2026-05-07