go-multiaddr/protocols.go

55 lines
1.1 KiB
Go
Raw Normal View History

2014-07-03 23:42:24 -07:00
package multiaddr
2014-09-11 10:47:56 -07:00
// Protocol is a Multiaddr protocol description structure.
2014-07-03 23:42:24 -07:00
type Protocol struct {
2014-07-04 11:21:39 -07:00
Code int
Size int
Name string
2014-07-03 23:42:24 -07:00
}
// replicating table here to:
// 1. avoid parsing the csv
// 2. ensuring errors in the csv don't screw up code.
// 3. changing a number has to happen in two places.
2014-07-07 01:25:20 -07:00
const (
P_IP4 = 4
P_TCP = 6
P_UDP = 17
P_DCCP = 33
P_IP6 = 41
P_SCTP = 132
)
2014-09-11 10:47:56 -07:00
// Protocols is the list of multiaddr protocols supported by this module.
2014-07-04 00:12:05 -07:00
var Protocols = []*Protocol{
2014-07-07 01:25:20 -07:00
&Protocol{P_IP4, 32, "ip4"},
&Protocol{P_TCP, 16, "tcp"},
&Protocol{P_UDP, 16, "udp"},
&Protocol{P_DCCP, 16, "dccp"},
&Protocol{P_IP6, 128, "ip6"},
2014-07-04 11:21:39 -07:00
// these require varint:
2014-07-07 01:25:20 -07:00
&Protocol{P_SCTP, 16, "sctp"},
2014-07-04 11:21:39 -07:00
// {480, 0, "http"},
// {443, 0, "https"},
2014-07-03 23:42:24 -07:00
}
2014-09-11 10:47:56 -07:00
// ProtocolWithName returns the Protocol description with given string name.
2014-07-03 23:42:24 -07:00
func ProtocolWithName(s string) *Protocol {
2014-07-04 11:21:39 -07:00
for _, p := range Protocols {
if p.Name == s {
return p
}
}
return nil
2014-07-03 23:42:24 -07:00
}
2014-09-11 10:47:56 -07:00
// ProtocolWithCode returns the Protocol description with given protocol code.
2014-07-03 23:42:24 -07:00
func ProtocolWithCode(c int) *Protocol {
2014-07-04 11:21:39 -07:00
for _, p := range Protocols {
if p.Code == c {
return p
}
}
return nil
2014-07-03 23:42:24 -07:00
}