summaryrefslogtreecommitdiff
path: root/rdns_scan/zmap4rdns/src/state.h
diff options
context:
space:
mode:
authorOldDrake <[email protected]>2022-04-21 21:54:15 +0800
committerOldDrake <[email protected]>2022-04-21 21:54:15 +0800
commit3d48a466862e9441c7e95c2f300e0cc0f7cb0155 (patch)
tree8e790376f87692af6cca46676ae7e2e12c5ab0e6 /rdns_scan/zmap4rdns/src/state.h
parentd8d5960d5aabe3deed2b3e1a1658755727676fb0 (diff)
code and result submitted.rdns_scan
Diffstat (limited to 'rdns_scan/zmap4rdns/src/state.h')
-rw-r--r--rdns_scan/zmap4rdns/src/state.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/rdns_scan/zmap4rdns/src/state.h b/rdns_scan/zmap4rdns/src/state.h
new file mode 100644
index 0000000..68e4c33
--- /dev/null
+++ b/rdns_scan/zmap4rdns/src/state.h
@@ -0,0 +1,202 @@
+/*
+ * ZMap Copyright 2013 Regents of the University of Michigan
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+#ifndef STATE_H
+#define STATE_H
+
+#include <stdio.h>
+#include <stdint.h>
+
+#include "../lib/includes.h"
+
+#ifdef PFRING
+#include <pfring_zc.h>
+#endif
+
+#include "aesrand.h"
+#include "fieldset.h"
+#include "filter.h"
+#include "types.h"
+
+#define MAX_PACKET_SIZE 4096
+#define MAC_ADDR_LEN_BYTES 6
+
+struct probe_module;
+struct output_module;
+
+struct fieldset_conf {
+ fielddefset_t defs;
+ fielddefset_t outdefs;
+ translation_t translation;
+ int success_index;
+ int app_success_index;
+ int classification_index;
+};
+
+// global configuration
+struct state_conf {
+ int log_level;
+ port_h_t target_port;
+ port_h_t source_port_first;
+ port_h_t source_port_last;
+ // maximum number of packets that the scanner will send before
+ // terminating
+ uint32_t max_targets;
+ // maximum number of seconds that scanner will run before terminating
+ uint32_t max_runtime;
+ // maximum number of results before terminating
+ uint32_t max_results;
+ // name of network interface that
+ // will be utilized for sending/receiving
+ char *iface;
+ // rate in packets per second
+ // that the sender will maintain
+ int rate;
+ // rate in bits per second
+ uint64_t bandwidth;
+ // how many seconds after the termination of the sender will the
+ // receiver continue to process responses
+ int cooldown_secs;
+ // number of sending threads
+ uint8_t senders;
+ uint8_t batch;
+ uint32_t pin_cores_len;
+ uint32_t *pin_cores;
+ // should use CLI provided randomization seed instead of generating
+ // a random seed.
+ int seed_provided;
+ uint64_t seed;
+ aesrand_t *aes;
+ // generator of the cyclic multiplicative group that is utilized for
+ // address generation
+ uint32_t generator;
+ // sharding options
+ uint16_t shard_num;
+ uint16_t total_shards;
+ int packet_streams;
+ struct probe_module *probe_module;
+ char *output_module_name;
+ struct output_module *output_module;
+ char *probe_args;
+ uint8_t probe_ttl;
+ char *output_args;
+ macaddr_t gw_mac[MAC_ADDR_LEN_BYTES];
+ macaddr_t hw_mac[MAC_ADDR_LEN_BYTES];
+ uint32_t gw_ip;
+ int gw_mac_set;
+ int hw_mac_set;
+ in_addr_t source_ip_addresses[256];
+ uint32_t number_source_ips;
+ int send_ip_pkts;
+ char *output_filename;
+ char *blocklist_filename;
+ char *allowlist_filename;
+ char *list_of_ips_filename;
+ uint32_t list_of_ips_count;
+ char *metadata_filename;
+ FILE *metadata_file;
+ char *notes;
+ char *custom_metadata_str;
+ char **destination_cidrs;
+ int destination_cidrs_len;
+ const char *raw_output_fields;
+ const char **output_fields;
+ struct output_filter filter;
+ char *output_filter_str;
+ struct fieldset_conf fsconf;
+ int output_fields_len;
+ char *log_file;
+ char *log_directory;
+ char *status_updates_file;
+ int dryrun;
+ int quiet;
+ int ignore_invalid_hosts;
+ int syslog;
+ int recv_ready;
+ int num_retries;
+ uint64_t total_allowed;
+ uint64_t total_disallowed;
+ int max_sendto_failures;
+ float min_hitrate;
+ int data_link_size;
+ int default_mode;
+ int no_header_row;
+#ifdef PFRING
+ struct {
+ pfring_zc_cluster *cluster;
+ pfring_zc_queue *send;
+ pfring_zc_queue *recv;
+ pfring_zc_queue **queues;
+ pfring_zc_pkt_buff **buffers;
+ pfring_zc_buffer_pool *prefetches;
+ } pf;
+#endif
+};
+extern struct state_conf zconf;
+
+void init_empty_global_configuration(struct state_conf *c);
+
+// global sender stats
+struct state_send {
+ double start;
+ double finish;
+ uint64_t packets_sent;
+ uint64_t hosts_scanned;
+ uint64_t blocklisted;
+ uint64_t allowlisted;
+ int warmup;
+ int complete;
+ uint32_t first_scanned;
+ uint32_t max_targets;
+ uint32_t sendto_failures;
+ uint32_t max_index;
+ uint8_t **list_of_ips_pbm;
+};
+extern struct state_send zsend;
+
+// global receiver stats
+struct state_recv {
+ // valid responses classified as "success"
+ uint32_t success_total;
+ // unique IPs that sent valid responses classified as "success"
+ uint32_t success_unique;
+ // valid responses classified as "success"
+ uint32_t app_success_total;
+ // unique IPs that sent valid responses classified as "success"
+ uint32_t app_success_unique;
+ // valid responses classified as "success" received during cooldown
+ uint32_t cooldown_total;
+ // unique IPs that first sent valid "success"es during cooldown
+ uint32_t cooldown_unique;
+ // valid responses NOT classified as "success"
+ uint32_t failure_total;
+ // valid responses that passed the filter
+ uint64_t filter_success;
+ // how many packets did we receive that were marked as being the first
+ // fragment in a stream
+ uint32_t ip_fragments;
+ // metrics about _only_ validate_packet
+ uint32_t validation_passed;
+ uint32_t validation_failed;
+
+ int complete; // has the scanner finished sending?
+ double start; // timestamp of when recv started
+ double finish; // timestamp of when recv terminated
+
+ // number of packets captured by pcap filter
+ uint32_t pcap_recv;
+ // number of packets dropped because there was no room in
+ // the operating system's buffer when they arrived, because
+ // packets weren't being read fast enough
+ uint32_t pcap_drop;
+ // number of packets dropped by the network interface or its driver.
+ uint32_t pcap_ifdrop;
+};
+extern struct state_recv zrecv;
+
+#endif // _STATE_H