Merge pull request #7201 from mjstapp/fix_topo_ubu20

tests: pim-basic mcast scripts fixes for python3
This commit is contained in:
Donald Sharp 2020-09-29 18:14:30 -04:00 committed by GitHub
commit b0b19fd0ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 9 deletions

View File

@ -35,7 +35,8 @@ import time
def ifname_to_ifindex(ifname):
output = subprocess.check_output("ip link show %s" % ifname, shell=True)
output = subprocess.check_output("ip link show %s" % ifname,
shell=True, universal_newlines=True)
first_line = output.split("\n")[0]
re_index = re.search("^(\d+):", first_line)
@ -65,7 +66,8 @@ logging.addLevelName(
)
log = logging.getLogger(__name__)
parser = argparse.ArgumentParser(description="Multicast RX utility", version="1.0.0")
parser = argparse.ArgumentParser(description="Multicast RX utility")
parser.add_argument("group", help="Multicast IP")
parser.add_argument("ifname", help="Interface name")
parser.add_argument("--port", help="UDP port", default=1000)

View File

@ -24,7 +24,7 @@ import logging
import socket
import struct
import time
import sys
logging.basicConfig(
level=logging.DEBUG, format="%(asctime)s %(levelname)5s: %(message)s"
@ -40,7 +40,7 @@ logging.addLevelName(
log = logging.getLogger(__name__)
parser = argparse.ArgumentParser(
description="Multicast packet generator", version="1.0.0"
description="Multicast packet generator"
)
parser.add_argument("group", help="Multicast IP")
parser.add_argument("ifname", help="Interface name")
@ -57,9 +57,18 @@ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# https://github.com/sivel/bonding/issues/10
#
# Bind our socket to ifname
sock.setsockopt(
socket.SOL_SOCKET, 25, struct.pack("%ds" % len(args.ifname), args.ifname)
)
#
# Note ugly python version incompatibility
#
if sys.version_info[0] > 2:
sock.setsockopt(
socket.SOL_SOCKET, 25, struct.pack("%ds" % len(args.ifname),
args.ifname.encode('utf-8'))
)
else:
sock.setsockopt(
socket.SOL_SOCKET, 25, struct.pack("%ds" % len(args.ifname), args.ifname)
)
# We need to make sure our sendto() finishes before we close the socket
sock.setblocking(1)
@ -70,11 +79,18 @@ sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, struct.pack("b", arg
ms = args.interval / 1000.0
# Send data to the multicast group
for x in xrange(args.count):
for x in range(args.count):
log.info(
"TX multicast UDP packet to %s:%d on %s" % (args.group, args.port, args.ifname)
)
sent = sock.sendto("foobar %d" % x, (args.group, args.port))
#
# Note ugly python version incompatibility
#
if sys.version_info[0] > 2:
sent = sock.sendto(b"foobar %d" % x, (args.group, args.port))
else:
sent = sock.sendto("foobar %d" % x, (args.group, args.port))
if args.count > 1 and ms:
time.sleep(ms)