]> sjero.net Git - ltp2tcp/commitdiff
Updated commandline args: Added -V for version, -h for help, changed -d to -v for...
authorSamuel Jero <sj323707@ohio.edu>
Fri, 28 Jun 2013 18:13:16 +0000 (14:13 -0400)
committerSamuel Jero <sj323707@ohio.edu>
Fri, 28 Jun 2013 18:13:16 +0000 (14:13 -0400)
Updated program name to ltp2tcp

.project
LICENSE
Makefile
README
ltp2tcp.c

index 3572e091c5568808024c66f6e7e11d84a0f11e66..0c8d98e197fd8102b1d61725113ade6ca77c8714 100644 (file)
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-       <name>ltptrace</name>
+       <name>ltp2tcp</name>
        <comment></comment>
        <projects>
        </projects>
        <comment></comment>
        <projects>
        </projects>
diff --git a/LICENSE b/LICENSE
index 94a9ed024d3859793618152ea559a168bbcbb5e2..e587591e143165eb560c2385f0652ac369fc6595 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -618,57 +618,4 @@ an absolute waiver of all civil liability in connection with the
 Program, unless a warranty or assumption of liability accompanies a
 copy of the Program in return for a fee.
 
 Program, unless a warranty or assumption of liability accompanies a
 copy of the Program in return for a fee.
 
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+                     END OF TERMS AND CONDITIONS
\ No newline at end of file
index 60ca81bae7bfdba2a88188793d89cd5d7b8d24ce..4cb99c2281ceace362b5bd43497061718d93a1c9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,9 @@
 ###############################################################################
 #Author: Samuel Jero
 #
 ###############################################################################
 #Author: Samuel Jero
 #
-# Date: 12/2010
+# Date: 6/2013
 #
 #
-# Makefile for program ltptrace
+# Makefile for program ltp2tcp
 ###############################################################################
 
 CFLAGS= -O2 -Wall -Werror
 ###############################################################################
 
 CFLAGS= -O2 -Wall -Werror
@@ -20,10 +20,10 @@ BINDIR = /usr/local/bin
 MANDIR = /usr/local/man
 
 
 MANDIR = /usr/local/man
 
 
-all: ltptrace
+all: ltp2tcp
 
 
-ltptrace: main.o ltp.o encap.o udp.o dccp.o sll.o Makefile
-       gcc ${CFLAGS} ${LDLIBS} --std=gnu99 main.o ltp.o encap.o udp.o dccp.o sll.o -oltptrace
+ltp2tcp: main.o ltp.o encap.o udp.o dccp.o sll.o Makefile
+       gcc ${CFLAGS} ${LDLIBS} --std=gnu99 main.o ltp.o encap.o udp.o dccp.o sll.o -oltp2tcp
        
 main.o: ltp2tcp.c ltp2tcp.h
        gcc -c ${CFLAGS} ${LDLIBS} --std=gnu99 ltp2tcp.c -omain.o
        
 main.o: ltp2tcp.c ltp2tcp.h
        gcc -c ${CFLAGS} ${LDLIBS} --std=gnu99 ltp2tcp.c -omain.o
@@ -45,12 +45,12 @@ sll.o: sll_encap.c encap.h ltp2tcp.h
 
 
 install: ltptrace
 
 
 install: ltptrace
-       install -m 755 -o bin -g bin ltptrace ${BINDIR}/ltptrace
-#      install -m 444 -o bin -g bin ltptrace.1 ${MANDIR}/man1/ltptrace.1
+       install -m 755 -o bin -g bin ltptrace ${BINDIR}/ltp2tcp
+#      install -m 444 -o bin -g bin ltptrace.1 ${MANDIR}/man1/ltp2tcp.1
 
 uninstall:
 
 uninstall:
-       rm -f ${BINDIR}/ltptrace
-#      rm -f ${MANDIR}/man1/ltptrace.1
+       rm -f ${BINDIR}/ltp2tcp
+#      rm -f ${MANDIR}/man1/ltp2tcp.1
 
 clean:
 
 clean:
-       rm -f *~ ltptrace core *.o
+       rm -f *~ ltp2tcp core *.o
diff --git a/README b/README
index 32970daafe1cc8923bf2c294d4191be8e2416985..3b95989541b2d24778c9bde2d4874d8d7539d462 100644 (file)
--- a/README
+++ b/README
@@ -8,19 +8,21 @@ In order to build this program, please simply type make at the commandline. I ha
 included a ./configure script at this time. Contact me, if major problems arise.
 
 Usage is as follows:
 included a ./configure script at this time. Contact me, if major problems arise.
 
 Usage is as follows:
-ltptrace -t{encapsulation} ltp_file tcp_file [-d] [-b{block_size}] [-s{start session}-{end session}]
-       -d is debug (repeat for additional verbosity)
-       -t specifies what protocol LTP is encapsulated in.  Right now, only udp and dccp are supported.
-       -b specifies the LTP block size (NOT the bundle size) that is being used over this connection.
+ltp2tcp -t{encapsulation} [-v] [-V] [-h] [-b{block_size}] [-s{start session}-{end session}] ltp_file tcp_file
+       -v  verbose (repeat for additional verbosity)
+       -V      Version information
+       -h  Help
+    -t The protocol LTP is encapsulated in.  Right now, only udp, dccp, and sll are supported.
+    -b  The LTP block size (NOT the bundle size) that is being used over this connection.
                This information can't be determined from a packet capture, so if not specified
                it defaults to is 500,000. If you set this value larger than your actual block size, the graph
                This information can't be determined from a packet capture, so if not specified
                it defaults to is 500,000. If you set this value larger than your actual block size, the graph
-               will contain empty spaces between each session, which is handy to separate sessions. However, in that case, tcptrace will report 
-               inaccurate, lost data statistics.
-       -s requests a graph of only the specified range of sessions. Note that the session numbers are just the "session number"
+               will contain empty spaces between each session, which is handy to separate sessions. However, in
+               that case, tcptrace will report inaccurate, lost data statistics.
+       -s  Requests a graph of only the specified range of sessions. Note that the session numbers are just the "session number"
                from wireshark, not the whole session id.
 
 To generate the graphs run:
                from wireshark, not the whole session id.
 
 To generate the graphs run:
-       ltptrace -tudp ltp_file.dmp tcp_file.dmp
+       ltp2tcp -tudp ltp_file.dmp tcp_file.dmp
        tcptrace -lGt tcp_file.dmp
        xplot a2b_tsg.xpl
 
        tcptrace -lGt tcp_file.dmp
        xplot a2b_tsg.xpl
 
@@ -51,25 +53,25 @@ Limitations:
        1)Only handles one LTP "connection". There isn't a good way to separate
                different LTP "connections" from new sessions of the same "connection".
                Use Tcpdump filters to separate connections. Libpcap filtering could also
        1)Only handles one LTP "connection". There isn't a good way to separate
                different LTP "connections" from new sessions of the same "connection".
                Use Tcpdump filters to separate connections. Libpcap filtering could also
-               be added in ltptrace.
+               be added in ltp2tcp.
        2)Uses some special types from Linux (u_char, u_int32_t)
 
 
        2)Uses some special types from Linux (u_char, u_int32_t)
 
 
-ltptrace is free software: you can redistribute it and/or modify
+ltp2tcp is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 
-ltptrace is distributed in the hope that it will be useful,
+ltp2tcp is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with ltptrace.  If not, see <http://www.gnu.org/licenses/>.
+along with ltp2tcp.  If not, see <http://www.gnu.org/licenses/>.
 
 Samuel Jero
 Internetworking Research Group
 Ohio University
 sj323707@ohio.edu
 
 Samuel Jero
 Internetworking Research Group
 Ohio University
 sj323707@ohio.edu
-2/23/2011
+6/28/2013
index e0a63f08cb127259f8a96117b296fce5b2219443..db8e08866e89badc097cea5f0b3f3286db155c1c 100644 (file)
--- a/ltp2tcp.c
+++ b/ltp2tcp.c
@@ -28,7 +28,8 @@ Notes:
 ******************************************************************************/
 #include "ltp2tcp.h"
 
 ******************************************************************************/
 #include "ltp2tcp.h"
 
-
+#define LTPTRACE_VERSION 0.3
+#define COPYRIGHT_YEAR 2013
 
 int debug=0;
 int MAX_SESSION=500000;
 
 int debug=0;
 int MAX_SESSION=500000;
@@ -45,6 +46,8 @@ int handle_report(const u_char* odata, struct ltp_hdr_d* ltph, struct tcphdr *tc
 int claim2sack(const u_char* odata, int ses_id, struct ltp_hdr_d* ltph, struct tcphdr *tcph, u_char* tcpopt, int* dlen, int rbuf);
 int seq_from_session(struct ltp_hdr_d* ltph, struct tcphdr *tcph);
 int ack_from_session(struct ltp_hdr_d* ltph, struct tcphdr *tcph);
 int claim2sack(const u_char* odata, int ses_id, struct ltp_hdr_d* ltph, struct tcphdr *tcph, u_char* tcpopt, int* dlen, int rbuf);
 int seq_from_session(struct ltp_hdr_d* ltph, struct tcphdr *tcph);
 int ack_from_session(struct ltp_hdr_d* ltph, struct tcphdr *tcph);
+void version();
+void usage();
 
 
 /*Parse commandline options and open files*/
 
 
 /*Parse commandline options and open files*/
@@ -59,28 +62,33 @@ int main(int argc, char *argv[])
        int  tmp;
 
        /*parse commandline options*/
        int  tmp;
 
        /*parse commandline options*/
-       if(argc<4 || argc > 8){
-               printf("Usage: ltp2tcp -t{encapsulation} ltp_file tcp_file [-d] [-b{block_size}]\n");
-               exit(1);
+       if(argc < 2){
+               usage();
        }
 
        /*loop through commandline options*/
        for(int i=1; i < argc; i++){
        }
 
        /*loop through commandline options*/
        for(int i=1; i < argc; i++){
-               if(argv[i][0]!='-'){
-                       if(lfile==NULL){ /*assign first non-dash argument to the ltp file*/
+               if(argv[i][0]!='-' || (argv[i][0]=='-' && strlen(argv[i])==1)){
+                       if(lfile==NULL  || argv[i][0]=='-'){
+                               /*assign first non-dash (or only dash) argument to the dccp file*/
                                lfile=argv[i];
                        }else{
                                if(tfile==NULL){
                                        tfile=argv[i]; /*assign second non-dash argument to the dccp file*/
                                }else{
                                lfile=argv[i];
                        }else{
                                if(tfile==NULL){
                                        tfile=argv[i]; /*assign second non-dash argument to the dccp file*/
                                }else{
-                                       printf("Usage: ltp2tcp -t{encapsulation} ltp_file tcp_file [-d] [-b{block_size}]\n");
-                                       exit(1);
+                                       usage();
                                }
                        }
                }else{
                                }
                        }
                }else{
-                       if(argv[i][1]=='d' && strlen(argv[i])==2){ /*debug option*/
+                       if(argv[i][1]=='v' && strlen(argv[i])==2){ /*debug option*/
                                debug++;
                        }
                                debug++;
                        }
+                       if(argv[i][1]=='V' && strlen(argv[i])==2){ /*Version option*/
+                               version();
+                       }
+                       if(argv[i][1]=='h'&& strlen(argv[i])==2){ /* help*/
+                               usage();
+                       }
                        if(argv[i][1]=='t'){ /*Encapsulation option*/
                                type=&argv[i][2];
                        }
                        if(argv[i][1]=='t'){ /*Encapsulation option*/
                                type=&argv[i][2];
                        }
@@ -89,8 +97,7 @@ int main(int argc, char *argv[])
                                if(tmp>0){
                                        MAX_SESSION=tmp;
                                }else{
                                if(tmp>0){
                                        MAX_SESSION=tmp;
                                }else{
-                                       printf("Usage: ltp2tcp -t{encapsulation} ltp_file tcp_file [-d] [-b{block_size}]\n");
-                                       exit(1);
+                                       usage();
                                }
                        }
                        if(argv[i][1]=='s'){ /*Session range option*/
                                }
                        }
                        if(argv[i][1]=='s'){ /*Session range option*/
@@ -102,8 +109,7 @@ int main(int argc, char *argv[])
        }
        
        if(lfile==NULL || tfile==NULL || type==NULL){
        }
        
        if(lfile==NULL || tfile==NULL || type==NULL){
-               printf("Usage: ltp2tcp -t{encapsulation} ltp_file tcp_file [-d] [-b{block_size}]\n");
-               exit(1);
+               usage();
        }
 
        if(state.ses_min<=0 || state.ses_max<=0){
        }
 
        if(state.ses_min<=0 || state.ses_max<=0){
@@ -114,7 +120,6 @@ int main(int argc, char *argv[])
        /*all options validated*/
 
        if(debug){
        /*all options validated*/
 
        if(debug){
-               dbgprintf(1,"Debug On\n");
                dbgprintf(1,"Input file: %s\n", lfile);
                dbgprintf(1,"Output file: %s\n", tfile);
                dbgprintf(1,"Encapsulation: %s\n", type);
                dbgprintf(1,"Input file: %s\n", lfile);
                dbgprintf(1,"Output file: %s\n", tfile);
                dbgprintf(1,"Encapsulation: %s\n", type);
@@ -895,6 +900,29 @@ int ack_from_session(struct ltp_hdr_d* ltph, struct tcphdr *tcph)
 return 0;
 }
 
 return 0;
 }
 
+void version()
+{
+       dbgprintf(0, "ltp2tcp version %.1f\n",LTPTRACE_VERSION);
+       dbgprintf(0, "Copyright (C) %i Samuel Jero <sj323707@ohio.edu>\n",COPYRIGHT_YEAR);
+       dbgprintf(0, "This program comes with ABSOLUTELY NO WARRANTY.\n");
+       dbgprintf(0, "This is free software, and you are welcome to\n");
+       dbgprintf(0, "redistribute it under certain conditions.\n");
+       exit(0);
+}
+
+/*Usage information for program*/
+void usage()
+{
+       dbgprintf(0,"Usage: ltp2tcp -t{encapsulation} [-v] [-V] [-h] [-b{block_size}] [-s{start session}-{end session}] ltp_file tcp_file\n");
+       dbgprintf(0, "          -v   verbose. May be repeated for additional verbosity.\n");
+       dbgprintf(0, "          -V   Version information\n");
+       dbgprintf(0, "          -h   Help\n");
+       dbgprintf(0, "          -t   type of encapsulation (udp,dccp,sll)\n");
+       dbgprintf(0, "          -b   LTP block size (NOT the bundle size) that is being used over this connection\n");
+       dbgprintf(0, "          -s   Requests a graph of only the specified range of sessions\n");
+       exit(0);
+}
+
 /*Debug Printf*/
 void dbgprintf(int level, const char *fmt, ...)
 {
 /*Debug Printf*/
 void dbgprintf(int level, const char *fmt, ...)
 {