diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
commit | 4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch) | |
tree | ba5f07bf3f9d22d82e54a462313f5d244036c768 /net-misc/netkit-talk/files |
reinit the tree, so we can have metadata
Diffstat (limited to 'net-misc/netkit-talk/files')
-rw-r--r-- | net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.diff | 56 | ||||
-rw-r--r-- | net-misc/netkit-talk/files/netkit-talk-0.17-time.patch | 20 | ||||
-rw-r--r-- | net-misc/netkit-talk/files/talk.xinetd | 13 |
3 files changed, 89 insertions, 0 deletions
diff --git a/net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.diff b/net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.diff new file mode 100644 index 000000000000..f426bf7dfadf --- /dev/null +++ b/net-misc/netkit-talk/files/netkit-talk-0.17-ipv6.diff @@ -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 diff --git a/net-misc/netkit-talk/files/netkit-talk-0.17-time.patch b/net-misc/netkit-talk/files/netkit-talk-0.17-time.patch new file mode 100644 index 000000000000..3a0ccadcb744 --- /dev/null +++ b/net-misc/netkit-talk/files/netkit-talk-0.17-time.patch @@ -0,0 +1,20 @@ +--- a/talkd/table.c ++++ b/talkd/table.c +@@ -57,6 +57,7 @@ + + #include "prot_talkd.h" + #include "proto.h" ++#include <time.h> + + #define MAX_ID 16000 /* << 2^15 so I don't have sign troubles */ + +--- a/talkd/announce.c ++++ b/talkd/announce.c +@@ -49,6 +49,7 @@ + #include <fcntl.h> + #include <string.h> + #include <paths.h> ++#include <time.h> + #include "prot_talkd.h" + #include "proto.h" + diff --git a/net-misc/netkit-talk/files/talk.xinetd b/net-misc/netkit-talk/files/talk.xinetd new file mode 100644 index 000000000000..524282582b24 --- /dev/null +++ b/net-misc/netkit-talk/files/talk.xinetd @@ -0,0 +1,13 @@ +# default: off +# description: The talk server accepts talk requests for chatting with users \ +# on other systems. +service ntalk +{ +# flags = IPv4 + disable = yes + socket_type = dgram + wait = yes + user = nobody + group = tty + server = /usr/sbin/in.talkd +} |