diff --git a/pkg/network/address.go b/pkg/network/address.go index e581578ce..d1a430e1e 100644 --- a/pkg/network/address.go +++ b/pkg/network/address.go @@ -12,6 +12,12 @@ type Address struct { ma multiaddr.Multiaddr } +// LocalAddressSource is an interface of local +// network address container with read access. +type LocalAddressSource interface { + LocalAddress() *Address +} + func (a Address) String() string { return a.ma.String() } @@ -37,3 +43,9 @@ func AddressFromString(s string) (*Address, error) { ma: ma, }, nil } + +// IsLocalAddress returns true if network endpoint from local address +// source is equal to network endpoint of passed address. +func IsLocalAddress(src LocalAddressSource, addr *Address) bool { + return src.LocalAddress().NetAddr() == addr.NetAddr() +}