tcprewrite.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /* $Id:$ */
  2. /*
  3. * Copyright (c) 2004-2005 Aaron Turner <aturner@pobox.com>.
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. *
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * 2. Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. * 3. Neither the names of the copyright owners nor the names of its
  16. * contributors may be used to endorse or promote products derived from
  17. * this software without specific prior written permission.
  18. *
  19. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
  20. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  21. * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  22. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  23. * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  24. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
  25. * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  26. * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
  27. * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  28. * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  29. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30. */
  31. #ifndef __TCPREWRITE_H__
  32. #define __TCPREWRITE_H__
  33. #include "config.h"
  34. #include "defines.h"
  35. #include "portmap.h"
  36. /* runtime options */
  37. struct tcprewrite_opt_s {
  38. /* input and output pcap filenames & handles */
  39. char *infile;
  40. char *outfile;
  41. pcap_t *pin;
  42. pcap_dumper_t *pout;
  43. libnet_t *l;
  44. /* tcpprep cache data */
  45. COUNTER cache_packets;
  46. char *cachedata;
  47. /* rewrite src/dst MAC addresses */
  48. macaddr_t intf1_dmac;
  49. macaddr_t intf1_smac;
  50. macaddr_t intf2_dmac;
  51. macaddr_t intf2_smac;
  52. int mac_mask;
  53. #define SMAC1 0x1
  54. #define SMAC2 0x2
  55. #define DMAC1 0x4
  56. #define DMAC2 0x8
  57. u_int16_t l2proto;
  58. u_int16_t l2_mem_align; /* keep things 4 byte aligned */
  59. /* rewriting L2 data */
  60. l2_t l2;
  61. /* 802.1q vlan stuff */
  62. #define VLAN_DEL 1 /* strip 802.1q and rewrite as standard 802.3 Ethernet */
  63. #define VLAN_ADD 2 /* add/replace 802.1q vlan tag */
  64. int vlan;
  65. /* rewrite ip? */
  66. int rewrite_ip; /* needs to be >= 1 */
  67. /* rewrite end-point IP addresses between cidrmap1 & cidrmap2 */
  68. cidrmap_t *cidrmap1; /* tcpprep cache data */
  69. cidrmap_t *cidrmap2;
  70. /* pseudo-randomize IP addresses using a seed */
  71. int seed;
  72. /* rewrite tcp/udp ports */
  73. portmap_t *portmap;
  74. /* pad or truncate packets */
  75. #define FIXLEN_PAD 1
  76. #define FIXLEN_TRUNC 2
  77. int fixlen;
  78. int mtu; /* Deal with different MTU's */
  79. int maxpacket; /* L2 header + MTU */
  80. /* fix IP/TCP/UDP checksums */
  81. int fixcsum;
  82. /* remove ethernet FCS */
  83. int efcs;
  84. /* tcpprep cache file comment */
  85. char *comment;
  86. /* tcpdump verbose printing */
  87. #ifdef HAVE_TCPDUMP
  88. /* tcpdump verbose printing */
  89. int verbose;
  90. char *tcpdump_args;
  91. #endif
  92. };
  93. typedef struct tcprewrite_opt_s tcprewrite_opt_t;
  94. #endif /* __TCPREWRITE_H__ */
  95. /*
  96. Local Variables:
  97. mode:c
  98. indent-tabs-mode:nil
  99. c-basic-offset:4
  100. End:
  101. */