What's Changed
- Use Go 1.27.2 and a compatible CI linter by @heymaikol in #291
- Reuse diagnosis across unchanged results by @heymaikol in #290
- Use event-driven scheduling for probe dependencies by @heymaikol in #292
- Remove direct-to-main commit instruction by @heymaikol in #293
- Share target-independent profile probes by @heymaikol in #294
- Lock GoHawk analyzer in a tools module by @heymaikol in #295
- Add a vendor-neutral network topology model by @heymaikol in #296
- Keep GitHub tokens out of simulator children by @heymaikol in #301
- Reuse passing probe results across Watch passes by @heymaikol in #297
- Reuse one target connection across TCP, TLS and HTTPS evidence by @heymaikol in #298
- Explain expected and observed routing paths by @heymaikol in #300
- Reuse passing Watch rows in the TUI by @heymaikol in #302
- Compare forward and return routes for asymmetric routing by @heymaikol in #303
- Refuse reused Watch rows after Linux route changes by @heymaikol in #304
- Report intended-route drift in route explanations by @heymaikol in #307
- Count real Watch passes against live sockets by @heymaikol in #306
- Document why Watch route events stay all-family by @heymaikol in #308
- Expire Watch observations across suspend by @heymaikol in #310
- Add offline route context to two-sided reading by @heymaikol in #309
- Watch follows policy rule and nexthop changes on Linux by @heymaikol in #311
- Test that pinned peers reject impostor certificates by @heymaikol in #312
- Add neighbor attributes and completeness to the topology model by @heymaikol in #313
- Add conservative OSPF adjacency analysis to explain by @heymaikol in #315
- Publish slow Watch passes within their timeout window by @heymaikol in #314
- Test Watch IPv6 outages and native route-event diagnosis by @heymaikol in #325
- Measure one Watch hour over real sockets by @heymaikol in #327
- Add read-only FRR 10.7.0 OSPF importer library by @heymaikol in #326
- Test Watch fault recovery and resolver changes against fresh passes by @heymaikol in #328
- Import FRR OSPF captures offline by @heymaikol in #329
- test: cover unflagged and non-DNS resolver errors by @heymaikol in #330
- Cover wrapped DNS not-found errors by @heymaikol in #331
- Read FRR effective OSPF areas and compare declared links by @heymaikol in #332
- Report DNS and packet-loss evidence on namespace failure by @heymaikol in #334
- Correct FIB discard wording when control has no route by @heymaikol in #335
- Honor end-of-options marker in CLI parsing by @heymaikol in #336
- Correct SOCKS5 host-unreachable proxy diagnosis by @heymaikol in #338
- Compare FRR OSPF LSDB with calculated routes offline by @heymaikol in #337
- Read FRR OSPF interface cost, type, state, and passive by @heymaikol in #340
- fix(routepath): read an omitted next-hop interface as unreported, not a difference by @wzd8888 in #324
- test(routepath): complete wide ECMP regression coverage by @heymaikol in #341
- Do not treat HTTP_PROXY-only settings as HTTPS proxy egress by @heymaikol in #339
- fix(routepath): reconcile compatible FIB next-hop evidence by @heymaikol in #342
- Report calculated OSPF next hop identity and ECMP status by @heymaikol in #344
- fix(routepath): detect asymmetric parallel-link return paths by @heymaikol in #343
- Stop SSH aliases at Match block boundaries by @r4venrudy in #345
- test(frr): add optional zebra RIB capture groundwork for OSPF (#266) by @heymaikol in #346
- Preserve genuine FRR zebra RIB evidence and regression tests by @heymaikol in #347
- Decode captured FRR zebra RIB candidates without forwarding claims by @heymaikol in #348
- Remove unused zebra RIB decoder and preserve import regression by @heymaikol in #349
- testdata(frr): preserve genuine BGP peer and route captures by @heymaikol in #350
- Update repository implementation by @heymaikol in #351
- feat(bgp): decode learned routes from recorded FRR output by @heymaikol in #352
- Make oversized SSH response test deterministic by @heymaikol in #354
- Report BGP learned routes from recorded FRR captures by @heymaikol in #358
- Bump library/golang from
0908ac9to9e45f0eby @dependabot[bot] in #356 - Bump the non-breaking group with 3 updates by @dependabot[bot] in #355
- Bump the non-breaking group with 5 updates by @dependabot[bot] in #357
- Report local OSPF router identity in FRR imports by @heymaikol in #359
- Import OSPF interface MTU from FRR captures by @heymaikol in #360
- Fuzz the FRR BGP summary and route decoders by @heymaikol in #362
- Report BGP session states as findings by @heymaikol in #361
- Report OSPF adjacency findings in the FRR OSPF import by @heymaikol in #363
- Make the job overflow test deterministic by @heymaikol in #364
- Keep a DNS answer when the other family's query is lost by @heymaikol in #365
- Hold the packet-loss scenario to what its evidence proves by @heymaikol in #366
- Simulate one router or interface failing in --explain by @heymaikol in #369
- Check --fail predictions against live link failures by @heymaikol in #370
- Simulate an OSPF adjacency loss in --explain by @heymaikol in #371
- Simulate a BGP prefix withdrawal in the BGP import by @heymaikol in #372
- Simulate a BGP session loss in the BGP import by @heymaikol in #373
- Pin the report clock in presentation-only tests by @heymaikol in #378
- Run the shipped proxy-only variants in netns coverage by @heymaikol in #379
- Fix support snapshot test lint findings by @heymaikol in #380
- Bump goreleaser/goreleaser-action from 7.2.3 to 7.3.0 in the non-breaking group across 1 directory by @dependabot[bot] in #367
- Simulate a next-hop loss in --explain by @heymaikol in #375
- Treat stale BGP withdrawal survivors conservatively by @heymaikol in #381
- Rate a partial ECMP loss behind a remote failure unknown by @heymaikol in #382
- Rate a --fail loss behind an OSPF or BGP route unknown by @heymaikol in #383
- Rate a tunnel overlay unknown when its underlay fails by @heymaikol in #384
- Validate --fail-ospf against live FRR adjacency losses by @heymaikol in #385
- Rate a BGP-forwarded --fail destination unknown by @heymaikol in #386
- Rate a tunnel underlay BGP route unknown by @heymaikol in #387
- Keep a public DNS answer when the other family is lost by @heymaikol in #394
- Keep structural reasons in tunnel underlay walks by @heymaikol in #397
- Validate IPv6 in routing failure simulation by @heymaikol in #398
- Move module to github.com/heymaikol/network-doctor/v2 by @heymaikol in #399
- Draft v2.0.0 release notes and routing README capabilities by @heymaikol in #400
New Contributors
- @wzd8888 made their first contribution in #324
- @r4venrudy made their first contribution in #345
Full Changelog: v1.19.4...v2.0.0
If Network Doctor saves you time, you can support its development on GitHub Sponsors.