1*b2ed49a5SDavid van Moolenbroek #ifndef METADATA_TRANSFER_H 2*b2ed49a5SDavid van Moolenbroek #define METADATA_TRANSFER_H 3*b2ed49a5SDavid van Moolenbroek 4*b2ed49a5SDavid van Moolenbroek #include <st/state_transfer.h> 5*b2ed49a5SDavid van Moolenbroek 6*b2ed49a5SDavid van Moolenbroek /* Metadata transfer and adjustment functions */ 7*b2ed49a5SDavid van Moolenbroek PRIVATE int transfer_metadata_functions(st_init_info_t *info, 8*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *cached_magic_vars, 9*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *remote_magic_vars, 10*b2ed49a5SDavid van Moolenbroek st_counterparts_t *counterparts); 11*b2ed49a5SDavid van Moolenbroek PRIVATE int transfer_metadata_dfunctions(st_init_info_t *info, 12*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *cached_magic_vars, 13*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *remote_magic_vars, 14*b2ed49a5SDavid van Moolenbroek st_counterparts_t *counterparts); 15*b2ed49a5SDavid van Moolenbroek PRIVATE int transfer_metadata_type_members(st_init_info_t *info, 16*b2ed49a5SDavid van Moolenbroek struct _magic_type *type, struct _magic_vars_t *cached_magic_vars, 17*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *remote_magic_vars); 18*b2ed49a5SDavid van Moolenbroek PRIVATE int transfer_metadata_sentries(st_init_info_t *info, 19*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *cached_magic_vars, 20*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *remote_magic_vars, st_counterparts_t *counterparts, 21*b2ed49a5SDavid van Moolenbroek size_t *max_buff_sz); 22*b2ed49a5SDavid van Moolenbroek PRIVATE int transfer_metadata_sentry_members(st_init_info_t *info, 23*b2ed49a5SDavid van Moolenbroek struct _magic_sentry *sentry); 24*b2ed49a5SDavid van Moolenbroek 25*b2ed49a5SDavid van Moolenbroek PRIVATE int pair_metadata_types(st_init_info_t *info, 26*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *cached_magic_vars, 27*b2ed49a5SDavid van Moolenbroek st_counterparts_t *counterparts, int allow_unpaired_types); 28*b2ed49a5SDavid van Moolenbroek PRIVATE int pair_metadata_functions(st_init_info_t *info, 29*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *cached_magic_vars, st_counterparts_t *counterparts); 30*b2ed49a5SDavid van Moolenbroek PRIVATE int pair_metadata_sentries(st_init_info_t *info, 31*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *cached_magic_vars, st_counterparts_t *counterparts); 32*b2ed49a5SDavid van Moolenbroek #if !ST_ASSUME_RAW_COPY_BEFORE_TRANSFER 33*b2ed49a5SDavid van Moolenbroek PRIVATE int allocate_pair_metadata_dsentries(st_init_info_t *info, 34*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *cached_magic_vars, st_counterparts_t *counterparts); 35*b2ed49a5SDavid van Moolenbroek #else 36*b2ed49a5SDavid van Moolenbroek PRIVATE int allocate_pair_metadata_dsentries_from_raw_copy(st_init_info_t *info, 37*b2ed49a5SDavid van Moolenbroek struct _magic_vars_t *cached_magic_vars, st_counterparts_t *counterparts); 38*b2ed49a5SDavid van Moolenbroek #endif 39*b2ed49a5SDavid van Moolenbroek 40*b2ed49a5SDavid van Moolenbroek /* metadata transfer helper functions */ 41*b2ed49a5SDavid van Moolenbroek PRIVATE int md_transfer_str(st_init_info_t *info, char **str_pt); 42*b2ed49a5SDavid van Moolenbroek #define MD_TRANSFER_STR(INFO, STR_PT) \ 43*b2ed49a5SDavid van Moolenbroek do { \ 44*b2ed49a5SDavid van Moolenbroek if (md_transfer_str(INFO, __UNCONST(STR_PT))) { \ 45*b2ed49a5SDavid van Moolenbroek printf("%s, line %d. md_transfer_str(): ERROR transferring.\n", \ 46*b2ed49a5SDavid van Moolenbroek __FILE__, __LINE__); \ 47*b2ed49a5SDavid van Moolenbroek return EGENERIC; \ 48*b2ed49a5SDavid van Moolenbroek } \ 49*b2ed49a5SDavid van Moolenbroek } while(0) 50*b2ed49a5SDavid van Moolenbroek PRIVATE int md_transfer(st_init_info_t *info, void *from, void **to, int len); 51*b2ed49a5SDavid van Moolenbroek #define MD_TRANSFER(INFO, FROM, TO, LEN) \ 52*b2ed49a5SDavid van Moolenbroek do { \ 53*b2ed49a5SDavid van Moolenbroek if (md_transfer(INFO, FROM, TO, LEN)) { \ 54*b2ed49a5SDavid van Moolenbroek printf("%s, line %d. md_transfer(): ERROR transferring.\n", \ 55*b2ed49a5SDavid van Moolenbroek __FILE__, __LINE__); \ 56*b2ed49a5SDavid van Moolenbroek return EGENERIC; \ 57*b2ed49a5SDavid van Moolenbroek } \ 58*b2ed49a5SDavid van Moolenbroek } while(0) 59*b2ed49a5SDavid van Moolenbroek 60*b2ed49a5SDavid van Moolenbroek #endif /* METADATA_TRANSFER_H */ 61