PERFORCE change 143300 for review
Rui Paulo
rpaulo at FreeBSD.org
Wed Jun 11 20:36:49 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=143300
Change 143300 by rpaulo at rpaulo_epsilon on 2008/06/11 20:35:55
Add missing dumper_* calls and make pktshead a pointer to the only list
of packets in memory.
Affected files ...
.. //depot/projects/soc2008/rpaulo-tcpad/handler.c#6 edit
.. //depot/projects/soc2008/rpaulo-tcpad/tcpad.h#6 edit
Differences ...
==== //depot/projects/soc2008/rpaulo-tcpad/handler.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/handler.c#5 $
+ * $P4: //depot/projects/soc2008/rpaulo-tcpad/handler.c#6 $
*/
#include <stdio.h>
@@ -91,8 +91,13 @@
DPRINTF("%s\n",inet_ntoa(cp->dv4addr));
LIST_INSERT_HEAD(&chead, cp, entries);
print_packet(bytes, linkhlen);
- TAILQ_INIT(&cp->pktshead);
- dumper_addpkt(&cp->pktshead, ph, bytes);
+
+ /*
+ * Packet list. Only one per connection.
+ */
+ cp->pktshead = malloc(sizeof(*cp->pktshead));
+ TAILQ_INIT(cp->pktshead);
+ dumper_addpkt(cp->pktshead, ph, bytes);
} else if ((tcp->th_flags & TH_FLAGS) == (TH_SYN|TH_ACK)) {
if (cp) {
DPRINTF("connection already being tracked!\n");
@@ -112,12 +117,15 @@
DPRINTF("%s\n",inet_ntoa(cp->dv4addr));
LIST_INSERT_HEAD(&chead, cp, entries);
print_packet(bytes, linkhlen);
- TAILQ_INIT(&cp->pktshead);
- dumper_addpkt(&cp->pktshead, ph, bytes);
+
+ /* rcp->pktshead should have been already malloc'ed and
+ initted */
+ cp->pktshead = rcp->pktshead;
+ dumper_addpkt(cp->pktshead, ph, bytes);
} else if ((tcp->th_flags & TH_FLAGS) == TH_ACK) {
if (cp) {
- dumper_addpkt(&cp->pktshead, ph, bytes);
+ dumper_addpkt(cp->pktshead, ph, bytes);
if (cp->tcpstate == TCPS_SYN_SENT ||
cp->tcpstate == TCPS_SYN_RECEIVED) {
cp->tcpstate = TCPS_ESTABLISHED;
@@ -133,13 +141,13 @@
}
} else if ((tcp->th_flags & TH_FLAGS) == (TH_FIN|TH_ACK)) {
if (cp) {
- dumper_addpkt(&cp->pktshead, ph, bytes);
+ dumper_addpkt(cp->pktshead, ph, bytes);
if (cp->tcpstate == TCPS_ESTABLISHED) {
cp->tcpstate = TCPS_FIN_WAIT_1;
rcp->tcpstate = TCPS_CLOSE_WAIT;
DPRINTF("fin_wait_1\n");
print_packet(bytes, linkhlen);
- dumper_error(p, "test.cap", &cp->pktshead);
+ dumper_error(p, "test.cap", cp->pktshead);
}
}
} else if ((tcp->th_flags & TH_FLAGS) == (TH_RST|TH_ACK)) {
@@ -175,6 +183,8 @@
{
const struct ip *ip;
const struct tcphdr *tcp;
+
+ return;
ip = (const struct ip *)linkhdr_remove(bytes, linkhlen);
tcp = (const struct tcphdr *)linkhdr_remove(bytes,
==== //depot/projects/soc2008/rpaulo-tcpad/tcpad.h#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/tcpad.h#5 $
+ * $P4: //depot/projects/soc2008/rpaulo-tcpad/tcpad.h#6 $
*/
#ifndef _TCPAD_H_
@@ -41,7 +41,7 @@
unsigned short sport;
int tcpstate; /* TCP FSM state */
int isv6;
- struct dumppkth pktshead;
+ struct dumppkth *pktshead;
} conn_t;
LIST_HEAD(chead, _conn_t) chead;
More information about the p4-projects
mailing list