From b1c81de4fadbd00897700a7321f03b390d952b2e Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 26 Aug 2021 00:09:36 +0100 Subject: gentoo resync : 26.08.2021 --- .../netkit-talk/files/netkit-talk-0.17-ipv6.patch | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.patch (limited to 'net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.patch') diff --git a/net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.patch b/net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.patch new file mode 100644 index 000000000000..f426bf7dfadf --- /dev/null +++ b/net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.patch @@ -0,0 +1,56 @@ +--- a/talkd/talkd.c ++++ b/talkd/talkd.c +@@ -164,13 +164,14 @@ + const char *theirip; + + struct hostent *hp; ++ struct sockaddr_in6 addr; + struct sockaddr_in sn; + int cc, i, ok; + socklen_t addrlen; + +- addrlen = sizeof(sn); ++ addrlen = sizeof(addr); + cc = recvfrom(0, inbuf, sizeof(inbuf), 0, +- (struct sockaddr *)&sn, &addrlen); ++ (struct sockaddr *)&addr, &addrlen); + if (cc<0) { + if (errno==EINTR || errno==EAGAIN) { + return; +@@ -185,14 +186,30 @@ + */ + lastmsgtime = time(NULL); + +- if (addrlen!=sizeof(sn)) { +- syslog(LOG_WARNING, "recvfrom: bogus address length"); +- return; +- } +- if (sn.sin_family!=AF_INET) { ++ sn.sin_family = AF_INET; ++ switch (addr.sin6_family) ++ { ++ case AF_INET: ++ sn.sin_addr=((struct sockaddr_in*)&addr)->sin_addr; ++ sn.sin_port=((struct sockaddr_in*)&addr)->sin_port; ++ break; ++ case AF_INET6: ++ // addr must be ::FFFF:x.x.x.x ++ if (addr.sin6_addr.s6_addr32[0]!=0 || ++ addr.sin6_addr.s6_addr32[1]!=0 || ++ addr.sin6_addr.s6_addr16[5]!=0xffff || ++ addr.sin6_addr.s6_addr16[4]!=0) ++ { ++ syslog(LOG_WARNING, "IPv6 address family not supported by talkd"); ++ return; ++ } ++ sn.sin_port=addr.sin6_port; ++ sn.sin_addr.s_addr=addr.sin6_addr.s6_addr32[3]; ++ break; ++ default: + syslog(LOG_WARNING, "recvfrom: bogus address family"); + return; +- } ++ } + + /* + * If we get here we have an address we can reply to, although -- cgit v1.2.3