summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rwxr-xr-xclean.sh2
-rw-r--r--src/tcpreplay.c24
-rw-r--r--src/tcpreplay.h2
4 files changed, 27 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index 4dcd02b..e111edb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
tcpburst
.vscode
.DS_Store
+GPATH
+GRTAGS
+GTAGS
diff --git a/clean.sh b/clean.sh
index ab46084..010f722 100755
--- a/clean.sh
+++ b/clean.sh
@@ -1,3 +1,3 @@
make clean
make distclean
-rm tcpburst clean
+rm clean
diff --git a/src/tcpreplay.c b/src/tcpreplay.c
index d457cd1..000e631 100644
--- a/src/tcpreplay.c
+++ b/src/tcpreplay.c
@@ -1565,7 +1565,7 @@ static const u_char *find_iphdr(const u_char *pkt, size_t pktlen, const u_char *
return -1;
}
- if(pktlen > TCP_BURST_MTU){
+ if(pktlen > TCP_BURST_MTU || pktlen > options.max_burst_pkt_len || pktlen < options.min_burst_pkt_len){
//fprintf(stderr, "Tcpburst error! Packet too long:%d, current MTU is:%d\n", pktlen, TCP_BURST_MTU);
return -1;
}
@@ -1960,10 +1960,28 @@ init(void)
options.pkt_distance = 0;
options.driver_mode = "pcap"; /* default mode is pcap */
options.encap_cfg_file = NULL;
+ char *env_var = getenv("MAX_BURST_PKTLEN");
+ if(env_var != NULL)
+ {
+ options.max_burst_pkt_len = atoi(env_var);
+ }
+ else
+ {
+ options.max_burst_pkt_len = TCP_BURST_MTU;
+ }
+ env_var = getenv("MIN_BURST_PKTLEN");
+ if(env_var != NULL)
+ {
+ options.min_burst_pkt_len = atoi(env_var);
+ }
+ else
+ {
+ options.min_burst_pkt_len = 0;
+ }
#endif
- if (fcntl(STDERR_FILENO, F_SETFL, O_NONBLOCK) < 0)
- warnx("Unable to set STDERR to non-blocking: %s", strerror(errno));
+ if (fcntl(STDERR_FILENO, F_SETFL, O_NONBLOCK) < 0)
+ warnx("Unable to set STDERR to non-blocking: %s", strerror(errno));
}
/**
diff --git a/src/tcpreplay.h b/src/tcpreplay.h
index 86a5c53..a2e46d0 100644
--- a/src/tcpreplay.h
+++ b/src/tcpreplay.h
@@ -120,6 +120,8 @@ struct tcpreplay_opt_s {
long cpu_mask;
char *encap_cfg_file; /* �ײ��װģʽ */
+ int max_burst_pkt_len;
+ int min_burst_pkt_len;
#endif
};