"Bodireddy, Bhanuprakash" <bhanuprakash.bodire...@intel.com> writes:
>>Aaron Conole <acon...@redhat.com> writes: >> >>> Hi Bhanu, >>> >>> "Bodireddy, Bhanuprakash" <bhanuprakash.bodire...@intel.com> writes: >>> >>>> Hi, >>>> >>>> >>>> >>>> ovs-tcpdump throws the below error when trying to capture packets on >>>> one of the vhostuserports. >>>> >>>> >>>> >>>> $ ovs-tcpdump -i dpdkvhostuser0 >>>> >>>> ERROR: Please create an interface called `midpdkvhostuser0` >>>> >>>> See your OS guide for how to do this. >>>> >>>> Ex: ip link add midpdkvhostuser0 type veth peer name >>>> midpdkvhostuser02 >>>> >>>> >>>> >>>> $ ip link add midpdkvhostuser0 type veth peer name midpdkvhostuser02 >>>> >>>> Error: argument "midpdkvhostuser0" is wrong: "name" too long >>>> >>>> >>>> >>>> To get around this issue, I have to pass ‘—mirror-to’ option as below. >>>> >>>> >>>> >>>> $ ovs-tcpdump -i dpdkvhostuser0 -XX --mirror-to vh0 >>>> >>>> >>>> >>>> Is this due to the length of the port name? Would be nice to fix this >>>> issue. >>> >>> Thanks for the detailed write up. >>> >>> It is related to the mirror port name length. The mirror port is >>> bound by IFNAMSIZ restriction, so it must be 15 characters + nul, and >>> midpdkvhostuser0 would be 16 + nul. This is a linux specific >>> restriction, and it won't be changed because it is very much a well >>> established UAPI (and changing it will have implications on code not >>> able to deal with larger sized name buffers). >>> >>> I'm not sure how best to fix it. My concession was the mirror-to >>> option. Perhaps there's a better way? >> >>Hi Bhanu, I've been thinking about this a bit more. How about something like >>the following patch? >> >>If you think it's acceptable, I'll submit it formally. > > Hi Aaron, > > I am on fedora and applied the patch but couldn't verify the fix as I get the > below error. > > Traceback (most recent call last): > File "./utilities/ovs-tcpdump", line 21, in <module> > import random.randint > ImportError: No module named randint > > When I slightly change the code to > > -import random.randint > + from random import randint > ... > -return "ovsmi%06d" % random.randint(1, 999999) > +return "ovsmi%06d" % randint(1, 999999) > > I get below error > Traceback (most recent call last): > File "./utilities/ovs-tcpdump", line 478, in <module> > main() > File "./utilities/ovs-tcpdump", line 419, in main > mirror_interface = mirror_interface or _make_mirror_name(interface) > TypeError: 'dict' object is not callable > > Why is this so? > > - Bhanuprakash. > Ugh. Last time I try to be a hero and write python code without at least a single try. I'll just submit it formally after quick testing. Standby. >>--- >> >>diff --git a/utilities/ovs-tcpdump.in b/utilities/ovs-tcpdump.in index >>6718c77..76e8a7b 100755 >>--- a/utilities/ovs-tcpdump.in >>+++ b/utilities/ovs-tcpdump.in >>@@ -18,6 +18,7 @@ import fcntl >> >> import os >> import pwd >>+import random.randint >> import struct >> import subprocess >> import sys >>@@ -39,6 +40,7 @@ except Exception: >> >> tapdev_fd = None >> _make_taps = {} >>+_make_mirror_name = {} >> >> >> def _doexec(*args, **kwargs): >>@@ -76,8 +78,16 @@ def _install_tap_linux(tap_name, mtu_value=None): >> pipe.wait() >> >> >>+def _make_linux_mirror_name(interface_name): >>+ if interface_name.length() > 13: >>+ return "ovsmi%06d" % random.randint(1, 999999) >>+ return "mi%s" % interface_name >>+ >>+ >> _make_taps['linux'] = _install_tap_linux _make_taps['linux2'] = >>_install_tap_linux >>+_make_mirror_name['linux'] = _make_linux_mirror_name >>+_make_mirror_name['linux2'] = _make_linux_mirror_name >> >> >> def username(): >>@@ -406,7 +416,7 @@ def main(): >> print("TCPDUMP Args: %s" % ' '.join(tcpdargs)) >> >> ovsdb = OVSDB(db_sock) >>- mirror_interface = mirror_interface or "mi%s" % interface >>+ mirror_interface = mirror_interface or _make_mirror_name(interface) >> >> if sys.platform in _make_taps and \ >> mirror_interface not in netifaces.interfaces(): >>--- _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev