PERFORCE change 146108 for review

Rui Paulo rpaulo at FreeBSD.org
Mon Jul 28 12:29:40 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=146108

Change 146108 by rpaulo at rpaulo_epsilon on 2008/07/28 12:29:27

	Remove includes from tcpad.h
	Implement timer_stop() and call it from main().
	Small style changes, including "look more like tcpdump".

Affected files ...

.. //depot/projects/soc2008/rpaulo-tcpad/main.c#9 edit
.. //depot/projects/soc2008/rpaulo-tcpad/tcpad.h#13 edit
.. //depot/projects/soc2008/rpaulo-tcpad/timer.c#6 edit
.. //depot/projects/soc2008/rpaulo-tcpad/timer.h#2 edit

Differences ...

==== //depot/projects/soc2008/rpaulo-tcpad/main.c#9 (text+ko) ====

@@ -23,7 +23,7 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $P4: //depot/projects/soc2008/rpaulo-tcpad/main.c#8 $
+ * $P4: //depot/projects/soc2008/rpaulo-tcpad/main.c#9 $
  */
 
 #include <err.h>
@@ -32,6 +32,10 @@
 #include <unistd.h>
 #include <pcap.h>
 #include <sys/queue.h>
+#include <sys/socketvar.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <netinet/tcp_var.h>
 
 #include "tcpad.h"
 #include "dumper.h"
@@ -44,9 +48,10 @@
 static void
 usage(void)
 {
+	fprintf(stderr, "tcpad version " TCPAD_VERSION "\n");
 	fprintf(stderr, "%s\n", pcap_lib_version());
-	fprintf(stderr, "%s: [-r file] [-p] [-i interface] [-s snaplen]\n",
-	    getprogname());
+	fprintf(stderr, "Usage: %s [-r file] [-p] [-i interface] "
+	    "[-s snaplen]\n", getprogname());
 	exit(1);
 }
 
@@ -54,7 +59,6 @@
 main(int argc, char *argv[])
 {
 	int promisc;
-	int snaplen;
 	int ch;
 	char *interface;
 	char *readfile;
@@ -111,7 +115,8 @@
 		if (interface == NULL)
 			errx(1, "interface not specified");
 		else
-			p = pcap_open_live(interface, snaplen, promisc, 100, errbuf);
+			p = pcap_open_live(interface, snaplen, promisc, 100,
+			    errbuf);
 	}
 	if (p == NULL)
 		err(1, "pcap_open_live");
@@ -134,5 +139,7 @@
 	pcap_freecode(&fp);
 	pcap_close(p);
 
+	timer_stop();
+
 	return (0);
 }

==== //depot/projects/soc2008/rpaulo-tcpad/tcpad.h#13 (text+ko) ====

@@ -23,20 +23,20 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $P4: //depot/projects/soc2008/rpaulo-tcpad/tcpad.h#12 $
+ * $P4: //depot/projects/soc2008/rpaulo-tcpad/tcpad.h#13 $
  */
 
 #ifndef _TCPAD_H_
 #define _TCPAD_H_
 
-#include <sys/socketvar.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <netinet/tcp_seq.h>
-#include <netinet/tcp_var.h>
+#define TCPAD_VERSION	"0.1"
+#define	TCPAD_MSL	60	/* sec. */
 
+/* Globals */
 pcap_t *p;
+int snaplen;
 
+/* Connection structure */
 struct tcpc {
 	LIST_ENTRY(tcpc) entries;
 	struct in_addr sv4addr;
@@ -51,6 +51,4 @@
 
 LIST_HEAD(tcpchead, tcpc) tcpchead;
 
-
-#define		TCPAD_MSL	60	/* sec. */
 #endif /* _TCPAD_H_ */

==== //depot/projects/soc2008/rpaulo-tcpad/timer.c#6 (text+ko) ====

@@ -23,7 +23,7 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $P4: //depot/projects/soc2008/rpaulo-tcpad/timer.c#5 $
+ * $P4: //depot/projects/soc2008/rpaulo-tcpad/timer.c#6 $
  */
 
 #include <assert.h>
@@ -33,8 +33,12 @@
 #include <pcap.h>
 #include <sys/queue.h>
 #include <sys/time.h>
+#include <sys/types.h>
+#include <sys/socketvar.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+#include <netinet/tcp_var.h>
 #include <netinet/tcp_fsm.h>
-#include <netinet/tcp.h>
 
 #include "debug.h"
 #include "tcpad.h"
@@ -44,6 +48,8 @@
 
 static void	timer_sigalrm(int sig);
 
+struct itimerval itp;
+
 /**
  * @brief
  * Timer setup.
@@ -52,7 +58,6 @@
 timer_setup(void)
 {
 	static int firstime = 1;
-	struct itimerval itp;
 
 	if (firstime) {
 		DPRINTF(DEBUG_TIMER, "setting up signal function\n");
@@ -100,3 +105,22 @@
 		DPRINTF(DEBUG_TIMER, "connections being tracked: %d\n", nc/2);
 	prevnc = nc;
 }
+
+void
+timer_stop(void)
+{
+	struct tcpc *cp, *cp_t;
+
+	/* Disable the timer. */
+	itp.it_value.tv_sec = 0;
+	setitimer(ITIMER_REAL, &itp, NULL);
+
+	LIST_FOREACH_SAFE(cp, &tcpchead, entries, cp_t) {
+		if (cp->pktshead)
+			dumper_free(cp);
+		if (cp->rcp && cp->rcp->pktshead)
+			cp->rcp->pktshead = NULL;
+		LIST_REMOVE(cp, entries);
+		free(cp);
+	}
+}

==== //depot/projects/soc2008/rpaulo-tcpad/timer.h#2 (text+ko) ====

@@ -23,12 +23,13 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $P4: //depot/projects/soc2008/rpaulo-tcpad/timer.h#1 $
+ * $P4: //depot/projects/soc2008/rpaulo-tcpad/timer.h#2 $
  */
 
 #ifndef _TIMER_H_
 #define _TIMER_H_
 
 int	timer_setup(void);
+void	timer_stop(void);
 
 #endif /* _TIMER_H_ */


More information about the p4-projects mailing list