]> git.proxmox.com Git - mirror_ovs.git/blame - utilities/ovs-tcpundump.in
ofctl: break the loop if ovs_pcap_read returns error
[mirror_ovs.git] / utilities / ovs-tcpundump.in
CommitLineData
b49a959b 1#! @PYTHON@
7aa697dd 2#
e0edde6f 3# Copyright (c) 2010 Nicira, Inc.
7aa697dd
BP
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at:
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17import getopt
18import re
19import sys
20
21argv0 = sys.argv[0]
22
227abb77 23
7aa697dd 24def usage():
227abb77 25 print("""\
7aa697dd
BP
26%(argv0)s: print "tcpdump -xx" output as hex
27usage: %(argv0)s < FILE
28where FILE is output from "tcpdump -xx".
29
30The following options are also available:
31 -h, --help display this help message
32 -V, --version display version information\
227abb77 33""" % {'argv0': argv0})
7aa697dd
BP
34 sys.exit(0)
35
227abb77 36
7aa697dd
BP
37if __name__ == "__main__":
38 try:
39 options, args = getopt.gnu_getopt(sys.argv[1:], 'hV',
40 ['help', 'version'])
227abb77 41 except getopt.GetoptError as geo:
7aa697dd
BP
42 sys.stderr.write("%s: %s\n" % (argv0, geo.msg))
43 sys.exit(1)
44
45 for key, value in options:
46 if key in ['-h', '--help']:
47 usage()
48 elif key in ['-V', '--version']:
227abb77 49 print("ovs-tcpundump (Open vSwitch) @VERSION@")
7aa697dd
BP
50 else:
51 sys.exit(0)
52
53 if len(args) != 0:
54 sys.stderr.write("%s: non-option argument not supported "
55 "(use --help for help)\n" % argv0)
56 sys.exit(1)
57
58 packet = ''
59 regex = re.compile(r'^\s+0x([0-9a-fA-F]+): ((?: [0-9a-fA-F]{4})+)')
60 while True:
61 line = sys.stdin.readline()
62 if line == "":
63 break
64
65 m = regex.match(line)
cb12f42d 66 if m is None or int(m.group(1), 16) == 0:
7aa697dd 67 if packet != '':
227abb77 68 print(packet)
7aa697dd
BP
69 packet = ''
70 if m:
71 packet += re.sub(r'\s', '', m.group(2), 0)
72 if packet != '':
227abb77 73 print(packet)
7aa697dd
BP
74
75# Local variables:
76# mode: python
77# End: