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 711 : !fd_feature_iter_done( id ); 7 708 : id = fd_feature_iter_next( id ) ) { 8 708 : fd_features_set( f, id, 0UL ); 9 708 : } 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 1817316 : !fd_feature_iter_done( id ); 16 1809648 : id = fd_feature_iter_next( id ) ) { 17 1809648 : fd_features_set( f, id, FD_FEATURE_DISABLED ); 18 1809648 : } 19 7668 : } 20 : 21 : void 22 0 : fd_features_enable_cleaned_up( fd_features_t * f, fd_cluster_version_t const * cluster_version ) { 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->major ) || 27 0 : ( id->cleaned_up[0]==cluster_version->major && id->cleaned_up[1]<cluster_version->minor ) || 28 0 : ( id->cleaned_up[0]==cluster_version->major && id->cleaned_up[1]==cluster_version->minor && id->cleaned_up[2]<=cluster_version->patch ) ) { 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 4266 : !fd_feature_iter_done( id ); 43 4248 : id = fd_feature_iter_next( id ) ) { 44 4248 : if( !memcmp( &id->id, pubkey, sizeof(fd_pubkey_t) ) ) { 45 0 : fd_features_set( f, id, slot ); 46 0 : break; 47 0 : } 48 4248 : } 49 18 : } 50 18 : }