/ feature / required.go
required.go
 1  package feature
 2  
 3  import (
 4  	"fmt"
 5  
 6  	"github.com/lightningnetwork/lnd/lnwire"
 7  )
 8  
 9  // ErrUnknownRequired signals that a feature vector requires certain features
10  // that our node is unaware of or does not implement.
11  type ErrUnknownRequired struct {
12  	unknown []lnwire.FeatureBit
13  }
14  
15  // NewErrUnknownRequired initializes an ErrUnknownRequired with the unknown
16  // feature bits.
17  func NewErrUnknownRequired(unknown []lnwire.FeatureBit) ErrUnknownRequired {
18  	return ErrUnknownRequired{
19  		unknown: unknown,
20  	}
21  }
22  
23  // Error returns a human-readable description of the error.
24  func (e ErrUnknownRequired) Error() string {
25  	return fmt.Sprintf("feature vector contains unknown required "+
26  		"features: %v", e.unknown)
27  }
28  
29  // ValidateRequired returns an error if the feature vector contains a non-zero
30  // number of unknown, required feature bits.
31  func ValidateRequired(fv *lnwire.FeatureVector) error {
32  	unknown := fv.UnknownRequiredFeatures()
33  	if len(unknown) > 0 {
34  		return NewErrUnknownRequired(unknown)
35  	}
36  	return nil
37  }