Skip to content

Commit c6df0a2

Browse files
committed
Added garlic and sam3 patern.
1 parent 7d8102a commit c6df0a2

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/multiformats/go-multiaddr-fmt
22

33
require (
4-
github.com/multiformats/go-multiaddr v0.0.1
4+
github.com/multiformats/go-multiaddr v0.0.4
55
github.com/multiformats/go-multiaddr-dns v0.0.2
66
)

patterns.go

+17-3
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,25 @@ var UTP = And(UDP, Base(ma.P_UTP))
4141
// Define QUIC as 'quic' on top of udp (on top of ipv4 or ipv6)
4242
var QUIC = And(UDP, Base(ma.P_QUIC))
4343

44-
// Define unreliable transport as udp
44+
// Define garlic32 (i2p hashed) as it self
45+
var GARLIC32 = Base(ma.P_GARLIC32)
46+
47+
// Define garlic64 (i2p destination) as it self
48+
var GARLIC64 = Base(ma.P_GARLIC64)
49+
50+
// Define garlic (i2p destination or hashed) as any of garlic32 or garlic64
51+
var GARLIC = Or(GARLIC64, GARLIC32)
52+
53+
// Define sam3 as tcp or udp and sam3
54+
// Sam3 have a special case, he can't be used to connect to other peers but his
55+
// instance allow to listen and connect garlic
56+
var SAM3 = And(Or(TCP, UDP), Base(ma.P_SAM3))
57+
58+
// Define unreliable transport as udp or sam3
4559
var Unreliable = Or(UDP)
4660

47-
// Now define a Reliable transport as either tcp or utp or quic
48-
var Reliable = Or(TCP, UTP, QUIC)
61+
// Now define a Reliable transport as either tcp or utp or quic or garlic
62+
var Reliable = Or(TCP, UTP, QUIC, GARLIC)
4963

5064
// IPFS can run over any reliable underlying transport protocol
5165
var IPFS = And(Reliable, Base(ma.P_IPFS))

patterns_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,35 @@ var TestVectors = map[string]*testVector{
3838
Good: []string{"/ip4/1.2.3.4/udp/1234/quic", "/ip6/::/udp/1234/quic"},
3939
Bad: []string{"/ip4/0.0.0.0/tcp/12345/quic", "/ip6/1.2.3.4/ip4/0.0.0.0/udp/1234/quic", "/quic"},
4040
},
41+
"SAM3": {
42+
Pattern: SAM3,
43+
Good: []string{"/ip4/1.2.3.4/udp/1234/sam3/3|3|6|6|2|2", "/ip6/::1/tcp/1234/sam3/3|3|6|6|2|2"},
44+
Bad: []string{"/ip4/0.0.0.0/udp/1234/quic/sam3/3|3|6|6|2|2", "/sam3/3|3|6|6|2|2"},
45+
},
46+
"GARLIC": {
47+
Pattern: GARLIC,
48+
Good: []string{
49+
"/garlic32/6zlio2ipbnmir26nrspdbt4cqnhu52ekw2gw6kfca4p77tdtsmja",
50+
"/garlic64/Z1XdSy9zNg1IaFfDqWhpzoSjlf-lAWT4YkrRkq3rsnQyY69QXc~-2Xeyoj7~36swjrHjlH-OqvTbM0jFAc2RzIQ1VEf9uDUAz1sso9~or1xIDxsEUmgK~TQvHMPNFwVGhMxZ7K4LkLbi~sN2WlZB49FhhWVgD-nV-WfuRi~aByMUGtM1SqBML-Ok1bI6Pw9o6VIM-aFG7RLj1s8RsJOCzkugKLMsW-k5gXze6QJlRJKlcHI23bf-LPqhTfVe2HpEjS5DAj1fohtY63V3Kksd34Ejh86I-njBYGG66enBHvM-sRKAUQIKAt7eJEuk7l5BcidGD4HqodRl1nYBrHoP0MFDtw4ZTLcefVCwZ~OttpnUdH~9RBPBxc9Da-mVOe9dh608anxuXTBaKzdN6FQjxnMPEMQe5pBPzjGrkUpgCJLduybMltVymlYIMR98dPpBskqJQjuEm5tHBSWJfiKD9POVKIV0yyjlakoHm4Y~Zrl14GdFTIf2BGHMjf9GP0Q5BQAEAAcAAA==",
51+
},
52+
Bad: []string{
53+
"/ip4/0.0.0.0/tcp/12345/garlic32/6zlio2ipbnmir26nrspdbt4cqnhu52ekw2gw6kfca4p77tdtsmja",
54+
"/ip4/0.0.0.0/tcp/12345/garlic64/Z1XdSy9zNg1IaFfDqWhpzoSjlf-lAWT4YkrRkq3rsnQyY69QXc~-2Xeyoj7~36swjrHjlH-OqvTbM0jFAc2RzIQ1VEf9uDUAz1sso9~or1xIDxsEUmgK~TQvHMPNFwVGhMxZ7K4LkLbi~sN2WlZB49FhhWVgD-nV-WfuRi~aByMUGtM1SqBML-Ok1bI6Pw9o6VIM-aFG7RLj1s8RsJOCzkugKLMsW-k5gXze6QJlRJKlcHI23bf-LPqhTfVe2HpEjS5DAj1fohtY63V3Kksd34Ejh86I-njBYGG66enBHvM-sRKAUQIKAt7eJEuk7l5BcidGD4HqodRl1nYBrHoP0MFDtw4ZTLcefVCwZ~OttpnUdH~9RBPBxc9Da-mVOe9dh608anxuXTBaKzdN6FQjxnMPEMQe5pBPzjGrkUpgCJLduybMltVymlYIMR98dPpBskqJQjuEm5tHBSWJfiKD9POVKIV0yyjlakoHm4Y~Zrl14GdFTIf2BGHMjf9GP0Q5BQAEAAcAAA==",
55+
"/garlic32",
56+
"/garlic64",
57+
"/garlic32/Z1XdSy9zNg1IaFfDqWhpzoSjlf-lAWT4YkrRkq3rsnQyY69QXc~-2Xeyoj7~36swjrHjlH-OqvTbM0jFAc2RzIQ1VEf9uDUAz1sso9~or1xIDxsEUmgK~TQvHMPNFwVGhMxZ7K4LkLbi~sN2WlZB49FhhWVgD-nV-WfuRi~aByMUGtM1SqBML-Ok1bI6Pw9o6VIM-aFG7RLj1s8RsJOCzkugKLMsW-k5gXze6QJlRJKlcHI23bf-LPqhTfVe2HpEjS5DAj1fohtY63V3Kksd34Ejh86I-njBYGG66enBHvM-sRKAUQIKAt7eJEuk7l5BcidGD4HqodRl1nYBrHoP0MFDtw4ZTLcefVCwZ~OttpnUdH~9RBPBxc9Da-mVOe9dh608anxuXTBaKzdN6FQjxnMPEMQe5pBPzjGrkUpgCJLduybMltVymlYIMR98dPpBskqJQjuEm5tHBSWJfiKD9POVKIV0yyjlakoHm4Y~Zrl14GdFTIf2BGHMjf9GP0Q5BQAEAAcAAA==",
58+
"/garlic64/6zlio2ipbnmir26nrspdbt4cqnhu52ekw2gw6kfca4p77tdtsmja",
59+
},
60+
},
4161
"IPFS": {
4262
Pattern: IPFS,
4363
Good: []string{
4464
"/ip4/1.2.3.4/tcp/1234/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
4565
"/ip6/::/tcp/1234/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
4666
"/ip6/::/udp/1234/utp/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
4767
"/ip4/0.0.0.0/udp/1234/utp/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
68+
"/garlic32/6zlio2ipbnmir26nrspdbt4cqnhu52ekw2gw6kfca4p77tdtsmja/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
69+
"/garlic64/Z1XdSy9zNg1IaFfDqWhpzoSjlf-lAWT4YkrRkq3rsnQyY69QXc~-2Xeyoj7~36swjrHjlH-OqvTbM0jFAc2RzIQ1VEf9uDUAz1sso9~or1xIDxsEUmgK~TQvHMPNFwVGhMxZ7K4LkLbi~sN2WlZB49FhhWVgD-nV-WfuRi~aByMUGtM1SqBML-Ok1bI6Pw9o6VIM-aFG7RLj1s8RsJOCzkugKLMsW-k5gXze6QJlRJKlcHI23bf-LPqhTfVe2HpEjS5DAj1fohtY63V3Kksd34Ejh86I-njBYGG66enBHvM-sRKAUQIKAt7eJEuk7l5BcidGD4HqodRl1nYBrHoP0MFDtw4ZTLcefVCwZ~OttpnUdH~9RBPBxc9Da-mVOe9dh608anxuXTBaKzdN6FQjxnMPEMQe5pBPzjGrkUpgCJLduybMltVymlYIMR98dPpBskqJQjuEm5tHBSWJfiKD9POVKIV0yyjlakoHm4Y~Zrl14GdFTIf2BGHMjf9GP0Q5BQAEAAcAAA==/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
4870
},
4971
Bad: []string{
5072
"/ip4/1.2.3.4/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",

0 commit comments

Comments
 (0)