Line data Source code
1 : #ifndef HEADER_fd_src_discof_restore_utils_fd_ssresolve_h 2 : #define HEADER_fd_src_discof_restore_utils_fd_ssresolve_h 3 : 4 : #include "../../../flamenco/fd_flamenco_base.h" 5 : #include "../../../util/net/fd_net_headers.h" 6 : #include "../../../waltz/tls/fd_tls.h" 7 : #include "../../../ballet/x509/fd_x509_ca_store.h" 8 : 9 0 : #define FD_SSRESOLVE_MAGIC (0xF17EDA2CE55E510) /* FIREDANCER HTTP RESOLVE V0 */ 10 10752 : #define FD_SSRESOLVE_ALIGN (128UL) 11 : 12 : struct fd_ssresolve_result { 13 : ulong slot; /* slot of the snapshot */ 14 : ulong base_slot; /* base slot of incremental snapshot or ULONG_MAX */ 15 : uchar hash[ FD_HASH_FOOTPRINT ]; /* hash of the snapshot */ 16 : }; 17 : 18 : typedef struct fd_ssresolve_result fd_ssresolve_result_t; 19 : 20 : struct fd_ssresolve_private; 21 : typedef struct fd_ssresolve_private fd_ssresolve_t; 22 : 23 : FD_PROTOTYPES_BEGIN 24 : 25 : FD_FN_CONST ulong 26 : fd_ssresolve_align( void ); 27 : 28 : FD_FN_CONST ulong 29 : fd_ssresolve_footprint( void ); 30 : 31 : void * 32 : fd_ssresolve_new( void * shmem ); 33 : 34 : fd_ssresolve_t * 35 : fd_ssresolve_join( void * ssresolve ); 36 : 37 : void 38 : fd_ssresolve_init( fd_ssresolve_t * ssresolve, 39 : fd_ip4_port_t addr, 40 : int sockfd, 41 : int full, 42 : char const * hostname ); 43 : 44 : void 45 : fd_ssresolve_init_https( fd_ssresolve_t * ssresolve, 46 : fd_ip4_port_t addr, 47 : int sockfd, 48 : int full, 49 : char const * hostname, 50 : fd_tls_t const * tls, 51 : fd_x509_ca_store_t const * ca_store ); 52 : 53 0 : #define FD_SSRESOLVE_ADVANCE_ERROR (-1) /* fatal error */ 54 0 : #define FD_SSRESOLVE_ADVANCE_AGAIN ( 0) /* try again */ 55 0 : #define FD_SSRESOLVE_ADVANCE_SUCCESS ( 1) /* successful advance */ 56 0 : #define FD_SSRESOLVE_ADVANCE_RESULT ( 2) /* successful advance with valid resolve result */ 57 : 58 : int 59 : fd_ssresolve_advance_poll_out( fd_ssresolve_t * ssresolve ); 60 : 61 : int 62 : fd_ssresolve_advance_poll_in( fd_ssresolve_t * ssresolve, 63 : fd_ssresolve_result_t * result ); 64 : 65 : int 66 : fd_ssresolve_is_done( fd_ssresolve_t * ssresolve ); 67 : 68 : void 69 : fd_ssresolve_cancel( fd_ssresolve_t * ssresolve ); 70 : 71 : FD_PROTOTYPES_END 72 : 73 : #endif /* HEADER_fd_src_discof_restore_utils_fd_ssresolve_h */