summaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
authorISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>2016-08-02 10:19:26 +0000
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2017-04-04 22:07:46 +0900
commit029852207a0318056edd984ae876f85eefd1df1f (patch)
treeab597fadc5fb8ae40750b3573c90021aa6a92817 /server
parent94865943c66490dd8e3805e5826849c92ff6e36b (diff)
server: fix bug of wrongly set <nil> to PeerInfo.LocalAddress
config.TransportState.LocalAddress may have zone info with ipv6 address like "fe80::x%eth0". In this case, net.ParseIP() returns <nil>, which leads to set <nil> to PeerInfo.LocalAddress. Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
Diffstat (limited to 'server')
-rw-r--r--server/server.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/server/server.go b/server/server.go
index d0336de3..8260e566 100644
--- a/server/server.go
+++ b/server/server.go
@@ -759,8 +759,11 @@ func (server *BgpServer) handleFSMMessage(peer *Peer, e *FsmMsg) {
if nextState == bgp.BGP_FSM_ESTABLISHED {
// update for export policy
laddr, _ := peer.fsm.LocalHostPort()
+ // may include zone info
peer.fsm.pConf.Transport.State.LocalAddress = laddr
- peer.fsm.peerInfo.LocalAddress = net.ParseIP(laddr)
+ // exclude zone info
+ ipaddr, _ := net.ResolveIPAddr("ip", laddr)
+ peer.fsm.peerInfo.LocalAddress = ipaddr.IP
deferralExpiredFunc := func(family bgp.RouteFamily) func() {
return func() {
server.mgmtOperation(func() error {