github.com/decred/dcrlnd@v0.7.6/htlcswitch/hodl/config_dev.go (about) 1 //go:build dev 2 // +build dev 3 4 package hodl 5 6 // Config is a struct enumerating the possible command line flags that are used 7 // to activate specific hodl modes. 8 // 9 // NOTE: THESE FLAGS ARE INTENDED FOR TESTING PURPOSES ONLY. ACTIVATING THESE 10 // FLAGS IN PRODUCTION WILL VIOLATE CRITICAL ASSUMPTIONS MADE BY THIS SOFTWARE. 11 type Config struct { 12 ExitSettle bool `long:"exit-settle" description:"Instructs the node to drop ADDs for which it is the exit node, and to not settle back to the sender"` 13 14 AddIncoming bool `long:"add-incoming" description:"Instructs the node to drop incoming ADDs before processing them in the incoming link"` 15 16 SettleIncoming bool `long:"settle-incoming" description:"Instructs the node to drop incoming SETTLEs before processing them in the incoming link"` 17 18 FailIncoming bool `long:"fail-incoming" description:"Instructs the node to drop incoming FAILs before processing them in the incoming link"` 19 20 AddOutgoing bool `long:"add-outgoing" description:"Instructs the node to drop outgoing ADDs before applying them to the channel state"` 21 22 SettleOutgoing bool `long:"settle-outgoing" description:"Instructs the node to drop outgoing SETTLEs before applying them to the channel state"` 23 24 FailOutgoing bool `long:"fail-outgoing" description:"Instructs the node to drop outgoing FAILs before applying them to the channel state"` 25 26 Commit bool `long:"commit" description:"Instructs the node to add HTLCs to its local commitment state and to open circuits for any ADDs, but abort before committing the changes"` 27 28 BogusSettle bool `long:"bogus-settle" description:"Instructs the node to settle back any incoming HTLC with a bogus preimage"` 29 } 30 31 // Mask extracts the flags specified in the configuration, composing a Mask from 32 // the active flags. 33 func (c *Config) Mask() Mask { 34 var flags []Flag 35 36 if c.ExitSettle { 37 flags = append(flags, ExitSettle) 38 } 39 if c.AddIncoming { 40 flags = append(flags, AddIncoming) 41 } 42 if c.SettleIncoming { 43 flags = append(flags, SettleIncoming) 44 } 45 if c.FailIncoming { 46 flags = append(flags, FailIncoming) 47 } 48 if c.AddOutgoing { 49 flags = append(flags, AddOutgoing) 50 } 51 if c.SettleOutgoing { 52 flags = append(flags, SettleOutgoing) 53 } 54 if c.FailOutgoing { 55 flags = append(flags, FailOutgoing) 56 } 57 if c.Commit { 58 flags = append(flags, Commit) 59 } 60 if c.BogusSettle { 61 flags = append(flags, BogusSettle) 62 } 63 64 // NOTE: The value returned here will only honor the configuration if 65 // the dev build flag is present. In production, this method always 66 // returns hodl.MaskNone and Active(*) always returns false. 67 return MaskFromFlags(flags...) 68 }