Releases: osrg/gobgp
Releases · osrg/gobgp
Release list
v4.9.0
Changelog
- 01c5c4c GoBGP 4.9.0
- 9d50d8e server: drop stale notifications queued while a peer session was down
- efa0900 packet/bgp: check the per-type message length in parseBody
- d7c721d packet/bgp: reject a body that does not match the declared length
- 5e34ff5 test: move the KEEPALIVE length test next to the other header tests
- e37c5a2 packet/bgp: reject KEEPALIVE messages that are not 19 octets
- b2c73cf test: drop run_all_tests.sh and document how to run scenario tests
- 8056d41 docs: document the listen address of the gRPC API
- 4bbeb79 security: define what we treat as a vulnerability
- e6c6f10 table: find the policy assignments in DeletePolicy itself
- 4171aa9 server: drop the policy assignment of a deleted peer
- a111094 server: store the per peer policy only for a route server client
- c0214f7 table: report a statement that the policy does not have
- 36cca5d table: check the import direction when deleting a policy
- 698cc61 table: fix preserve flag in DeletePolicy
- d4eb7d3 config: remove the collector configuration
- 8006da4 config: log reload failures at Error again
- 3436d72 config: log the export policy assignment failure at Error
- 5f4a6b5 config: do not abort startup when zebra is not reachable
- 94518c5 fix(cmd/gobgpd): delay sdnotify readiness
- 6e08373 feat(config): return initial apply errors
- 11a4096 server: fill in the Data field of the too long message error
- 8f72434 packet/bgp: fill in the Data field of message header errors
- c927e31 server: type fsmStateReason's notification as *bgp.BGPNotification
- 88ac6da server: pass the sent NOTIFICATION to fsmStateReason in handleOpen
- c4e13d1 server: fix wrong message wired into fsmStateReason on bad-peer-AS/invalid-msg
- 36e6efd config: test peer group deletion against config updates
- e585c39 config: fix deleting peer group and neighbor together
- eb2a727 packet/bgp: include the type in an unknown route distinguisher string
- f9152c2 packet/bgp: keep the value of an unknown route distinguisher
- 33539ee apiutil: round-trip the SR-MPLS Binding SID label through the API
- 8b19441 tcp-ao: expose HMAC-SHA256 profiles
- 9341943 netutils: support HMAC-SHA256 for TCP-AO
- cb123e9 spell-check: keep dictionary.txt sorted
- d7ae493 spell-check: fix the "mututally" typo
- 3b05300 config: load TCP-AO keychains from config
- c32c92f config/oc: add TCP-AO keychain model
- dae5a6c config/oc: reject out-of-range integers in the config file
- 1b84a40 packet/bgp: add a test for concurrent Serialize
- e7f8d7e packet/bgp: do not cache the message length in the BGP header
- b010677 packet/bgp: do not store the serialized length in OPEN
- caccf7b packet/bgp: do not store the serialized value in the capability
- 3b6ff68 packet/bgp: make capability Len independent of Serialize
- a40450d server: hold fsm.lock when reading fsm.recvOpen
- 8c84624 cmd/gobgp: document the I-PMSI route target as required
- aac7dea cmd/gobgp: validate I-PMSI route target before use
- 42abd24 packet/bgp: serialize the full SID in the SRv6 Binding SID sub-TLV
- c0d5851 packet/bgp: set the bottom-of-stack bit in the VPLS Label Base
- 708c180 packet/bgp: compare the decoded NLRI in the VPLS round-trip test
- 45c9244 packet/bgp: cover the VPLS BGP-AD NLRI at the MP_REACH level
- 62f3d94 packet/bgp: re-serialize the VPLS NLRI in the fuzz target
- 96105cb packet/bgp: drop the stale RFC 6074 comment in the VPLS NLRI decoder
- 7b1d80a reject VPLS NLRI with a length other than 17
- 02bcba0 ci: make the YANG check fail when pyang fails
- f626c40 tools/pyang_plugins: declare the route-family typedef
- 84868f8 tools/pyang_plugins: drop the ineffective ip-prefix deviation
- 9c22b63 ci: add job for yang files diff
- 97ff24e config: fix incorrect yang generation
- 69faffb server: compare TCP-AO keychain messages with proto.Equal
- f306bba server: run the TCP-AO validation cases inside their subtests
- e68a92f server: spell the TCP-AO keychain store field as one word
- 2328707 api, server: drop the keychain from the TCP-AO add response
- 407deba server: treat the TCP-AO keychain list name as a filter
- 0e9a005 server: reject out-of-range TCP-AO key IDs on keychain update
- aba1929 server: implement TCP-AO keychain management
- a7251b9 api: add TCP-AO keychain configuration API
- 8e65579 zebra: drop dead pos increments in zapi tests
- 55eb7a8 api, cli: surface the flowspec redirect-to-IP action
- 58940aa packet/bgp: add flowspec redirect-to-IP extended communities
- ad3e7c2 packet/bgp: bound MUP Type 2 endpoint address length to address family
- 5bf33cf zebra: reject a nexthop label count above the maximum
- b7d523b fix(server): avoid mutating Adj-RIB-In when listing accepted paths and refactor
- b6a519b server: reject an unknown peer group in the dynamic neighbor API
v4.8.0
Changelog
- 1049522 GoBGP 4.8.0
- 4e349f6 server: withdraw filtered secondary routes on soft reset out
- 93dd9a6 packet/bgp: always include the mask length in RTC NLRI strings
- 1bccb27 packet/bgp: reject Route Target Membership NLRI longer than 96 bits
- 21ccfb9 packet/bgp: make Route Target Membership NLRI codec RFC 4684-correct for all prefix lengths
- 6934f7d table: add rtc-prefix match for prefix-set policy conditions
- bd337ca table: don't infer a fixed ASN from an alternation community pattern
- 440a3b1 packet/bgp: bound the update attribute scan to its declared length
- 5a369ed bfd: discard received packets with an unbound discriminator
- 1d16f3d table: send IPv6 extended communities in their own attribute
- 9c13d68 packet/bgp: keep extended community decoders inside their community
- a74cb86 ci: run buf generate from proto so the diff check has an effect
- 4c9c9f6 apiutil: reject unparseable BGP-LS addresses instead of panicking
- 3d78f01 api: give BGP-LS link identifiers explicit presence
- 016ac48 apiutil: reject absent BGP-LS sub-messages instead of panicking
- 6f6e630 netutils: fix SA5011 nil-deref warning in bindInterface test
- b6c58c8 packet/bgp: validate declared lengths in Prefix-SID SRv6 TLVs
- ca4873f packet/bgp: handle absent Multi-Topology ID in SRv6 SID NLRI
- 173621f packet/bgp: reject zero-length next hop for families that require one
- 86bc653 test(rtc): add scenario test for rtc policy filtering and change base check from adj-in to global rib
- ea7e972 chore(deps): bump google.golang.org/grpc from 1.79.3 to 1.82.1
- 0378ad6 packet/rtr: bound RTRIPPrefix prefix and max length to address family
- e1bf959 packet/bgp: clamp SR Policy NLRI endpoint to declared length
- 31e136b server: return an error from watch instead of a nil watcher
- 88b4238 fix(server): prevent watcher leaks during shutdown
- 08ee396 netutils: add TCP-AO socket helpers
- 4e17218 server: resolve unnumbered NeighborInterface before validating neighbor address
- a7028f3 packet/bmp: validate declared length in TLV16 value decoders
- 3e854ce pkg/server: fix Loc-RIB BMP Peer Up to match RFC 9069
- 28ba85f bfd: discard received packets with a zero Detect Mult
- c1612bf bfd: derive detection time from remote timers
- d0f1080 server/bmp: report Adj-RIB-In withdrawals to clear ribout on peer down
- 69da7bf packet/bgp: reject out-of-range prefix length in EVPNIPPrefixRoute
- 3272a76 docs: update srv6_mup.md for draft-ietf-bess-mup-safi-01
- 0845830 cmd/gobgp: support MUP ST route TLVs and extended community formats
- 7d2ace1 api: add MUP ST route TLVs and MUP extended community formats
- 71d2cc3 packet/bgp: add interwork segment and address-format sub-types to MUP extended community
- c2359e4 packet/bgp: add optional TLVs to MUP Type 1/2 ST routes
- dc951ac server: rely on lazy path attributes hash
- a3f0566 table: make lazy path attributes hash consistent with eager sites
- 635293c table: fix Path.Equal ignoring nexthop and NLRI payload
- a06cf9d packet/bgp: clamp flowspec components to declared NLRI length
- a310174 zebra: reject ZAPI header with Length below header size
- 0d1ad1b packet/mrt: fix attribute-length truncation in parseRibEntry
- eba905d add a test that demos that the error messages related to misconfig remain the same
- 7df6ba2 Support Config Via
io.Reader - 5f30deb packet/bgp: fix SRv6InformationSubTLV sub-sub-TLV decode over-read
- 0b5e3dc chore(deps): bump golang.org/x/net from 0.48.0 to 0.55.0
- 8885f0b Propagate BindToDevice to GetBgp
- ab3b92f bgp: fix build break, gofmt and stale tests in BGP-LS String() methods
- 5b918d2 style: fix gofmt formatting
- b993c6d bgp: fix BGP-LS Link/Prefix NLRI key collision for IS-IS L1/L2
v4.7.0
Changelog
- 8b5edc2 GoBGP 4.7.0
- 441fcb6 ignore Claude files
- 4a9c2a5 Use Interface/Device Bindings for BFD
- 1ad1e03 tools: add FlowSpec auto-mitigation example
- 8c4802d ci: replace fabric with shell script for building container image
- d6dee83 scenario_test: migrate test runner from nose to pytest
- 09276f7 server: fix Downtime updated on reconnection intermediate transitions
- 3c0164f scenario_test: fix route server policy to use export direction
- 40817e6 gobgp: support last-as keyword in as-prepend action
- 1cf53c9 scenario_test: fix route server policy direction and test infrastructure
- e474954 ci: enable IPv6 for route server scenario tests
- 3acd19f table: fix REPLACE with empty community list not propagated to API
- 737a626 table: fix case-sensitive community action type in toStatementApi
- 2132288 fix: register bfd for dynamic neighbours
- e5286bb scenario_test: update route_server_malformed_test to match RFC 7606 behavior
- 8ab4f8a fix: pass zone for LLA BFD peer
- f6cc73a server: fix GR LocalRestarting not cleared when transitioning peer appears as OPENCONFIRM
- 4092db3 config: propagate bind-interface from peer-group transport config
- 4a319a6 packet/bgp: reject empty AS_PATH in confederation eBGP validation
- 7325b9d Add missing scenario tests for TCP MD5
- 5581749 config: Plumb global bind-to-device from file config
- 76ece66 Support VRF for TCP MD5
- 21830f7 config: remove trailing whitespace from gobgp.yang
- fffa3d5 bgp-ls: accept prefix-length 0 in LsTLVIPReachability (default route)
- 944dece zebra: set ifindex for IPv6 link-local next-hops
- 7204bf9 packet/bgp: fix TunnelEncapSubTLVSRCandidatePathName decode over-read
- 9f62e5b packet/bgp: include Link Local/Remote Identifier in LsLinkDescriptor.String when both shapes are present
- 8866bd7 table: fix ext-community-set match-set-options ALL and INVERT
- 94e64d6 fix global rib peer addpath
- c57da62 fix multipath when use bmp or monitor
- 7743c50 ci: scope GITHUB_TOKEN to minimum required permissions
- e25cefa Require @fujita review for workflow changes
- 0cc5ed4 packet/bgp, apiutil: gofmt fixups in the RFC 9351 stack
- 86958d5 apiutil: end-to-end wire test for RFC 9351 FAD + multi-SID Prefix-SID + FAPM
- cea5414 packet/bgp: render FAD sub-TLVs in LsTLVFlexAlgoDef.String for CLI output
- c29c820 api, apiutil: surface RFC 9351 Flex-Algorithm Definition + multi-SID Prefix-SID
- e112129 packet/bgp: add RFC 9351 Flex-Algorithm Definition + multi-SID Prefix-SID
- b3989e1 server, table: advertise the cap, negotiate it, and gate the per-session length
- 877913e api, apiutil: surface the BGP Extended Message capability
- e1268db packet/bgp: add the BGP Extended Message capability (RFC 8654)
- 41b5bb6 table: cache NLRI string in originInfo to avoid repeated allocations
- 6f2cf37 server: use sync.Map.Clear() in resetAdvertisedRoutes
- 6331854 server: avoid global propagation locks in resetAdvertisedRoutes
v4.6.0
Changelog
- 5151100 GoBGP 4.6.0
- 84a98f8 server: withdraw policy-filtered routes on soft reset out
- 41e47a8 fsm: Do not emit warnings upon receiving notification
- 748e233 server: don't treat unestablished GR peers as having sent EOR
- c4fd8f2 pkt/server: return error instead of panic on invalid SourceId in AddPathStream
- d43ff16 feat: add as-path-options params for peer-group api and config parser
- 1affa9a docs(bfd): add docs for using and configuring bfd session state detection
- e0d6b99 fix(table): preserve last action for the same path in coalesced updates
- f9448f0 feat: add local caps and peer-group to watchEventPeer
- 77a5cb0 fix(bfd): fix peer shutdown, remote down, and default port
- 4ebc2d3 fix(bfd): fix goroutine leak, safe public API, remove read event loop
- 0aef2d8 feat(bfd): add BFD server and peer state machine
- 89ec8ad fix(cmd): avoid nil pointer panic in CLI when NLRI cannot be decoded
- f0a540b feat(table): extract communityAnyIndex and add fast match for ext-comms
- df0fb4d table: Do not emit warnings upon no-op withdrawals
- 78d1c56 fsm: Do not emit warnings upon sending notification
- c246294 refactor(table): drive UpdatePathAttrs from PeerInfo only.
- accb63b feat(table): extend PeerInfo and add peer-group helpers for policy paths Expand PeerInfo with PeerType, route-server flags, remove-private-as, peer group name, and related neighbor/group fields so table logic can treat peer-group shared-policy paths consistently with per-peer paths.
- a89819e refactor(config): move IsConfederation methods from Neighbor to Global
- 3be7559 perf(table): bitmap-based fast path for standard BGP CommunitySet
- ace3800 fix(server): compare ECMP paths against best path, not predecessor
- ed9ec4f fix(cmd/gobgp): allow multiple RTs in mup route commands
- 941f597 packet/bgp: propagate errors and enforce length bounds in BGP-LS NLRI decoders
- 5d52dd1 packet/bgp: prevent nil pointer panic in TunnelEncapSubTLVSRBSID String and MarshalJSON
- 7b3e555 packet/bgp: reject malformed MPLS label stacks missing bottom-of-stack bit
- b6bfd5d apiutil: add tests for UnmarshalSRSegments nil Flags and round-trip
- b22177e fix(apiutil): nil-safe Flags access in UnmarshalSRSegments
- f02ca39 packet/bgp: enforce CapLen boundary in BGP OPEN capability decoders
- 2ee365d fix: preserve unknown IPv6 Extended Communities in round-trip encoding
- dd70de7 fix: evpn type2 handling without ip
- 3072fe9 fix: nil pointer dereference for local paths in WatchPostUpdate
v4.5.0
Changelog
- 5f19106 GoBGP 4.5.0
- 264380b fix bgp-ls mt-id rib collision
- 7899bb9 docs: recommend GOAMD64=v3 for maximum performance on AMD64
- 8448d2c correct sub-TLV length validation in BGP-LS decoders
- 010d6a5 feat(bfd): align BFD API
- 90adc4a feat(bfd): align BFD schema with OpenConfig conventions
- 4be569a feat: propagateBucket
- a50fb45 feat: zebra client nexthopCache need to be accessed under lock
- d60caf4 stopNeighbor under write lock
- 57c66ea add FSMHandler race tests
- d1cc36a s.shared.mu.RWLock
- d6deb01 feat(bfd): parse and encode Diagnostic field per RFC 5880 §4.1
- 4d989d8 feat: consistent routing update
- 35aa05a fix(rtc): fix VPN path indexing — track best path (no-add-path) or all path-IDs (add-path)
- ae1a568 feat(bfd): add RFC 5880 BFD packet codec
- 8de689f chore(spell): add reuseaddr to spell-check dictionary SO_REUSEADDR is a standard POSIX socket option name; scspell3k doesn't recognize the combined token 'reuseaddr'.)
- 4d098c9 feat(netutils): add SetUDPTTLSockopt and SetReuseAddrSockopt helpers
- d12f363 watcher: serialize new watcher registration
- 9aec25f bmp: fix reconnect on write error
- 640b3a6 table: eliminate string round-trips in Select for IPv4/IPv6 UC
- 00c7a4b table: fix shorter-prefix lookup returning only the first match for IPv4/IPv6 UC
- be2b9e9 apiutil: fix wrong lookup option when converting from proto enum
- d2d2be3 table: skip paths with unconfigured family in AdjRib.Update
- 35adaa5 zebra: use netip.Addr as nexthopStateCache key
- 153a25e test: use assert_several_times in zapi_v3 test
- 83c341d test: replace OSPF with static routes in zebra-nht test
- e26c0cc table: add unit test for new path with invalid nexthop
- b21a8a7 test: expand unit tests for nexthopStateCache
- 62e965a feat: (table/server) add VPN path RT index for O(1) RTC candidate lookup
- 631de4c fix: rpki server listing panics
- 97ca4e7 test: increase NHT test timeouts for CI stability
- f20b97a server: fix nil pointer dereference in prePolicyFilterpath
- b4e240e table: treat nexthop-invalid best path as no best in GetChanges
- 075fb4c feat: rework RTC handling with RouteTargetMembershipHandler
- c86f89e Coalesce outgoing BGP UPDATE messages
- 11d0013 fix: ipv6 link local address with zone
- 0d2f89d refactor: replace rtc handling logic to separate place. Key changes: 1. Move rtc registering logic to separate file 2. A little name and comments refactoring 3. Unit tests for rtc registering logic
- 7cdba63 server: fix goroutine leak when WatchEvent outlives Serve
- 9695ed2 Replace rtCounter (map[uint64]int) with adjRTSet (map[uint64]map[adjRTKey]struct{})
- 55e5242 ci: replace bufbuild/buf-setup-action with go install
- f4143fe ci: update GitHub Actions to Node 24 compatible versions
- 0534445 fix bmp config map issue
- a81d63d gobgpd: Fix printing of help message
- 4643cba Add security policy for vulnerability reporting
- 2df9ff3 atomic peerinfo or lock prefixLimitWarned, llgrEndChs
- 9b36d84 server: Use State instead of Config to determine GR-enabled peers in StopBgp
v4.4.0
Changelog
- 12b4eba GoBGP 4.4.0
- 7e767a8 packet/bgp: use buffer length for sr-policy segment list parsing loop condition
- f9f7b55 packet/bgp: fix infinite loop when decoding srv6 unknown sub-TLV types
- f842cdf packet/bgp: prevent uint16 underflow in BGP-LS sub-TLV length tracking
- 76d9110 packet/mrt: fix uint16 underflow in parseRibEntry path attribute loop
- bc77597 packet/bmp: validate ParseBody input length before reading fields
- 51ad1ad packet/bgp: Fix AIGP PathAttribute parser to return errors
- 215aee0 fix: prevent nil dereference on BGP UPDATE validation and fix variable shadowing
- 2814e72 fix: handle keepalive write error in openconfirm state
- 60f548e netip: use github.com/gaissmai/bart Trie
- 52fa007 build(deps): bump google.golang.org/grpc from 1.73.0 to 1.79.3
- ad39ab1 test: fix race in TestWatchEvent
- af16fb5 remove Locked suffix on internal API
- af29736 cleanup Destinations RLock, iterate on per shard lock
- 89b5acd adj.walkActive
- 835fb96 table manager cache maxPathCounted
- b48d135 table destination SelectDestinationLocked
- 44a9abc table manage don't expose internal maps
- 0ababab table/path: fix race on attrsHash
- 91337e9 tests: add race tests for table manager
- b55a5db EVPNMacNLRIs thread safe
- 5a62b66 table manager lock
- 49e5a2a table dest shard locks
- 4819eb3 Fix linting
- fbf326d test: reduce zebra-nht nexthop-cache-warm timeouts
- b7c841e table: add unit tests for NHT path invalidation
- b153964 zebra: fix nexthop-unreachable skip check in applyToPathList
- c398043 server: return error when Family is not set in AddPath API
- b0f41d8 Fix nexthop validation logic in PathAttributeMpReachNLRI serialization
- 1ecd7ba fix nexthop length mismatch in NewPathAttributeMpReachNLRI
- 7d8407f Fix assertion to check for maximum BGP message length in MP-NLRI tests
- 04ea4d5 Fix extended-length attribute header calculation in packerMP
- 150e672 Pack multiple NLRIs into MP-BGP UPDATE messages
- 2b09db3 packet/bgp: fix CapFQDN.DecodeFromBytes ignoring DomainNameLen
- 67c0594 packet/bgp: fix CapSoftwareVersion.DecodeFromBytes
- 8cbf83d server: Strip LOCAL_PREF from eBGP peers
- f0f24a2 packet/bgp: validate marker field in BGP header
- 9ce8936 packet/bgp: fix uint16 underflow in BGPUpdate.DecodeFromBytes
- 362cce3 packet/bgp: fix insufficient length check in ParseIP6Extended
- e04d902 refactor: delete multiple lines setPathAttr
- 6aa1c55 Fix nil pointer panic in TestGRPCAddPathUpdatesUUIDMap
- b7e421a fix: fix seting nil originator id for local rtc routes in route-reflector
- a38edb2 server: fix malformed message crash
- 583080a server: fix malformed nexthop attribute crash
v4.3.0
Changelog
- c3eb0db GoBGP 4.3.0
- ab13976 fix(bgp-ls): fix TLV types, delay A-flag masking, and min/max validation
- 38c64c9 Update pkg/packet/bgp/bgp.go
- 2e9e2bb Update pkg/packet/bgp/bgp.go
- d7a1541 fix(bgp-ls): correct SR capabilities and IGP flags bit mapping merged from issue #3312
- e13c9f7 bgp-ls: add delay-metric TLVs across packet, API, and CLI
- df3bfb5 fix(lint): replace WriteString(fmt.Sprintf) with fmt.Fprintf
- 597b5f0 decode AS_PATH based on capability negotiation
- 2c49d8d table: fix cgo format
- 9656368 server: add Confederation ID check in AS loop detection
- 9fe96a9 table: fix panic when AS4_PATH appears before AS_PATH
- caa7c28 feat(peer): atomic peer counters
- dbb52c5 Adj-Rib: fix leak memory on withdraw unknown path
- f12b8fb packet/bgp: validate NEXT_HOP attribute length and value to prevent panic
- 1bb8896 config: return StartBgp error to prevent crash
- f110e8b server: validate router-id must be IPv4 address
- 3c5b2b6 atomic peer.peerInfo by using atomic.Pointer[table.PeerInfo]
- 5fa0fd8 fix(StopBgp): if server is not serving, we cannot stop BGP server
- cfe40c9 server: close connection when response to OPEN is not sent during hold time
- da59637 ci: add buf generate diff check
- 988fd14 Adding support for setting IP_TOS/IPV6_TCLASS as a socket option
- 2b7e26b grpc_server: fix path best issue #3301
- f416268 fsm: mostly read peer.fsm.pConf
- f26690d Speed up RTC in Adj-RIB tables
- 3782650 server: Fix gRPC AddPath uuidMap handling
- fe4eb38 Call initializeConn directly under lock and remove useless fsm.lock
- cd9bbba internal/table/destination: make it private as it's only used internally
- 1459163 Add CompareAndSwap for adminStateRaw
- 9c003fe internal/destination: remove unused code (only in test)
- 5faaea0 no lock in loop for peer.fsm.pConf.Config.Vrf
- 7338052 remove debug log as it's too noisy an on the hot path
- fc80fdf cmd: fix unix domain socket connection
- b28d493 server/mrt: Avoid MustParseAddr on zone-qualified addresses
- 30b905c Properly handle local zone information
- 5831d74 server: fix racey waitState helpers in tests
- 9338559 server: stabilize RTC deferral timer tests by avoiding watcher races
- 48d0d70 fix: rtc deferral timer expired bugs
- bb713fb Properly handle peer's zone information
v4.2.0
Changelog
- 8d4da6d GoBGP 4.2.0
- b994d31 README.md: add GoBGP.nix external reference
- 824997d bmp: Use netip.AddrPort to identify client
- a0d3b25 Migrate path.SetNexthop to netip types
- d5174fe pkg/server: send bmp PeerUp/Down message for Local-RIB policy
- a550fe7 packet/rtr: validate ErrorReport lengths to prevent OOM on malformed input
- ca78de2 zebra: fix panic in FuzzZapi test on short inputs
- b015c35 packet/mrt: fix panic in PeerIndexTable parsing on large view name length
- d856321 packet/bgp: fix panic in FlowSpec component parsing on invalid input
- db4ab83 packet/bgp: avoid mutating input in MP_REACH_NLRI
- 76b17b7 packet/bgp: fix SRv6 End.X SID Sub-TLV length handling
- f08babd packet/bmp: support Peer Down reason=6 TLVs (RFC9069)
- fda3c2d packet/bmp: fix peer flag 0x80 semantics for Loc-RIB (RFC9069)
- ce30223 packet/bmp: add Peer Up Information TLV support (RFC9069 VRF/Table Name)
- fb36901 server: compare local address using netip.Addr to avoid IPv6 string mismatch
- 2fd31c1 table: Fix next-hop-in-list condition
- 5da7176 add peer-group option to cli
- bd3b84e tools: update python examples for the gRPC API
v4.1.0
Changelog
- 086af04 GoBGP 4.1.0
- 3db447d table: Fix regexp for parsing large community
- a29625a server: Avoid overwriting log fields in adj table
- 76d3c1e config: Fix RouteReflectorClusterId setting if configured
- 3d4e1dc server: guard timer config update with FSM lock
- 2a0ea1e server: Add TestUpdatePeer unit test
- dd41da9 server: Fix invalid pointer dereference in updateNeighbor
- 5f2d77e markdownlint: Disable table-column-style rule
- 74fde91 fix: fsm connection write deadline
v4.0.0
Changelog
- c9c1c12 GoBGP 4.0.0
- 25c2c6a config: remove neighbors.transport.config.ttl option
- 6b9d9b1 cmd: remove "global" magic keyword
- 8d03fe5 docs: clean up logger setup
- ab6cef1 docs: set default routing policy
- e0f16a8 server: default to global RIB when policy name is empty
- 71b8bb4 server: Remove request nil checks from gRPC handlers
- e38ad7c api: remove ApplyPolicy from Global
- b0fe2a0 config: remove unused InPolicy config
- 7a31432 server: fix ListPath returns context error
- 2ce6f13 server: return io error in streaming List RPCs
- 78d53ad server: use stream.Context() instead of context.Background() in List* RPCs
- 8ca4547 server: improve context cancellation handling in List* functions
- 8ad38a6 packet/bgp: remove isIPv6 in MarshallingOption
- 78dbfea server: add argument to getBestFromLocal function to exclude EOR
- af6056c server/fsm: Remove redundant notification in handleOpen
- 3c986d5 server/fsm: Fix connection leak in connectLoop on context cancellation
- a30d59b fix: drain channel
- 72f5b4b fix: remove logging on connection closing
- 719ce3c docs: Update repository clone URL in CONTRIBUTING.md
- f5d2039 fix: golanglint-ci
- a2bc5a6 server/mrt: add only established-peers to dumptable entry
- 5a5d631 fix: race condition in TestWatch
- 3fe25f3 server: fix WatchEventPeer
- 5193940 server/fsm: update fsm state after updating related information
- 27f0355 server/fsm: incoming fsm stops outgoing only in connect state
- b9d06df server/fsm: call connectLoop directly instead of using goroutine
- 822985c test/scenario: remove IDLE state check after removing blackhole config in llgr test
- f20d519 server/fsm: support parallel connections
- 161c952 Fix wrong multipath logic in the ListPath API
- 911ab22 Use netip.Addr in watchEventMessage instead of net.IP
- b910da3 packet/rtr: remove SplitRTR function
- f5f098d Use netip.Addr in watchEventUpdate instead of net.IP
- fd6214e modify addPathList in zclient to race-safe addPathStream
- f6bf251 doc: Add Locking session in CONTRIBUTING
- cbbaac9 fix operator conversion from APIStruct to oc
- cb60aef server/fsm: Pass connection explicitly to sendNotification method
- 2748557 server: Complete nonblockSendChannel migration for notification sends
- c9524df server/fsm: Move OpenMessage state updates to stateChange function
- 1cb4905 server/fsm: Move transport state updates to stateChange function
- 451ff12 server: Add nonblockSendChannel utility for non-blocking channel sends
- 0bfe6cc server/fsm: Use local holdtimerResetCh with struct{} type in established state
- 7b38fc3 server/fsm: Replace shared stateReasonCh with local channels per FSM state
- 9e55f4a server/fsm: Remove redundant fsmHandler.conn field
- 82ab61e server/fsm: Fix write deadline management during connection establishment
- a63931b server: trigger session reset for TTL changes
- dbdeba2 test/scenario_test: clarify behaviors in llgr test
- 6a484a6 server/fsm: move establish handling to recvMessageloop from recvMessage
- 2795378 server: simplify *bgp.MessageError handling
- 05c6077 server: remove fsmMsgRouteRefresh type
- f42a936 server/fsm: fix message header length error handling
- e4725bf server/fsm: drop AFI/SAFI-disable handling
- 181f5a6 remove ValidateBGPMessage()
- 0eceae2 server/fsm: add TreatAsWithdraw to fsm
- e9f43bf server/fsm: send open before moving to opensent state
- c134f48 server: use atomic.Int32 for fsm.state
- 99ac977 server: make fms.adminState lock-free
- 705ca3b server: add isEBGP and isConfed to fsm
- 0fa6eee server: use Mutex instead of RWMutex for fsm
- 7897164 server: add comments about locking for fsm members
- a968da3 server: remove fsm.marshallingOptions
- d8f8cee server: use atomic.Value for fsm.rfMap
- d569b7e packet/bgp: remove message race test
- 07375b0 server: lock fsm.lock to access to Timers.Config
- 1440166 server: make fsm goroutin call fsm.StateChange
- 3a35559 server: make fsm set idleHoldTime after admin reset
- befd213 server: remove notification logic in outgoingCh
- cf9315e server: make fsm handler private
- c023c9c server: use atomic.Bool for rtcEORWait
- 18ecaeb server: make the FSM state lock-free
- aa0ca59 server: create peer specific logger
- 0c74e9c server: remove access to fsm.conn in server
- b414774 server: don't log anything if logger isn't specified
- b5e996b server: use netip.Addr for neighborMap
- b77ca57 config: use netip for mrt table-name OpenConfig
- 40d3f25 add new word in tools/spell-check/ignore.txt
- 9412c4f docs: improve usage for 'gobgp global rib' command
- bda4c72 feat(test): improve Node NLRI, Link NLRI, SRv6 SID NLRI, and PrefixV6 NLRI tests
- acfa25c feat(cli): implement BGP-LS Node, Link, SRv6, and PrefixV6 NLRI parsing
- 01c009a fix(apiutil): improve LsLink and LsAttribute processing
- e1a044d fix(bgp-ls): correct TLV type constants in BGP-LS constructors
- 8730cbe fix(bgp-ls): improve BGP-LS packet parsing and error handling
- 1c34761 feat(api): add protobuf definitions of TLVs related to SRv6 in RFC9514
- 303516e feat(bgp-ls): implement TLVs related to SRv6 in RFC 9514
- 436b989 feat(apiutil): implement protobuf conversion of TLVs related to SRv6 in RFC 9514
- 4b75d99 feat: Add BGP peer disconnect reason reporting
- e5d96f1 Use log/slog instead of multiple logging libraries
- 20b392b packet/bgp: fix IPAddrPrefixDefault.decodePrefix()
- 162ab97 cmd/gobgp: fix p2p link show adj-in/out command
- ea2a2e3 fix lint errors
- 4b7e2d8 server/fsm: replace fsm intermediate infinite channel with normal channel
- 4b03534 server/fsm: remove reason in fsm
- 06f6196 server/fsm: remove sentNotification in fsmHandler
- 304bc04 server: remove Notification in fsmMsg
- f3d7715 server/fsm: rename notificaiton to deconfiguredNotification
- 2792418 server: remove fsm in FsmMsg
- 914e829 server: remove MsgSrc in FsmMsg
- c6110a6 server: unify three functions to send notification
- cf52588 server/fsm: send notification directly due to admin state change
- 67abdb7 server: remove StayIdle in fsmOutgoingMsg
- dec44a0 doc: update API session in CONTRIBUTING
- efcdde9 packet/bgp: make IsAttributePresent private
- 4d9cd2b fix: fix route stuck on eBGP filterpath
- ae72f0f packet/bgp: make GetBGPUpdateAttributesFromMsg and GetBGPUpdateAttributes private
- 4115136 zebra: use netip
- e3eb542 packet/bgp: add test for bottom of MPLS label for prefix SID
- 64f6f19 packet/bgp: fix decoding labels in SR
- 7c0efd5 table: disable CollisionAttack test
- 204...