Example #1
0
static int
parse_entry(struct mod_metadata *md, const char *cval,
    struct elf_file *ef, const char *kldname)
{
	struct mod_depend mdp;
	struct mod_version mdv;
	Elf_Off data = (Elf_Off)md->md_data;
	int error = 0;

	record_start();
	switch (md->md_type) {
	case MDT_DEPEND:
		if (!dflag)
			break;
		check(EF_SEG_READ(ef, data, sizeof(mdp), &mdp));
		printf("  depends on %s.%d (%d,%d)\n", cval,
		    mdp.md_ver_preferred, mdp.md_ver_minimum, mdp.md_ver_maximum);
		break;
	case MDT_VERSION:
		check(EF_SEG_READ(ef, data, sizeof(mdv), &mdv));
		if (dflag) {
			printf("  interface %s.%d\n", cval, mdv.mv_version);
		} else {
			record_int(MDT_VERSION);
			record_string(cval);
			record_int(mdv.mv_version);
			record_string(kldname);
		}
		break;
	case MDT_MODULE:
		if (dflag) {
			printf("  module %s\n", cval);
		} else {
			record_int(MDT_MODULE);
			record_string(cval);
			record_string(kldname);
		}
		break;
	default:
		warnx("unknown metadata record %d in file %s", md->md_type, kldname);
	}
	if (!error)
		record_end();
	return error;
}
Example #2
0
void writeCtrlTrailer(hoststate_t* state) {
	log_trace("writeCtrlTrailer", "%s", state->ip_address_str);

	if (state->dirQueue.len != 0) {
		state->interestMask |= INTEREST_CHECK_MISC;
		record_raw_string_queue(state, RECKEY_UNCRAWLED, &state->dirQueue);
	}

	if (state->dataDBuffer.len != 0) {
		record_raw_dbuffer(
											state,
											RECKEY_DATA_DBUFFER_DUMP,
											NULL,
											0,
											&state->dataDBuffer
		);
	}

	if (state->ctrlDBuffer.len != 0) {
		record_raw_dbuffer(
											state,
											RECKEY_CTRL_DBUFFER_DUMP,
											NULL,
											0,
											&state->ctrlDBuffer
		);
	}

	record_int(state, RECKEY_LAST_STATE, state->lastState);
	record_int(state, RECKEY_TERM_CODE, state->terminationCode);
	record_base_raw_string(state, RECKEY_TERM_DESC, state->terminationDesc);
	record_int(state, RECKEY_INTEREST_MASK, state->interestMask);
	record_int(state, RECKEY_TOTAL_NUM_REQ, state->numReqSent);
	record_int(state, RECKEY_LIST_ERR_COUNT, state->listErrCount);
	store_filesystem_type(state);
	record_int(
						state,
						RECKEY_DURATION,
						gconfig.second - state->startingSecond
	);
	recorder_finish(state);
	log_trace(
						"writeCtrlTrailer",
						"%s: Successfully wrote control output",
						state->ip_address_str
	);
}