mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-27 10:11:57 +01:00
Disallow update of any features that are defined by LND (since just updating the feature, but not the functionality will result in strange behavior). All known feature bits should be toggled using protocol config options.
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package feature
|
|
|
|
// Set is an enum identifying various feature sets, which separates the single
|
|
// feature namespace into distinct categories depending what context a feature
|
|
// vector is being used.
|
|
type Set uint8
|
|
|
|
const (
|
|
// SetInit identifies features that should be sent in an Init message to
|
|
// a remote peer.
|
|
SetInit Set = iota
|
|
|
|
// SetLegacyGlobal identifies features that should be set in the legacy
|
|
// GlobalFeatures field of an Init message, which maintains backwards
|
|
// compatibility with nodes that haven't implemented flat features.
|
|
SetLegacyGlobal
|
|
|
|
// SetNodeAnn identifies features that should be advertised on node
|
|
// announcements.
|
|
SetNodeAnn
|
|
|
|
// SetInvoice identifies features that should be advertised on invoices
|
|
// generated by the daemon.
|
|
SetInvoice
|
|
|
|
// SetInvoiceAmp identifies the features that should be advertised on
|
|
// AMP invoices generated by the daemon.
|
|
SetInvoiceAmp
|
|
|
|
// setSentinel is used to mark the end of our known sets. This enum
|
|
// member must *always* be the last item in the iota list to ensure
|
|
// that validation works as expected.
|
|
setSentinel
|
|
)
|
|
|
|
// valid returns a boolean indicating whether a set value is one of our
|
|
// predefined feature sets.
|
|
func (s Set) valid() bool {
|
|
return s < setSentinel
|
|
}
|
|
|
|
// String returns a human-readable description of a Set.
|
|
func (s Set) String() string {
|
|
switch s {
|
|
case SetInit:
|
|
return "SetInit"
|
|
case SetLegacyGlobal:
|
|
return "SetLegacyGlobal"
|
|
case SetNodeAnn:
|
|
return "SetNodeAnn"
|
|
case SetInvoice:
|
|
return "SetInvoice"
|
|
case SetInvoiceAmp:
|
|
return "SetInvoiceAmp"
|
|
default:
|
|
return "SetUnknown"
|
|
}
|
|
}
|