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
This commit is contained in:
parent
03d9c6aa55
commit
e4478d7e46
@ -54,6 +54,15 @@
|
|||||||
* stream connection through which the conversation takes place.
|
* stream connection through which the conversation takes place.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
* Client->server request message format.
|
||||||
*/
|
*/
|
||||||
@ -63,8 +72,8 @@ typedef struct {
|
|||||||
u_char answer; /* not used */
|
u_char answer; /* not used */
|
||||||
u_char pad;
|
u_char pad;
|
||||||
u_int32_t id_num; /* message id */
|
u_int32_t id_num; /* message id */
|
||||||
struct osockaddr addr; /* old (4.3) style */
|
struct tsockaddr addr; /* old (4.3) style */
|
||||||
struct osockaddr ctl_addr; /* old (4.3) style */
|
struct tsockaddr ctl_addr; /* old (4.3) style */
|
||||||
int32_t pid; /* caller's process id */
|
int32_t pid; /* caller's process id */
|
||||||
#define NAME_SIZE 12
|
#define NAME_SIZE 12
|
||||||
char l_name[NAME_SIZE];/* caller's name */
|
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 answer; /* respose to request message, see below */
|
||||||
u_char pad;
|
u_char pad;
|
||||||
u_int32_t id_num; /* message id */
|
u_int32_t id_num; /* message id */
|
||||||
struct osockaddr addr; /* address for establishing conversation */
|
struct tsockaddr addr; /* address for establishing conversation */
|
||||||
} CTL_RESPONSE;
|
} CTL_RESPONSE;
|
||||||
|
|
||||||
#define TALK_VERSION 1 /* protocol version */
|
#define TALK_VERSION 1 /* protocol version */
|
||||||
|
@ -114,7 +114,8 @@ main(int argc, char *argv[])
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
lastmsgtime = time(0);
|
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_family = ntohs(mp->ctl_addr.sa_family);
|
||||||
ctl_addr.sa_len = sizeof(ctl_addr);
|
ctl_addr.sa_len = sizeof(ctl_addr);
|
||||||
process_request(mp, &response);
|
process_request(mp, &response);
|
||||||
|
@ -77,13 +77,9 @@ invite_remote(void)
|
|||||||
itimer.it_interval = itimer.it_value;
|
itimer.it_interval = itimer.it_value;
|
||||||
if (listen(sockt, 5) != 0)
|
if (listen(sockt, 5) != 0)
|
||||||
p_error("Error on attempt to listen for caller");
|
p_error("Error on attempt to listen for caller");
|
||||||
#ifdef MSG_EOR
|
|
||||||
/* copy new style sockaddr to old, swap family (short in old) */
|
/* 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);
|
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 */
|
msg.id_num = htonl(-1); /* an impossible id_num */
|
||||||
invitation_waiting = 1;
|
invitation_waiting = 1;
|
||||||
announce_invite();
|
announce_invite();
|
||||||
|
@ -59,13 +59,9 @@ check_local(void)
|
|||||||
struct sockaddr addr;
|
struct sockaddr addr;
|
||||||
|
|
||||||
/* the rest of msg was set up in get_names */
|
/* the rest of msg was set up in get_names */
|
||||||
#ifdef MSG_EOR
|
|
||||||
/* copy new style sockaddr to old, swap family (short in old) */
|
/* 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);
|
msg.ctl_addr.sa_family = htons(ctl_addr.sin_family);
|
||||||
#else
|
|
||||||
msg.ctl_addr = *(struct sockaddr *)&ctl_addr;
|
|
||||||
#endif
|
|
||||||
/* must be initiating a talk */
|
/* must be initiating a talk */
|
||||||
if (!look_for_invite(rp))
|
if (!look_for_invite(rp))
|
||||||
return (0);
|
return (0);
|
||||||
|
Loading…
Reference in New Issue
Block a user