mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Bind and connect to localhost. There is no reason for this test to use non-localhost interface. This lets us run this test in a network namespace. Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
#
 | 
						|
# SPDX-License-Identifier: GPL-2.0
 | 
						|
#
 | 
						|
 | 
						|
import sys, os, os.path, getopt
 | 
						|
import socket, time
 | 
						|
import subprocess
 | 
						|
import select
 | 
						|
 | 
						|
def read(sock, n):
 | 
						|
    buf = b''
 | 
						|
    while len(buf) < n:
 | 
						|
        rem = n - len(buf)
 | 
						|
        try: s = sock.recv(rem)
 | 
						|
        except (socket.error) as e: return b''
 | 
						|
        buf += s
 | 
						|
    return buf
 | 
						|
 | 
						|
def send(sock, s):
 | 
						|
    total = len(s)
 | 
						|
    count = 0
 | 
						|
    while count < total:
 | 
						|
        try: n = sock.send(s)
 | 
						|
        except (socket.error) as e: n = 0
 | 
						|
        if n == 0:
 | 
						|
            return count;
 | 
						|
        count += n
 | 
						|
    return count
 | 
						|
 | 
						|
 | 
						|
SERVER_PORT = 12877
 | 
						|
MAX_PORTS = 2
 | 
						|
 | 
						|
serverPort = SERVER_PORT
 | 
						|
serverSocket = None
 | 
						|
 | 
						|
# create passive socket
 | 
						|
serverSocket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
 | 
						|
 | 
						|
try: serverSocket.bind(('localhost', 0))
 | 
						|
except socket.error as msg:
 | 
						|
    print('bind fails: ' + str(msg))
 | 
						|
 | 
						|
sn = serverSocket.getsockname()
 | 
						|
serverPort = sn[1]
 | 
						|
 | 
						|
cmdStr = ("./tcp_client.py %d &") % (serverPort)
 | 
						|
os.system(cmdStr)
 | 
						|
 | 
						|
buf = b''
 | 
						|
n = 0
 | 
						|
while n < 500:
 | 
						|
    buf += b'.'
 | 
						|
    n += 1
 | 
						|
 | 
						|
serverSocket.listen(MAX_PORTS)
 | 
						|
readList = [serverSocket]
 | 
						|
 | 
						|
while True:
 | 
						|
    readyRead, readyWrite, inError = \
 | 
						|
        select.select(readList, [], [], 2)
 | 
						|
 | 
						|
    if len(readyRead) > 0:
 | 
						|
        waitCount = 0
 | 
						|
        for sock in readyRead:
 | 
						|
            if sock == serverSocket:
 | 
						|
                (clientSocket, address) = serverSocket.accept()
 | 
						|
                address = str(address[0])
 | 
						|
                readList.append(clientSocket)
 | 
						|
            else:
 | 
						|
                sock.settimeout(1);
 | 
						|
                s = read(sock, 1000)
 | 
						|
                n = send(sock, buf)
 | 
						|
                sock.close()
 | 
						|
                serverSocket.close()
 | 
						|
                sys.exit(0)
 | 
						|
    else:
 | 
						|
        print('Select timeout!')
 | 
						|
        sys.exit(1)
 |