int main(int argc, char *argv[]) { extern char *optarg; extern int optind; char *conf, *outfile; int c; conf = FRAGROUTE_CONF; outfile = NULL; while ((c = getopt(argc, argv, "f:h?w:")) != -1) { switch (c) { case 'f': conf = optarg; break; case 'w': outfile = optarg; break; default: usage(); } } argc -= optind; argv += optind; if (argc != 1) usage(); fragroute_init(argv[0], outfile); fragroute_config(conf); fragroute_dispatch(); exit(0); }
int main(int argc, char *argv[]) { int optct, rcode; pcap_t *dlt_pcap; #ifdef ENABLE_FRAGROUTE char ebuf[FRAGROUTE_ERRBUF_LEN]; #endif tcprewrite_init(); /* call autoopts to process arguments */ optct = optionProcess(&tcprewriteOptions, argc, argv); argc -= optct; argv += optct; /* parse the tcprewrite args */ post_args(argc, argv); /* init tcpedit context */ if (tcpedit_init(&tcpedit, pcap_datalink(options.pin)) < 0) { errx(-1, "Error initializing tcpedit: %s", tcpedit_geterr(tcpedit)); } /* parse the tcpedit args */ rcode = tcpedit_post_args(&tcpedit); if (rcode < 0) { errx(-1, "Unable to parse args: %s", tcpedit_geterr(tcpedit)); } else if (rcode == 1) { warnx("%s", tcpedit_geterr(tcpedit)); } if (tcpedit_validate(tcpedit) < 0) { errx(-1, "Unable to edit packets given options:\n%s", tcpedit_geterr(tcpedit)); } /* open up the output file */ options.outfile = safe_strdup(OPT_ARG(OUTFILE)); dbgx(1, "Rewriting DLT to %s", pcap_datalink_val_to_name(tcpedit_get_output_dlt(tcpedit))); if ((dlt_pcap = pcap_open_dead(tcpedit_get_output_dlt(tcpedit), 65535)) == NULL) err(-1, "Unable to open dead pcap handle."); dbgx(1, "DLT of dlt_pcap is %s", pcap_datalink_val_to_name(pcap_datalink(dlt_pcap))); #ifdef ENABLE_FRAGROUTE if (options.fragroute_args) { if ((options.frag_ctx = fragroute_init(65535, pcap_datalink(dlt_pcap), options.fragroute_args, ebuf)) == NULL) errx(-1, "%s", ebuf); } #endif #ifdef ENABLE_VERBOSE if (options.verbose) { tcpdump_open(&tcpdump, dlt_pcap); } #endif if ((options.pout = pcap_dump_open(dlt_pcap, options.outfile)) == NULL) errx(-1, "Unable to open output pcap file: %s", pcap_geterr(dlt_pcap)); pcap_close(dlt_pcap); /* rewrite packets */ if (rewrite_packets(tcpedit, options.pin, options.pout) != 0) errx(-1, "Error rewriting packets: %s", tcpedit_geterr(tcpedit)); /* clean up after ourselves */ pcap_dump_close(options.pout); pcap_close(options.pin); #ifdef ENABLE_VERBOSE tcpdump_close(&tcpdump); #endif #ifdef ENABLE_DMALLOC dmalloc_shutdown(); #endif return 0; }