1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #ifndef lint
8: static char sccsid[] = "@(#)ctl.c 5.1 (Berkeley) 6/6/85";
9: #endif not lint
10:
11: /*
12: * This file handles haggling with the various talk daemons to
13: * get a socket to talk to. sockt is opened and connected in
14: * the progress
15: */
16:
17: #include "talk_ctl.h"
18:
19: struct sockaddr_in daemon_addr = { AF_INET };
20: struct sockaddr_in ctl_addr = { AF_INET };
21: struct sockaddr_in my_addr = { AF_INET };
22:
23: /* inet addresses of the two machines */
24: struct in_addr my_machine_addr;
25: struct in_addr his_machine_addr;
26:
27: u_short daemon_port; /* port number of the talk daemon */
28:
29: int ctl_sockt;
30: int sockt;
31: int invitation_waiting = 0;
32:
33: CTL_MSG msg;
34:
35: open_sockt()
36: {
37: int length;
38:
39: my_addr.sin_addr = my_machine_addr;
40: my_addr.sin_port = 0;
41: sockt = socket(AF_INET, SOCK_STREAM, 0);
42: if (sockt <= 0)
43: p_error("Bad socket");
44: if (bind(sockt, &my_addr, sizeof(my_addr)) != 0)
45: p_error("Binding local socket");
46: length = sizeof(my_addr);
47: if (getsockname(sockt, &my_addr, &length) == -1)
48: p_error("Bad address for socket");
49: }
50:
51: /* open the ctl socket */
52: open_ctl()
53: {
54: int length;
55:
56: ctl_addr.sin_port = 0;
57: ctl_addr.sin_addr = my_machine_addr;
58: ctl_sockt = socket(AF_INET, SOCK_DGRAM, 0);
59: if (ctl_sockt <= 0)
60: p_error("Bad socket");
61: if (bind(ctl_sockt, &ctl_addr, sizeof(ctl_addr), 0) != 0)
62: p_error("Couldn't bind to control socket");
63: length = sizeof(ctl_addr);
64: if (getsockname(ctl_sockt, &ctl_addr, &length) == -1)
65: p_error("Bad address for ctl socket");
66: }
67:
68: /* print_addr is a debug print routine */
69: print_addr(addr)
70: struct sockaddr_in addr;
71: {
72: int i;
73:
74: printf("addr = %x, port = %o, family = %o zero = ",
75: addr.sin_addr, addr.sin_port, addr.sin_family);
76: for (i = 0; i<8;i++)
77: printf("%o ", (int)addr.sin_zero[i]);
78: putchar('\n');
79: }
Defined functions
Defined variables
msg
defined in line
33;
never used
sccsid
defined in line
8;
never used
sockt
defined in line
30; used 4 times