--- tcpdump/interface.h 2007-06-13 18:03:20.000000000 -0700 +++ tcpdump/interface.h 2008-04-15 18:28:55.000000000 -0700 @@ -130,7 +130,8 @@ extern const char *dnaddr_string(u_short); -extern void error(const char *, ...) +#define error(fmt, args...) tcpdump_error(fmt, ## args) +extern void tcpdump_error(const char *, ...) __attribute__((noreturn, format (printf, 1, 2))); extern void warning(const char *, ...) __attribute__ ((format (printf, 1, 2))); @@ -163,6 +164,7 @@ extern void hex_print_with_offset(const char *, const u_char *, u_int, u_int); extern void hex_print(const char *, const u_char *, u_int); extern void telnet_print(const u_char *, u_int); +extern void openflow_print(const u_char *, u_int); extern int llc_print(const u_char *, u_int, u_int, const u_char *, const u_char *, u_short *); extern int snap_print(const u_char *, u_int, u_int, u_int); --- tcpdump/Makefile.in 2012-06-13 04:56:20.000000000 +1200 +++ tcpdump/Makefile.in 2012-08-29 21:36:37.000000000 +1200 @@ -43,7 +43,7 @@ CC = @CC@ PROG = tcpdump CCOPT = @V_CCOPT@ -INCLS = -I. @V_INCLS@ +INCLS = -I. @V_INCLS@ -I../../include DEFS = @DEFS@ @CPPFLAGS@ @V_DEFS@ # Standard CFLAGS @@ -51,10 +51,10 @@ FULL_CFLAGS = $(CCOPT) $(DEFS) $(INCLS) $(CFLAGS) # Standard LDFLAGS -LDFLAGS = @LDFLAGS@ +LDFLAGS = @LDFLAGS@ -L../../lib # Standard LIBS -LIBS = @LIBS@ +LIBS = @LIBS@ -lopenvswitch -lssl -lrt -lm INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -93,7 +93,8 @@ print-symantec.c print-syslog.c print-tcp.c print-telnet.c print-tftp.c \ print-timed.c print-tipc.c print-token.c print-udld.c print-udp.c \ print-usb.c print-vjc.c print-vqp.c print-vrrp.c print-vtp.c \ - print-wb.c print-zephyr.c signature.c setsignal.c tcpdump.c util.c + print-wb.c print-zephyr.c signature.c setsignal.c tcpdump.c util.c \ + print-openflow.c LIBNETDISSECT_SRC=print-isakmp.c LIBNETDISSECT_OBJ=$(LIBNETDISSECT_SRC:.c=.o) @@ -363,7 +364,7 @@ all: $(PROG) $(PROG): $(OBJ) @rm -f $@ - $(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) + libtool --mode=link $(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(LIBNETDISSECT): $(LIBNETDISSECT_OBJ) @rm -f $@ --- tcpdump/print-openflow.c 1969-12-31 16:00:00.000000000 -0800 +++ tcpdump/print-openflow.c 2009-05-11 15:38:41.000000000 -0700 @@ -0,0 +1,45 @@ +/* Copyright (C) 2007, 2008, 2009 Nicira, Inc. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. The names of the authors may not be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "interface.h" +#include "openflow/openflow.h" +#include "../../lib/ofp-print.h" + +void +openflow_print(const u_char *sp, u_int length) +{ + const struct ofp_header *ofp = (struct ofp_header *)sp; + + if (!TTEST2(*sp, ntohs(ofp->length))) + goto trunc; + + ofp_print(stdout, sp, length, vflag); + return; + +trunc: + printf("[|openflow]"); +} --- tcpdump/print-tcp.c 2006-09-19 12:07:57.000000000 -0700 +++ tcpdump/print-tcp.c 2009-05-11 15:38:25.000000000 -0700 @@ -56,6 +56,8 @@ #include "nameser.h" +#include "openflow/openflow.h" + #ifdef HAVE_LIBCRYPTO #include #include @@ -669,7 +672,9 @@ } else if (length > 0 && (sport == LDP_PORT || dport == LDP_PORT)) { ldp_print(bp, length); - } + } else if (sport == OFP_PORT || dport == OFP_PORT) { + openflow_print(bp, length); + } return; bad: