コード例 #1
0
ファイル: wire_server.c プロジェクト: nplab/packetdrill
/* Run the given packet event; send any error or warning back to the client. */
static int wire_server_run_packet_event(
	struct wire_server *wire_server, struct event *event,
	struct packet *packet, char **error)
{
	int result = STATUS_OK;

	result = run_packet_event(wire_server->state,
					  event, packet, error);
	if (result == STATUS_ERR) {
		/* When we sniff an incorrect packet, don't exit the
		 * process (we're a daemon), just return the error
		 * message via the TCP socket and finish the thread.
		 */
		DEBUGP("wire_server_run_packet_event: error!\n");
		if (wire_server_send_packets_done(wire_server, STATUS_ERR,
						  *error))
			return STATUS_ERR;
	} else if (result == STATUS_WARN) {
		/* A non-fatal problem with the packet. Return the
		 * warning message via the TCP socket and keep going.
		 */
		DEBUGP("wire_server_run_packet_event: warning!\n");
		if (wire_server_send_packet_warning(wire_server, *error))
			return STATUS_ERR;
	}
	return result;
}
コード例 #2
0
ファイル: run.c プロジェクト: BillTheBest/packetdrill
/* Run the given packet event; print warnings/errors, and exit on error. */
static void run_local_packet_event(struct state *state, struct event *event,
				   struct packet *packet)
{
	char *error = NULL;
	int result = STATUS_OK;

	result = run_packet_event(state, event, packet, &error);
	if (result == STATUS_WARN) {
		fprintf(stderr, "%s", error);
		free(error);
	} else if (result == STATUS_ERR) {
		state_free(state);
		die("%s\n", error);
	}
}