@@ -4,18 +4,38 @@ import (
4
4
"strings"
5
5
6
6
ma "github.com/multiformats/go-multiaddr"
7
+ madns "github.com/multiformats/go-multiaddr-dns"
8
+ )
9
+
10
+ // Define a dns4 format multiaddr
11
+ var DNS4 = Base (madns .P_DNS4 )
12
+
13
+ // Define a dns6 format multiaddr
14
+ var DNS6 = Base (madns .P_DNS6 )
15
+
16
+ // Define a dnsaddr, dns4 or dns6 format multiaddr
17
+ var DNS = Or (
18
+ Base (madns .P_DNSADDR ),
19
+ DNS4 ,
20
+ DNS6 ,
7
21
)
8
22
9
23
// Define IP as either ipv4 or ipv6
10
24
var IP = Or (Base (ma .P_IP4 ), Base (ma .P_IP6 ))
11
25
12
- // Define TCP as 'tcp' on top of either ipv4 or ipv6
13
- var TCP = And (IP , Base (ma .P_TCP ))
26
+ // Define TCP as 'tcp' on top of either ipv4 or ipv6, or dns equivalents.
27
+ var TCP = Or (
28
+ And (DNS , Base (ma .P_TCP )),
29
+ And (IP , Base (ma .P_TCP )),
30
+ )
14
31
15
- // Define UDP as 'udp' on top of either ipv4 or ipv6
16
- var UDP = And (IP , Base (ma .P_UDP ))
32
+ // Define UDP as 'udp' on top of either ipv4 or ipv6, or dns equivalents.
33
+ var UDP = Or (
34
+ And (DNS , Base (ma .P_UDP )),
35
+ And (IP , Base (ma .P_UDP )),
36
+ )
17
37
18
- // Define UTP as 'utp' on top of udp (on top of ipv4 or ipv6)
38
+ // Define UTP as 'utp' on top of udp (on top of ipv4 or ipv6).
19
39
var UTP = And (UDP , Base (ma .P_UTP ))
20
40
21
41
// Define QUIC as 'quic' on top of udp (on top of ipv4 or ipv6)
@@ -30,6 +50,25 @@ var Reliable = Or(TCP, UTP, QUIC)
30
50
// IPFS can run over any reliable underlying transport protocol
31
51
var IPFS = And (Reliable , Base (ma .P_IPFS ))
32
52
53
+ // Define http over TCP or DNS or http over DNS format multiaddr
54
+ var HTTP = Or (
55
+ And (TCP , Base (ma .P_HTTP )),
56
+ And (IP , Base (ma .P_HTTP )),
57
+ And (DNS , Base (ma .P_HTTP )),
58
+ )
59
+
60
+ // Define https over TCP or DNS or https over DNS format multiaddr
61
+ var HTTPS = Or (
62
+ And (TCP , Base (ma .P_HTTPS )),
63
+ And (IP , Base (ma .P_HTTPS )),
64
+ And (DNS , Base (ma .P_HTTPS )),
65
+ )
66
+
67
+ // Define p2p-webrtc-direct over HTTP or p2p-webrtc-direct over HTTPS format multiaddr
68
+ var WebRTCDirect = Or (
69
+ And (HTTP , Base (ma .P_P2P_WEBRTC_DIRECT )),
70
+ And (HTTPS , Base (ma .P_P2P_WEBRTC_DIRECT )))
71
+
33
72
const (
34
73
or = iota
35
74
and = iota
0 commit comments