From 3dea189c7bb47f02db07b52fdcda53fdb986fd2b Mon Sep 17 00:00:00 2001 From: Eugene Crosser Date: Wed, 20 Apr 2022 23:32:00 +0200 Subject: [PATCH] Support IPv6 on client socket --- gps303/collector.py | 4 ++-- gps303/zmsg.py | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gps303/collector.py b/gps303/collector.py index 4cb7956..be1bdec 100644 --- a/gps303/collector.py +++ b/gps303/collector.py @@ -1,7 +1,7 @@ """ TCP server that communicates with terminals """ from logging import getLogger -from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR +from socket import socket, AF_INET6, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR from time import time from struct import pack import zmq @@ -135,7 +135,7 @@ def runserver(conf): zpub.bind(conf.get("collector", "publishurl")) zsub = zctx.socket(zmq.SUB) zsub.connect(conf.get("collector", "listenurl")) - tcpl = socket(AF_INET, SOCK_STREAM) + tcpl = socket(AF_INET6, SOCK_STREAM) tcpl.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) tcpl.bind(("", conf.getint("collector", "port"))) tcpl.listen(5) diff --git a/gps303/zmsg.py b/gps303/zmsg.py index cdd23fc..7ab3ce4 100644 --- a/gps303/zmsg.py +++ b/gps303/zmsg.py @@ -6,8 +6,11 @@ from struct import pack, unpack __all__ = "Bcast", "Resp" def pack_peer(peeraddr): - saddr, port = peeraddr - addr = ip.ip_address(saddr) + saddr, port, _x, _y = peeraddr + addr6 = ip.ip_address(saddr) + addr = addr6.ipv4_mapped + if addr is None: + addr = addr6 return pack("B", addr.version) + (addr.packed + b"\0\0\0\0\0\0\0\0\0\0\0\0")[:16] + pack("!H", port) def unpack_peer(buffer): -- 2.43.0