From c80d0542535bb79d3ba1f43a118a94e5b514f38b Mon Sep 17 00:00:00 2001 From: godcong Date: Wed, 18 Sep 2019 13:53:31 +0800 Subject: [PATCH 1/3] move protocol definitions (https://github.com/libp2p/go-libp2p-circuit/blob/master/transport.go#L13-L24) --- protocols.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/protocols.go b/protocols.go index cb38a70..23598cf 100644 --- a/protocols.go +++ b/protocols.go @@ -11,6 +11,7 @@ const ( P_IP6ZONE = 0x002A P_QUIC = 0x01CC P_SCTP = 0x0084 + P_CIRCUIT = 0x0122 P_UDT = 0x012D P_UTP = 0x012E P_UNIX = 0x0190 @@ -81,6 +82,14 @@ var ( Size: 16, Transcoder: TranscoderPort, } + + protoCIRCUIT = Protocol{ + Code: P_CIRCUIT, + Size: 0, + Name: "p2p-circuit", + VCode: CodeToVarint(P_CIRCUIT), + } + protoONION2 = Protocol{ Name: "onion", Code: P_ONION, @@ -165,6 +174,7 @@ func init() { protoIP6, protoIP6ZONE, protoSCTP, + protoCIRCUIT, protoONION2, protoONION3, protoGARLIC64, From 0550a5ba36138ad0d5b25f534f350674a54ca565 Mon Sep 17 00:00:00 2001 From: godcong Date: Wed, 18 Sep 2019 14:07:40 +0800 Subject: [PATCH 2/3] move ws protocol definitions (https://github.com/libp2p/go-ws-transport/blob/ec8d1818a2e6edad2496410cbc554df6fe930ea2/websocket.go#L23) --- protocols.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/protocols.go b/protocols.go index 23598cf..f3cf252 100644 --- a/protocols.go +++ b/protocols.go @@ -24,6 +24,7 @@ const ( P_GARLIC64 = 0x01BE P_GARLIC32 = 0x01BF P_P2P_WEBRTC_DIRECT = 0x0114 + P_WS = 0x01DD ) var ( @@ -163,6 +164,11 @@ var ( Code: P_P2P_WEBRTC_DIRECT, VCode: CodeToVarint(P_P2P_WEBRTC_DIRECT), } + protoWS = Protocol{ + Name: "ws", + Code: P_WS, + VCode: CodeToVarint(P_WS), + } ) func init() { @@ -187,6 +193,7 @@ func init() { protoP2P, protoUNIX, protoP2P_WEBRTC_DIRECT, + protoWS, } { if err := AddProtocol(p); err != nil { panic(err) From bbcf5cbbc537d862e526bc8302e8f8f5cfe5b0a2 Mon Sep 17 00:00:00 2001 From: godcong Date: Wed, 18 Sep 2019 14:19:59 +0800 Subject: [PATCH 3/3] move dns protocol definitions (https://github.com/multiformats/go-multiaddr-dns/blob/3974bf3f84c52825588fdcc0fd0e0aa7953ab5ff/dns.go#L11) --- protocols.go | 27 +++++++++++++++++++++++++++ transcoders.go | 17 +++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/protocols.go b/protocols.go index f3cf252..3eca0be 100644 --- a/protocols.go +++ b/protocols.go @@ -5,6 +5,9 @@ package multiaddr const ( P_IP4 = 0x0004 P_TCP = 0x0006 + P_DNS4 = 0x0036 + P_DNS6 = 0x0037 + P_DNSADDR = 0x0038 P_UDP = 0x0111 P_DCCP = 0x0021 P_IP6 = 0x0029 @@ -44,6 +47,27 @@ var ( Path: false, Transcoder: TranscoderPort, } + protoDNS4 = Protocol{ + Code: P_DNS4, + Size: LengthPrefixedVarSize, + Name: "dns4", + VCode: CodeToVarint(P_DNS4), + Transcoder: TranscoderDns, + } + protoDNS6 = Protocol{ + Code: P_DNS6, + Size: LengthPrefixedVarSize, + Name: "dns6", + VCode: CodeToVarint(P_DNS6), + Transcoder: TranscoderDns, + } + protoDNSADDR = Protocol{ + Code: P_DNSADDR, + Size: LengthPrefixedVarSize, + Name: "dnsaddr", + VCode: CodeToVarint(P_DNSADDR), + Transcoder: TranscoderDns, + } protoUDP = Protocol{ Name: "udp", Code: P_UDP, @@ -175,6 +199,9 @@ func init() { for _, p := range []Protocol{ protoIP4, protoTCP, + protoDNS4, + protoDNS6, + protoDNSADDR, protoUDP, protoDCCP, protoIP6, diff --git a/transcoders.go b/transcoders.go index 77908b7..e1f5b27 100644 --- a/transcoders.go +++ b/transcoders.go @@ -317,3 +317,20 @@ func unixStB(s string) ([]byte, error) { func unixBtS(b []byte) (string, error) { return string(b), nil } + +var TranscoderDns = NewTranscoderFromFunctions(dnsStB, dnsBtS, dnsVal) + +func dnsVal(b []byte) error { + if bytes.IndexByte(b, '/') >= 0 { + return fmt.Errorf("domain name %q contains a slash", string(b)) + } + return nil +} + +func dnsStB(s string) ([]byte, error) { + return []byte(s), nil +} + +func dnsBtS(b []byte) (string, error) { + return string(b), nil +}