forked from mirrors/linux
		
	 7e8a590377
			
		
	
	
		7e8a590377
		
	
	
	
	
		
			
			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)
 |