@@ -4,18 +4,38 @@ import (
44 "strings"
55
66 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 ,
721)
822
923// Define IP as either ipv4 or ipv6
1024var IP = Or (Base (ma .P_IP4 ), Base (ma .P_IP6 ))
1125
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+ )
1431
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+ )
1737
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).
1939var UTP = And (UDP , Base (ma .P_UTP ))
2040
2141// Define QUIC as 'quic' on top of udp (on top of ipv4 or ipv6)
@@ -30,6 +50,25 @@ var Reliable = Or(TCP, UTP, QUIC)
3050// IPFS can run over any reliable underlying transport protocol
3151var IPFS = And (Reliable , Base (ma .P_IPFS ))
3252
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+
3372const (
3473 or = iota
3574 and = iota
0 commit comments