Allow controller host to be an IPv6 address.
diff --git a/src/python/oftest/controller.py b/src/python/oftest/controller.py
index 5289fdd..81d26dc 100644
--- a/src/python/oftest/controller.py
+++ b/src/python/oftest/controller.py
@@ -160,11 +160,26 @@
if self.passive:
self.logger.info("Create/listen at " + self.host + ":" +
str(self.port))
- self.listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.listen_socket.setsockopt(socket.SOL_SOCKET,
- socket.SO_REUSEADDR, 1)
- self.listen_socket.bind((self.host, self.port))
- self.listen_socket.listen(LISTEN_QUEUE_SIZE)
+ try:
+ ai = socket.getaddrinfo(self.host, self.port, socket.AF_UNSPEC,
+ socket.SOCK_STREAM, 0,
+ socket.AI_PASSIVE)
+ except:
+ raise Exception("Could not get address info for " +
+ self.host + ":" + str(self.port))
+
+ try:
+ # Use first returned addrinfo
+ (family, socktype, proto, name, sockaddr) = ai[0]
+ self.listen_socket = socket.socket(family, socktype)
+ self.listen_socket.setsockopt(socket.SOL_SOCKET,
+ socket.SO_REUSEADDR, 1)
+ self.listen_socket.bind(sockaddr)
+ self.listen_socket.listen(LISTEN_QUEUE_SIZE)
+ except Exception as e:
+ raise Exception("Could not set up socket for " +
+ self.host + ":" + str(self.port) + ': ' +
+ str(e))
def filter_packet(self, rawmsg, hdr):
"""