Another regression introduced by 4c9cd88c61
Previous fix (81bc3851b2) fixes active
connection of neighbors configured via configuration file.
This fixes that of neighbors configured via gRPC API.
Test is also added.
Signed-off-by: ISHIDA Wataru <[email protected]>
regression introduced by 4c9cd88c61
also fix test/lib to test configuration without local-address
(configure local-address only if neighbor-address is IPv6)
Signed-off-by: ISHIDA Wataru <[email protected]>
Local address of md5ed active connection was hard-coded as "0.0.0.0".
Let's set appropriate default local address (0.0.0.0 or ::) in
SetDefaultConfigValues() and clean up (*FSM).connectLoop() instead of
ad-hoc connectLoop() fix.
Signed-off-by: ISHIDA Wataru <[email protected]>
The current code sets a path to table.POLICY_DIRECTION_NONE, which is
still rib's knowPathList. Next time the best path selection happens,
the path is moved to oldKnownPathList and wrongly the best path
selection code could assume that it was the old best path, and sends
an unnecessary update message.
Signed-off-by: FUJITA Tomonori <[email protected]>
dump the update messages and the state change of peers into influxdb:
[collector.config]
url = "http://localhost:8086"
db-name = "gobgp"
Signed-off-by: FUJITA Tomonori <[email protected]>
Serve() returns when accept() failed. After that, gobgp stop listening
on grpc port (no more grpc request).
This patch makes sure that gobgp starts listening on grpc port again.
Signed-off-by: FUJITA Tomonori <[email protected]>
connect() blocks MIN_CONNECT_RETRY-1 (= 9sec) at most.
If a passive connection comes, establish BGP sessions, then BGP sesions
goes down right after that (this can happen when the peer sent invalid
update messages etc..) while connect() is blocking,
FSM.StateChange(), which writes to fsm.getActiveCh can also block.
This leads to block the main goroutine in server.go.
This commit fix the issue by invoking a goroutine for connect() each
time.
Signed-off-by: ISHIDA Wataru <[email protected]>
While Connect() is proceeding, fsm can be stopped administratively.
In this case, after success of Connect(), no one is reading fsm.connCh,
so connectLoop() goroutine can be leaked. This commit fix this issue.
Signed-off-by: ISHIDA Wataru <[email protected]>
The order of the flowspec routes matters because they will be used
as ACL rules and what rule will be applied depends on the order.
RFC5575 specifies how flowspec routes should be sorted.
This commit implements what it says.
Signed-off-by: ISHIDA Wataru <[email protected]>
sending REDISTRIBUTE_DEFAULT_ADD command causes getting every routes
zebra has which is not desirable behavior
Signed-off-by: ISHIDA Wataru <[email protected]>
- split config and state
- move to Bgp structure (aligned with Rpki, Bmp, and Mrt)
Also makes zebra configured via GRPC channel.
Signed-off-by: FUJITA Tomonori <[email protected]>
Changing some of configuration leads to sending a notification. So the
reason of the BGP state change should be the notification.
The main goroutine sends a notification, closes the connection, kill
goroutines for the peer. So With the current code, the reason could be
"rx failure", "tx failure", or "dying". To avoid that, this patch adds
kinda workaround.
Signed-off-by: FUJITA Tomonori <[email protected]>
Let's follow the conventions of GRPC
- Stop using one method for multiple operations like add, delete,
etc. IOW, remove all the ModHoge APIs.
- Stop abusing Streaming RPC API.
Signed-off-by: FUJITA Tomonori <[email protected]>
timer re-configuration won't kill BGP session.
new values will be used for next BGP session establishment.
Signed-off-by: ISHIDA Wataru <[email protected]>
We need to update yang config collector mode (split into config and
state). before that, let's remove the feature itself to see if there
is any user of it.
Signed-off-by: FUJITA Tomonori <[email protected]>