From: Eugene Crosser Date: Wed, 20 Apr 2022 21:32:00 +0000 (+0200) Subject: Support IPv6 on client socket X-Git-Tag: 0.01~51 X-Git-Url: http://www.average.org/gitweb/?p=loctrkd.git;a=commitdiff_plain;h=3dea189c7bb47f02db07b52fdcda53fdb986fd2b Support IPv6 on client socket --- 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):