int um_backing_msg_init(um_backing_msg_t* bmsg) { entry_list_init(&bmsg->elist); bmsg->elist.entries = bmsg->entries_array; bmsg->elist.entries_size = BMSG_ENTRIES_ARRAY_SIZE; bmsg->msg = NULL; bmsg->inuse = 0; return 0; }
static void init(void) { app_comm_set_sniff_interval(SNIFF_INTERVAL_REDUCED); app_message_register_inbox_received(in_received_handler); app_message_register_inbox_dropped(in_dropped_handler); app_message_register_outbox_sent(out_sent_handler); app_message_register_outbox_failed(out_failed_handler); app_message_open(app_message_inbox_size_maximum(), APP_MESSAGE_OUTBOX_SIZE_MINIMUM); dataitems = entry_list_init(dataitems_select_callback); main_menu_init(); main_menu_show(); }
um_status_t um_consume_no_copy(const uint8_t* header, size_t nheader, const uint8_t* body, size_t nbody, uint64_t* reqid_out, mc_msg_t* msg_out) { FBI_ASSERT(header && body && reqid_out && msg_out); um_message_info_t info; um_status_t header_rv = um_parse_header(header, nheader, &info); if (header_rv != um_ok) { return header_rv; } if (!(nheader == info.header_size && nbody == info.body_size && nheader + nbody == info.message_size)) { return um_invalid_range; } entry_list_t elist; entry_list_init(&elist); /* We know that header/body won't be modified here, but the interface is messed up */ ssize_t rv = entry_list_read_from_buf(&elist, (char*)header, nheader, (char*)body, nbody, /*free_buf_when_done=*/0); if (rv < 0 || rv != info.message_size) { return um_message_parse_error; } _parse_info_t parse_info; if (_fill_base_msg(&elist, msg_out, &parse_info) != 0) { return um_message_parse_error; } /* TODO: support stats with no_copy API */ if (parse_info.stats_count > 0) { return um_message_parse_error; } if (_fill_msg_strs(msg_out, &elist, body, &parse_info) != 0) { return um_message_parse_error; } *reqid_out = parse_info.reqid; return um_ok; }
/* * Create an ARCHIVE_MATCH object. */ struct archive * archive_match_new(void) { struct archive_match *a; a = (struct archive_match *)calloc(1, sizeof(*a)); if (a == NULL) return (NULL); a->archive.magic = ARCHIVE_MATCH_MAGIC; a->archive.state = ARCHIVE_STATE_NEW; match_list_init(&(a->inclusions)); match_list_init(&(a->exclusions)); __archive_rb_tree_init(&(a->exclusion_tree), &rb_ops_mbs); entry_list_init(&(a->exclusion_entry_list)); match_list_init(&(a->inclusion_unames)); match_list_init(&(a->inclusion_gnames)); time(&a->now); return (&(a->archive)); }