Add a sample module FilesystemPersister.
[rust-lightning] / lightning / src / ln / features.rs
index ad8942326322f75207e42d0a9ec3f09ee86fc0a7..f573ac4c43abd910c96764e123913901a3af1f2e 100644 (file)
@@ -1,3 +1,12 @@
+// This file is Copyright its original authors, visible in version control
+// history.
+//
+// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
+// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// You may not use this file except in accordance with one or both of these
+// licenses.
+
 //! Feature flag definitions for the Lightning protocol according to [BOLT #9].
 //!
 //! Lightning nodes advertise a supported set of operation through feature flags. Features are
@@ -89,7 +98,7 @@ mod sealed {
                        // Byte 0
                        ,
                        // Byte 1
-                       ,
+                       StaticRemoteKey,
                        // Byte 2
                        ,
                ],
@@ -107,7 +116,7 @@ mod sealed {
                        // Byte 0
                        ,
                        // Byte 1
-                       ,
+                       StaticRemoteKey,
                        // Byte 2
                        ,
                ],
@@ -270,6 +279,8 @@ mod sealed {
 
 /// Tracks the set of features which a node implements, templated by the context in which it
 /// appears.
+///
+/// (C-not exported) as we map the concrete feature types below directly instead
 pub struct Features<T: sealed::Context> {
        /// Note that, for convenience, flags is LITTLE endian (despite being big-endian on the wire)
        flags: Vec<u8>,
@@ -567,10 +578,10 @@ mod tests {
                assert!(!InitFeatures::known().requires_variable_length_onion());
                assert!(!NodeFeatures::known().requires_variable_length_onion());
 
-               assert!(!InitFeatures::known().supports_static_remote_key());
-               assert!(!NodeFeatures::known().supports_static_remote_key());
-               assert!(!InitFeatures::known().requires_static_remote_key());
-               assert!(!NodeFeatures::known().requires_static_remote_key());
+               assert!(InitFeatures::known().supports_static_remote_key());
+               assert!(NodeFeatures::known().supports_static_remote_key());
+               assert!(InitFeatures::known().requires_static_remote_key());
+               assert!(NodeFeatures::known().requires_static_remote_key());
 
                assert!(InitFeatures::known().supports_payment_secret());
                assert!(NodeFeatures::known().supports_payment_secret());
@@ -617,11 +628,11 @@ mod tests {
                {
                        // Check that the flags are as expected:
                        // - option_data_loss_protect
-                       // - var_onion_optin | payment_secret
+                       // - var_onion_optin | static_remote_key (req) | payment_secret
                        // - basic_mpp
                        assert_eq!(node_features.flags.len(), 3);
                        assert_eq!(node_features.flags[0], 0b00000010);
-                       assert_eq!(node_features.flags[1], 0b10000010);
+                       assert_eq!(node_features.flags[1], 0b10010010);
                        assert_eq!(node_features.flags[2], 0b00000010);
                }