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  }