lnwire: add new type OpaqueAddrs

In this commit, a new net.Addr implementation called OpaqueAddrs is
added along with a WriteOpaqueAddrs func that is called in
WriteNetAddrs. It will be used to store any address bytes that we cannot
parse due to us not being aware of the address type.
This commit is contained in:
Elle Mouton
2022-04-21 10:42:27 +02:00
parent f77388e072
commit fa0512f62f
3 changed files with 58 additions and 17 deletions

View File

@@ -32,6 +32,9 @@ var (
// ErrNilNetAddress is returned when a nil value is used in []net.Addr.
ErrNilNetAddress = errors.New("cannot write nil address")
// ErrNilOpaqueAddrs is returned when the supplied address is nil.
ErrNilOpaqueAddrs = errors.New("cannot write nil OpaqueAddrs")
// ErrNilPublicKey is returned when a nil pubkey is used.
ErrNilPublicKey = errors.New("cannot write nil pubkey")
@@ -357,6 +360,16 @@ func WriteOnionAddr(buf *bytes.Buffer, addr *tor.OnionAddr) error {
return WriteUint16(buf, uint16(addr.Port))
}
// WriteOpaqueAddrs appends the payload of the given OpaqueAddrs to buffer.
func WriteOpaqueAddrs(buf *bytes.Buffer, addr *OpaqueAddrs) error {
if addr == nil {
return ErrNilOpaqueAddrs
}
_, err := buf.Write(addr.Payload)
return err
}
// WriteNetAddrs appends a slice of addresses to the provided buffer with the
// length info.
func WriteNetAddrs(buf *bytes.Buffer, addresses []net.Addr) error {
@@ -376,6 +389,10 @@ func WriteNetAddrs(buf *bytes.Buffer, addresses []net.Addr) error {
if err := WriteOnionAddr(addrBuf, a); err != nil {
return err
}
case *OpaqueAddrs:
if err := WriteOpaqueAddrs(addrBuf, a); err != nil {
return err
}
default:
return ErrNilNetAddress
}