Line data Source code
1 : #include "fd_features.h" 2 : 3 : void 4 3 : fd_features_enable_all( fd_features_t * f ) { 5 3 : for( fd_feature_id_t const * id = fd_feature_iter_init(); 6 687 : !fd_feature_iter_done( id ); 7 684 : id = fd_feature_iter_next( id ) ) { 8 684 : fd_features_set( f, id, 0UL ); 9 684 : } 10 3 : } 11 : 12 : void 13 7668 : fd_features_disable_all( fd_features_t * f ) { 14 7668 : for( fd_feature_id_t const * id = fd_feature_iter_init(); 15 1755972 : !fd_feature_iter_done( id ); 16 1748304 : id = fd_feature_iter_next( id ) ) { 17 1748304 : fd_features_set( f, id, FD_FEATURE_DISABLED ); 18 1748304 : } 19 7668 : } 20 : 21 : void 22 0 : fd_features_enable_cleaned_up( fd_features_t * f, uint cluster_version[3] ) { 23 0 : for( fd_feature_id_t const * id = fd_feature_iter_init(); 24 0 : !fd_feature_iter_done( id ); 25 0 : id = fd_feature_iter_next( id ) ) { 26 0 : if( ( id->cleaned_up[0]<cluster_version[0] ) || 27 0 : ( id->cleaned_up[0]==cluster_version[0] && id->cleaned_up[1]<cluster_version[1] ) || 28 0 : ( id->cleaned_up[0]==cluster_version[0] && id->cleaned_up[1]==cluster_version[1] && id->cleaned_up[2]<=cluster_version[2] ) ) { 29 0 : fd_features_set( f, id, 0UL ); 30 0 : } else { 31 0 : fd_features_set( f, id, FD_FEATURE_DISABLED ); 32 0 : } 33 0 : } 34 0 : } 35 : 36 : void 37 18 : fd_features_enable_one_offs( fd_features_t * f, char const * * one_offs, uint one_offs_cnt, ulong slot ) { 38 18 : uchar pubkey[32]; 39 36 : for( uint i=0U; i<one_offs_cnt; i++ ) { 40 18 : fd_base58_decode_32( one_offs[i], pubkey ); 41 18 : for( fd_feature_id_t const * id = fd_feature_iter_init(); 42 4122 : !fd_feature_iter_done( id ); 43 4104 : id = fd_feature_iter_next( id ) ) { 44 4104 : if( !memcmp( &id->id, pubkey, sizeof(fd_pubkey_t) ) ) { 45 0 : fd_features_set( f, id, slot ); 46 0 : break; 47 0 : } 48 4104 : } 49 18 : } 50 18 : }