diff options
Diffstat (limited to 'hunt/huntd/ctl.c')
| -rw-r--r-- | hunt/huntd/ctl.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/hunt/huntd/ctl.c b/hunt/huntd/ctl.c new file mode 100644 index 00000000..59449930 --- /dev/null +++ b/hunt/huntd/ctl.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 1983 Regents of the University of California. + * All rights reserved. The Berkeley software License Agreement + * specifies the terms and conditions for redistribution. + */ + +#include "bsd.h" + +#if defined(TALK_43) || defined(TALK_42) + +#ifndef lint +static char sccsid[] = "@(#)ctl.c 5.2 (Berkeley) 3/13/86"; +#endif + +/* + * This file handles haggling with the various talk daemons to + * get a socket to talk to. sockt is opened and connected in + * the progress + */ + +#include "talk_ctl.h" + +struct sockaddr_in daemon_addr = { AF_INET }; +struct sockaddr_in ctl_addr = { AF_INET }; + + /* inet addresses of the two machines */ +struct in_addr my_machine_addr; +struct in_addr his_machine_addr; + +u_short daemon_port; /* port number of the talk daemon */ + +int ctl_sockt; + +CTL_MSG msg; + +/* open the ctl socket */ +open_ctl() +{ + int length; + + ctl_addr.sin_port = 0; + ctl_addr.sin_addr = my_machine_addr; + ctl_sockt = socket(AF_INET, SOCK_DGRAM, 0); + if (ctl_sockt <= 0) + p_error("Bad socket"); + if (bind(ctl_sockt, (struct sockaddr *)&ctl_addr, sizeof(ctl_addr)) != 0) + p_error("Couldn't bind to control socket"); + length = sizeof(ctl_addr); + if (getsockname(ctl_sockt, (struct sockaddr *) &ctl_addr, &length) < 0) + p_error("Bad address for ctl socket"); +} +#endif |
