forked from openvswitch/ovs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathofp-tcpdump.patch
115 lines (105 loc) · 3.74 KB
/
ofp-tcpdump.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
--- tcpdump/interface.h 2007-06-13 18:03:20.000000000 -0700
+++ tcpdump/interface.h 2008-04-15 18:28:55.000000000 -0700
@@ -148,7 +148,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)));
@@ -176,6 +177,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 ether_encap_print(u_short, const u_char *, u_int, u_int, u_short *);
extern int llc_print(const u_char *, u_int, u_int, const u_char *,
const u_char *, u_short *);
--- tcpdump/Makefile.in 2007-09-25 18:59:52.000000000 -0700
+++ tcpdump/Makefile.in 2009-05-11 15:59:28.000000000 -0700
@@ -49,10 +49,10 @@
CFLAGS = $(CCOPT) $(DEFS) $(INCLS)
# Standard LDFLAGS
-LDFLAGS = @LDFLAGS@
+LDFLAGS = @LDFLAGS@ -L../../lib
# Standard LIBS
-LIBS = @LIBS@
+LIBS = @LIBS@ -lopenvswitch
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -87,7 +87,8 @@
print-slow.c print-snmp.c print-stp.c print-sunatm.c print-sunrpc.c \
print-symantec.c print-syslog.c print-tcp.c print-telnet.c print-tftp.c \
print-timed.c print-token.c print-udp.c print-vjc.c print-vrrp.c \
- print-wb.c print-zephyr.c setsignal.c tcpdump.c util.c
+ print-wb.c print-zephyr.c setsignal.c tcpdump.c util.c \
+ print-openflow.c
LOCALSRC = @LOCALSRC@
GENSRC = version.c
--- 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,46 @@
+/* Copyright (C) 2007, 2008, 2009 Nicira Networks.
+
+ 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 <stdlib.h>
+
+#include "interface.h"
+#include "../../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
@@ -52,6 +52,8 @@
#include "nameser.h"
+#include "../../include/openflow/openflow.h"
+
#ifdef HAVE_LIBCRYPTO
#include <openssl/md5.h>
@@ -680,7 +682,8 @@
}
else if (length > 0 && (sport == LDP_PORT || dport == LDP_PORT)) {
ldp_print(bp, length);
- }
+ } else if (sport == OFP_TCP_PORT || dport == OFP_TCP_PORT)
+ openflow_print(bp, length);
}
return;
bad: