package autonat import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/p2p/host/autonat/pb" ma "github.com/multiformats/go-multiaddr" ) //go:generate protoc --proto_path=$PWD:$PWD/../../.. --go_out=. --go_opt=Mpb/autonat.proto=./pb pb/autonat.proto // AutoNATProto identifies the autonat service protocol const AutoNATProto = "/libp2p/autonat/1.0.0" func newDialMessage(pi peer.AddrInfo) *pb.Message { msg := new(pb.Message) msg.Type = pb.Message_DIAL.Enum() msg.Dial = new(pb.Message_Dial) msg.Dial.Peer = new(pb.Message_PeerInfo) msg.Dial.Peer.Id = []byte(pi.ID) msg.Dial.Peer.Addrs = make([][]byte, len(pi.Addrs)) for i, addr := range pi.Addrs { msg.Dial.Peer.Addrs[i] = addr.Bytes() } return msg } func newDialResponseOK(addr ma.Multiaddr) *pb.Message_DialResponse { dr := new(pb.Message_DialResponse) dr.Status = pb.Message_OK.Enum() dr.Addr = addr.Bytes() return dr } func newDialResponseError(status pb.Message_ResponseStatus, text string) *pb.Message_DialResponse { dr := new(pb.Message_DialResponse) dr.Status = status.Enum() dr.StatusText = &text return dr }