|
|
1.1 root 1: /* $Header: ctl.c,v 1.2 85/01/09 13:04:43 rcs Exp $ */
2:
3: /* This file handles haggling with the various talk daemons to
4: get a socket to talk to. sockt is opened and connected in
5: the progress
6: */
7:
8: #include "talk_ctl.h"
9:
10: struct sockaddr_in daemon_addr = { AF_INET };
11: struct sockaddr_in ctl_addr = { AF_INET };
12: struct sockaddr_in my_addr = { AF_INET };
13:
14: /* inet addresses of the two machines */
15: struct in_addr my_machine_addr;
16: struct in_addr his_machine_addr;
17:
18: u_short daemon_port; /* port number of the talk daemon */
19:
20: int ctl_sockt;
21: int sockt;
22: int invitation_waiting = 0;
23:
24: CTL_MSG msg;
25:
26: open_sockt()
27: {
28: int length;
29:
30: my_addr.sin_addr = my_machine_addr;
31: my_addr.sin_port = 0;
32:
33: sockt = socket(AF_INET, SOCK_STREAM, 0, 0);
34:
35: if (sockt <= 0) {
36: p_error("Bad socket");
37: }
38:
39: if ( bind(sockt, &my_addr, sizeof(my_addr)) != 0) {
40: p_error("Binding local socket");
41: }
42:
43: length = sizeof(my_addr);
44:
45: if (getsockname(sockt, &my_addr, &length) == -1) {
46: p_error("Bad address for socket");
47: }
48:
49: }
50:
51: /* open the ctl socket */
52:
53: open_ctl()
54: {
55: int length;
56:
57: ctl_addr.sin_port = 0;
58: ctl_addr.sin_addr = my_machine_addr;
59:
60: ctl_sockt = socket(AF_INET, SOCK_DGRAM, 0, 0);
61:
62: if (ctl_sockt <= 0) {
63: p_error("Bad socket");
64: }
65:
66: if (bind(ctl_sockt, &ctl_addr, sizeof(ctl_addr), 0) != 0) {
67: printf("Address is: ");
68: print_addr(ctl_addr);
69: p_error("Couldn't bind to control socket");
70: }
71:
72: length = sizeof(ctl_addr);
73: if (getsockname(ctl_sockt, &ctl_addr, &length) == -1) {
74: p_error("Bad address for ctl socket");
75: }
76: }
77:
78: /* print_addr is a debug print routine. moved to print.c */
79: /*
80: /*print_addr(addr)
81: /*struct sockaddr_in addr;
82: /*{
83: /* int i;
84: /*
85: /* printf("addr = %x, port = %o, family = %o zero = ",
86: /* addr.sin_addr, addr.sin_port, addr.sin_family);
87: /*
88: /* for (i = 0; i<8;i++) {
89: /* printf("%o ", (int)addr.sin_zero[i]);
90: /* }
91: /* putchar('\n');
92: /*}
93: /**/
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.