diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-12-25 06:30:20 -0800 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-12-25 06:30:20 -0800 |
commit | 4da71624586971c253bfb2625bdd91e121254b22 (patch) | |
tree | 5b9563d6fff428511685854a160b0397a3ded114 /server/peer.go | |
parent | 3234ade75edd5c4b01f817cc127a13feb9c25c7b (diff) |
server: support /neighbors URL
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Diffstat (limited to 'server/peer.go')
-rw-r--r-- | server/peer.go | 130 |
1 files changed, 53 insertions, 77 deletions
diff --git a/server/peer.go b/server/peer.go index f3a23d5b..66514d11 100644 --- a/server/peer.go +++ b/server/peer.go @@ -205,88 +205,64 @@ func (peer *Peer) MarshalJSON() ([]byte, error) { c := peer.peerConfig f := peer.fsm - conf, confErr := json.Marshal( - struct { - RemoteIP string `json:"remote_ip"` - Id string `json:"id"` - Description string `json:"description"` - RemoteAS uint32 `json:"remote_as"` - LocalAddress string `json:"local_address"` - LocalPort int `json:"local_port"` - CapRefresh bool `json:"cap_refresh"` - CapEnhancedRefresh bool `json:"cap_enhanced_refresh"` - CapMbgpVpnv4 bool `json:"cap_mbgp_vpnv4"` - CapMbgpVpnv6 bool `json:"cap_mbgp_vpnv6"` - }{ - RemoteIP: c.NeighborAddress.String(), - Id: f.routerId.String(), - Description: "", - RemoteAS: c.PeerAs, - LocalAddress: f.passiveConn.LocalAddr().String(), - LocalPort: f.passiveConn.LocalAddr().(*net.TCPAddr).Port, - CapRefresh: false, - CapEnhancedRefresh: false, - CapMbgpVpnv4: false, - CapMbgpVpnv6: false, - }) + p := make(map[string]interface{}) - if confErr != nil { - return nil, confErr + p["conf"] = struct { + RemoteIP string `json:"remote_ip"` + Id string `json:"id"` + Description string `json:"description"` + RemoteAS uint32 `json:"remote_as"` + LocalAddress string `json:"local_address"` + LocalPort int `json:"local_port"` + CapRefresh bool `json:"cap_refresh"` + CapEnhancedRefresh bool `json:"cap_enhanced_refresh"` + }{ + RemoteIP: c.NeighborAddress.String(), + Id: f.routerId.To4().String(), + Description: "", + RemoteAS: c.PeerAs, + //LocalAddress: f.passiveConn.LocalAddr().String(), + //LocalPort: f.passiveConn.LocalAddr().(*net.TCPAddr).Port, + CapRefresh: false, + CapEnhancedRefresh: false, } s := peer.peerConfig.BgpNeighborCommonState + p["info"] = struct { + BgpState string `json:"bgp_state"` + FsmEstablishedTransitions uint32 `json:"fsm_established_transitions"` + TotalMessageOut uint32 `json:"total_message_out"` + TotalMessageIn uint32 `json:"total_message_in"` + UpdateMessageOut uint32 `json:"update_message_out"` + UpdateMessageIn uint32 `json:"update_message_in"` + KeepAliveMessageOut uint32 `json:"keepalive_message_out"` + KeepAliveMessageIn uint32 `json:"keepalive_message_in"` + OpenMessageOut uint32 `json:"open_message_out"` + OpenMessageIn uint32 `json:"open_message_in"` + NotificationOut uint32 `json:"notification_out"` + NotificationIn uint32 `json:"notification_in"` + RefreshMessageOut uint32 `json:"refresh_message_out"` + RefreshMessageIn uint32 `json:"refresh_message_in"` + Uptime float64 `json:"uptime"` + LastError string `json:"last_error"` + }{ - info, infoErr := json.Marshal( - struct { - BgpState string `json:"bgp_state"` - FsmEstablishedTransitions uint32 `json:"fsm_established_transitions"` - TotalMessageOut uint32 `json:"total_message_out"` - TotalMessageIn uint32 `json:"total_message_in"` - UpdateMessageOut uint32 `json:"update_message_out"` - UpdateMessageIn uint32 `json:"update_message_in"` - KeepAliveMessageOut uint32 `json:"keepalive_message_out"` - KeepAliveMessageIn uint32 `json:"keepalive_message_in"` - OpenMessageOut uint32 `json:"open_message_out"` - OpenMessageIn uint32 `json:"open_message_in"` - NotificationOut uint32 `json:"notification_out"` - NotificationIn uint32 `json:"notification_in"` - RefreshMessageOut uint32 `json:"refresh_message_out"` - RefreshMessageIn uint32 `json:"refresh_message_in"` - Uptime float64 `json:"uptime"` - LastError string `json:"last_error"` - }{ - - BgpState: f.state.String(), - FsmEstablishedTransitions: s.EstablishedCount, - TotalMessageOut: 0, - TotalMessageIn: 0, - UpdateMessageOut: s.UpdateOut, - UpdateMessageIn: s.UpdateIn, - KeepAliveMessageOut: s.KeepaliveOut, - KeepAliveMessageIn: s.KeepaliveIn, - OpenMessageOut: s.OpenOut, - OpenMessageIn: s.OpenIn, - NotificationOut: s.NotifyOut, - NotificationIn: s.NotifyIn, - RefreshMessageOut: s.RefreshOut, - RefreshMessageIn: s.RefreshIn, - Uptime: time.Now().Sub(s.Uptime).Seconds(), - }) - - if infoErr != nil { - return nil, infoErr + BgpState: f.state.String(), + FsmEstablishedTransitions: s.EstablishedCount, + TotalMessageOut: 0, + TotalMessageIn: 0, + UpdateMessageOut: s.UpdateOut, + UpdateMessageIn: s.UpdateIn, + KeepAliveMessageOut: s.KeepaliveOut, + KeepAliveMessageIn: s.KeepaliveIn, + OpenMessageOut: s.OpenOut, + OpenMessageIn: s.OpenIn, + NotificationOut: s.NotifyOut, + NotificationIn: s.NotifyIn, + RefreshMessageOut: s.RefreshOut, + RefreshMessageIn: s.RefreshIn, + Uptime: time.Now().Sub(s.Uptime).Seconds(), } - confTag := []byte("{'conf':") - delimiter := []byte(",") - infoTag := []byte("'info':") - endDoc := []byte("}") - - jsonval := append(confTag, conf...) - jsonval = append(jsonval, delimiter...) - jsonval = append(jsonval, infoTag...) - jsonval = append(jsonval, info...) - jsonval = append(jsonval, endDoc...) - - return jsonval, nil + return json.Marshal(p) } |