package feature import ( "fmt" "github.com/lightningnetwork/lnd/lnwire" ) // ErrUnknownRequired signals that a feature vector requires certain features // that our node is unaware of or does not implement. type ErrUnknownRequired struct { unknown []lnwire.FeatureBit } // NewErrUnknownRequired initializes an ErrUnknownRequired with the unknown // feature bits. func NewErrUnknownRequired(unknown []lnwire.FeatureBit) ErrUnknownRequired { return ErrUnknownRequired{ unknown: unknown, } } // Error returns a human-readable description of the error. func (e ErrUnknownRequired) Error() string { return fmt.Sprintf("feature vector contains unknown required "+ "features: %v", e.unknown) } // ValidateRequired returns an error if the feature vector contains a non-zero // number of unknown, required feature bits. func ValidateRequired(fv *lnwire.FeatureVector) error { unknown := fv.UnknownRequiredFeatures() if len(unknown) > 0 { return NewErrUnknownRequired(unknown) } return nil }