svn commit: r343161 - in head: include/protocols libexec/talkd usr.bin/talk
Brooks Davis
brooks at FreeBSD.org
Fri Jan 18 21:30:08 UTC 2019
Author: brooks
Date: Fri Jan 18 21:30:06 2019
New Revision: 343161
URL: https://svnweb.freebsd.org/changeset/base/343161
Log:
Use a private definition of osockaddr rather then relying on type
namespace polution in sys/socket.h.
Also remove support for operation on 4.3BSD.
PR: 224529
Differential Revision: https://reviews.freebsd.org/D14505
Modified:
head/include/protocols/talkd.h
head/libexec/talkd/talkd.c
head/usr.bin/talk/invite.c
head/usr.bin/talk/look_up.c
Modified: head/include/protocols/talkd.h
==============================================================================
--- head/include/protocols/talkd.h Fri Jan 18 21:25:46 2019 (r343160)
+++ head/include/protocols/talkd.h Fri Jan 18 21:30:06 2019 (r343161)
@@ -55,6 +55,15 @@
*/
/*
+ * The talk protocol embeds a 4.3BSD sockaddr. Define our own version
+ * rather then relying on namespace polution in kernel headers.
+ */
+struct tsockaddr {
+ unsigned short sa_family;
+ char sa_data[14];
+};
+
+/*
* Client->server request message format.
*/
typedef struct {
@@ -63,8 +72,8 @@ typedef struct {
u_char answer; /* not used */
u_char pad;
u_int32_t id_num; /* message id */
- struct osockaddr addr; /* old (4.3) style */
- struct osockaddr ctl_addr; /* old (4.3) style */
+ struct tsockaddr addr; /* old (4.3) style */
+ struct tsockaddr ctl_addr; /* old (4.3) style */
int32_t pid; /* caller's process id */
#define NAME_SIZE 12
char l_name[NAME_SIZE];/* caller's name */
@@ -82,7 +91,7 @@ typedef struct {
u_char answer; /* respose to request message, see below */
u_char pad;
u_int32_t id_num; /* message id */
- struct osockaddr addr; /* address for establishing conversation */
+ struct tsockaddr addr; /* address for establishing conversation */
} CTL_RESPONSE;
#define TALK_VERSION 1 /* protocol version */
Modified: head/libexec/talkd/talkd.c
==============================================================================
--- head/libexec/talkd/talkd.c Fri Jan 18 21:25:46 2019 (r343160)
+++ head/libexec/talkd/talkd.c Fri Jan 18 21:30:06 2019 (r343161)
@@ -114,7 +114,8 @@ main(int argc, char *argv[])
continue;
}
lastmsgtime = time(0);
- (void)memcpy(&ctl_addr, &mp->ctl_addr, sizeof(ctl_addr));
+ (void)memcpy(&ctl_addr.sa_data, &mp->ctl_addr.sa_data,
+ sizeof(ctl_addr.sa_data));
ctl_addr.sa_family = ntohs(mp->ctl_addr.sa_family);
ctl_addr.sa_len = sizeof(ctl_addr);
process_request(mp, &response);
Modified: head/usr.bin/talk/invite.c
==============================================================================
--- head/usr.bin/talk/invite.c Fri Jan 18 21:25:46 2019 (r343160)
+++ head/usr.bin/talk/invite.c Fri Jan 18 21:30:06 2019 (r343161)
@@ -77,13 +77,9 @@ invite_remote(void)
itimer.it_interval = itimer.it_value;
if (listen(sockt, 5) != 0)
p_error("Error on attempt to listen for caller");
-#ifdef MSG_EOR
/* copy new style sockaddr to old, swap family (short in old) */
- msg.addr = *(struct osockaddr *)&my_addr; /* XXX new to old style*/
+ msg.addr = *(struct tsockaddr *)&my_addr;
msg.addr.sa_family = htons(my_addr.sin_family);
-#else
- msg.addr = *(struct sockaddr *)&my_addr;
-#endif
msg.id_num = htonl(-1); /* an impossible id_num */
invitation_waiting = 1;
announce_invite();
Modified: head/usr.bin/talk/look_up.c
==============================================================================
--- head/usr.bin/talk/look_up.c Fri Jan 18 21:25:46 2019 (r343160)
+++ head/usr.bin/talk/look_up.c Fri Jan 18 21:30:06 2019 (r343161)
@@ -59,13 +59,9 @@ check_local(void)
struct sockaddr addr;
/* the rest of msg was set up in get_names */
-#ifdef MSG_EOR
/* copy new style sockaddr to old, swap family (short in old) */
- msg.ctl_addr = *(struct osockaddr *)&ctl_addr;
+ msg.ctl_addr = *(struct tsockaddr *)&ctl_addr;
msg.ctl_addr.sa_family = htons(ctl_addr.sin_family);
-#else
- msg.ctl_addr = *(struct sockaddr *)&ctl_addr;
-#endif
/* must be initiating a talk */
if (!look_for_invite(rp))
return (0);
More information about the svn-src-head
mailing list