Skip to content

Commit 7fd82a0

Browse files
holimanfjl
authored andcommitted
p2p: add address info to peer event reporting (#19716)
1 parent dcc4adf commit 7fd82a0

File tree

3 files changed

+40
-26
lines changed

3 files changed

+40
-26
lines changed

p2p/message.go

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -252,19 +252,23 @@ func ExpectMsg(r MsgReader, code uint64, content interface{}) error {
252252
type msgEventer struct {
253253
MsgReadWriter
254254

255-
feed *event.Feed
256-
peerID enode.ID
257-
Protocol string
255+
feed *event.Feed
256+
peerID enode.ID
257+
Protocol string
258+
localAddress string
259+
remoteAddress string
258260
}
259261

260262
// newMsgEventer returns a msgEventer which sends message events to the given
261263
// feed
262-
func newMsgEventer(rw MsgReadWriter, feed *event.Feed, peerID enode.ID, proto string) *msgEventer {
264+
func newMsgEventer(rw MsgReadWriter, feed *event.Feed, peerID enode.ID, proto, remote, local string) *msgEventer {
263265
return &msgEventer{
264266
MsgReadWriter: rw,
265267
feed: feed,
266268
peerID: peerID,
267269
Protocol: proto,
270+
remoteAddress: remote,
271+
localAddress: local,
268272
}
269273
}
270274

@@ -276,11 +280,13 @@ func (ev *msgEventer) ReadMsg() (Msg, error) {
276280
return msg, err
277281
}
278282
ev.feed.Send(&PeerEvent{
279-
Type: PeerEventTypeMsgRecv,
280-
Peer: ev.peerID,
281-
Protocol: ev.Protocol,
282-
MsgCode: &msg.Code,
283-
MsgSize: &msg.Size,
283+
Type: PeerEventTypeMsgRecv,
284+
Peer: ev.peerID,
285+
Protocol: ev.Protocol,
286+
MsgCode: &msg.Code,
287+
MsgSize: &msg.Size,
288+
LocalAddress: ev.localAddress,
289+
RemoteAddress: ev.remoteAddress,
284290
})
285291
return msg, nil
286292
}
@@ -293,11 +299,13 @@ func (ev *msgEventer) WriteMsg(msg Msg) error {
293299
return err
294300
}
295301
ev.feed.Send(&PeerEvent{
296-
Type: PeerEventTypeMsgSend,
297-
Peer: ev.peerID,
298-
Protocol: ev.Protocol,
299-
MsgCode: &msg.Code,
300-
MsgSize: &msg.Size,
302+
Type: PeerEventTypeMsgSend,
303+
Peer: ev.peerID,
304+
Protocol: ev.Protocol,
305+
MsgCode: &msg.Code,
306+
MsgSize: &msg.Size,
307+
LocalAddress: ev.localAddress,
308+
RemoteAddress: ev.remoteAddress,
301309
})
302310
return nil
303311
}

p2p/peer.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,14 @@ const (
9191
// PeerEvent is an event emitted when peers are either added or dropped from
9292
// a p2p.Server or when a message is sent or received on a peer connection
9393
type PeerEvent struct {
94-
Type PeerEventType `json:"type"`
95-
Peer enode.ID `json:"peer"`
96-
Error string `json:"error,omitempty"`
97-
Protocol string `json:"protocol,omitempty"`
98-
MsgCode *uint64 `json:"msg_code,omitempty"`
99-
MsgSize *uint32 `json:"msg_size,omitempty"`
94+
Type PeerEventType `json:"type"`
95+
Peer enode.ID `json:"peer"`
96+
Error string `json:"error,omitempty"`
97+
Protocol string `json:"protocol,omitempty"`
98+
MsgCode *uint64 `json:"msg_code,omitempty"`
99+
MsgSize *uint32 `json:"msg_size,omitempty"`
100+
LocalAddress string `json:"local,omitempty"`
101+
RemoteAddress string `json:"remote,omitempty"`
100102
}
101103

102104
// Peer represents a connected remote node.
@@ -354,7 +356,7 @@ func (p *Peer) startProtocols(writeStart <-chan struct{}, writeErr chan<- error)
354356
proto.werr = writeErr
355357
var rw MsgReadWriter = proto
356358
if p.events != nil {
357-
rw = newMsgEventer(rw, p.events, p.ID(), proto.Name)
359+
rw = newMsgEventer(rw, p.events, p.ID(), proto.Name, p.Info().Network.RemoteAddress, p.Info().Network.LocalAddress)
358360
}
359361
p.log.Trace(fmt.Sprintf("Starting protocol %s/%d", proto.Name, proto.Version))
360362
go func() {

p2p/server.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,18 +1016,22 @@ func (srv *Server) runPeer(p *Peer) {
10161016

10171017
// broadcast peer add
10181018
srv.peerFeed.Send(&PeerEvent{
1019-
Type: PeerEventTypeAdd,
1020-
Peer: p.ID(),
1019+
Type: PeerEventTypeAdd,
1020+
Peer: p.ID(),
1021+
RemoteAddress: p.RemoteAddr().String(),
1022+
LocalAddress: p.LocalAddr().String(),
10211023
})
10221024

10231025
// run the protocol
10241026
remoteRequested, err := p.run()
10251027

10261028
// broadcast peer drop
10271029
srv.peerFeed.Send(&PeerEvent{
1028-
Type: PeerEventTypeDrop,
1029-
Peer: p.ID(),
1030-
Error: err.Error(),
1030+
Type: PeerEventTypeDrop,
1031+
Peer: p.ID(),
1032+
Error: err.Error(),
1033+
RemoteAddress: p.RemoteAddr().String(),
1034+
LocalAddress: p.LocalAddr().String(),
10311035
})
10321036

10331037
// Note: run waits for existing peers to be sent on srv.delpeer

0 commit comments

Comments
 (0)