コード例 #1
0
int output_log_xml_init(struct output *o) {

    struct output_log_xml_priv *priv = log_xml_init();
    if (!priv)
        return POM_ERR;

    priv->p_source = ptype_alloc("string");
    if (!priv->p_source)
        goto err;

    output_set_priv(o, priv);

    struct registry_instance *inst = output_get_reg_instance(o);
    priv->perf_events = registry_instance_add_perf(inst, "events", registry_perf_type_counter, "Number of events process", "events");
    if (!priv->perf_events)
        goto err;

    struct registry_param *p = registry_new_param("filename", "log.xml", priv->p_filename, "XML log file", 0);
    if (output_add_param(o, p) != POM_OK)
        goto err;

    p = registry_new_param("source", "", priv->p_source, "Define the type of event being logged", 0);
    if (output_add_param(o, p) != POM_OK)
        goto err;

    return POM_OK;
err:
    output_log_xml_cleanup(priv);
    return POM_ERR;
}
コード例 #2
0
ファイル: output_file.c プロジェクト: gmsoft-tuxicoman/pom-ng
int output_file_init(struct output *o) {

	struct output_file_priv *priv = malloc(sizeof(struct output_file_priv));
	if (!priv) {
		pom_oom(sizeof(struct output_file_priv));
		return POM_ERR;
	}
	memset(priv, 0, sizeof(struct output_file_priv));

	output_set_priv(o, priv);

	priv->p_listen_pload_evt = ptype_alloc("bool");
	priv->p_path = ptype_alloc("string");
	priv->p_filter = ptype_alloc("string");

	if (!priv->p_path || !priv->p_listen_pload_evt || !priv->p_filter)
		goto err;

	struct registry_instance *inst = output_get_reg_instance(o);
	priv->perf_files_closed = registry_instance_add_perf(inst, "files_closed", registry_perf_type_counter, "Number of files fully written and closed", "files");
	priv->perf_files_open = registry_instance_add_perf(inst, "files_open", registry_perf_type_gauge, "Number of files currently open", "files");
	priv->perf_bytes_written = registry_instance_add_perf(inst, "bytes_written", registry_perf_type_counter, "Number of bytes written", "bytes");

	if (!priv->perf_files_closed || !priv->perf_files_open || !priv->perf_bytes_written)
		goto err;

	struct registry_param *p = registry_new_param("listen_pload_events", "no", priv->p_listen_pload_evt, "Listen to all events that generate payloads", 0);
	if (output_add_param(o, p) != POM_OK)
		goto err;

	p = registry_new_param("path", "/tmp/", priv->p_path, "Path where to store the files", 0);
	if (output_add_param(o, p) != POM_OK)
		goto err;

	p = registry_new_param("filter", "", priv->p_filter, "Payload filter", 0);
	if (output_add_param(o, p) != POM_OK)
		goto err;
	
	return POM_OK;
err:

	if (p)
		registry_cleanup_param(p);

	output_file_cleanup(priv);
	return POM_ERR;

}
コード例 #3
0
static int output_inject_init(struct output *o) {


	struct output_inject_priv *priv = malloc(sizeof(struct output_inject_priv));
	if (!priv) {
		pom_oom(sizeof(struct output_inject_priv));
		return POM_ERR;
	}
	memset(priv, 0, sizeof(struct output_inject_priv));
	output_set_priv(o, priv);

	priv->p_interface = ptype_alloc("string");
	priv->p_filter = ptype_alloc("string");

	if (!priv->p_interface || !priv->p_filter)
		goto err;

	struct registry_instance *inst = output_get_reg_instance(o);
	priv->perf_pkts_out = registry_instance_add_perf(inst, "pkts_out", registry_perf_type_counter, "Number of packets injected", "pkts");
	priv->perf_bytes_out = registry_instance_add_perf(inst, "bytes_out", registry_perf_type_counter, "Number of packet bytes injected", "bytes");

	char err[PCAP_ERRBUF_SIZE] = { 0 };
	char *dev = pcap_lookupdev(err);
	if (!dev) {
		pomlog(POMLOG_WARN,  "Warning, could not find a suitable interface to inject packets to : %s", err);
		dev = "none";
	}

	struct registry_param *p = registry_new_param("interface", dev, priv->p_interface, "Output interface", 0);
	if (output_add_param(o, p) != POM_OK)
		goto err;
	
	p = registry_new_param("filter", "", priv->p_filter, "Filter", REGISTRY_PARAM_FLAG_NOT_LOCKED_WHILE_RUNNING);
	if (output_add_param(o, p) != POM_OK)
		goto err;

	registry_param_set_callbacks(p, priv, output_inject_filter_parse, output_inject_filter_update);

	return POM_OK;

err:
	output_inject_cleanup(priv);
	return POM_ERR;

}
コード例 #4
0
ファイル: output_tap.c プロジェクト: elfixit/pom-ng
int output_tap_init(struct output *o) {

	struct output_tap_priv *priv = tap_init();

	if (!priv)
		return POM_ERR;

	output_set_priv(o, priv);

	struct registry_instance *inst = output_get_reg_instance(o);
	priv->perf_pkts_out = registry_instance_add_perf(inst, "pkts_out", registry_perf_type_counter, "Number of packets processed", "pkts");
	priv->perf_bytes_out = registry_instance_add_perf(inst, "bytes_out", registry_perf_type_counter, "Number of bytes processed", "bytes");

	if (!priv->perf_pkts_out || !priv->perf_bytes_out)
		goto err;

	struct registry_param *p = registry_new_param("ifname", "pom0", priv->p_ifname, "Name of the interface to create", 0);
	if (output_add_param(o, p) != POM_OK)
		goto err;

	p = registry_new_param("persistent", "no", priv->p_persistent, "Create a persistent interface", 0);
	if (output_add_param(o, p) != POM_OK)
		goto err;

	p = registry_new_param("filter", "", priv->p_filter, "Filter", REGISTRY_PARAM_FLAG_NOT_LOCKED_WHILE_RUNNING);
	if (output_add_param(o, p) != POM_OK)
		goto err;

	registry_param_set_callbacks(p, priv, output_tap_filter_parse, output_tap_filter_update);
	
	return POM_OK;
err:
	output_tap_cleanup(priv);
	return POM_ERR;

}