Annotation of 42BSD/ucb/talk/ctl.c, revision 1.1.1.1

1.1       root        1: /* $Header: ctl.c 1.4 83/06/09 23:37:01 moore 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:     /* open the ctl socket */
                     51: 
                     52: open_ctl() 
                     53: {
                     54:     int length;
                     55: 
                     56:     ctl_addr.sin_port = 0;
                     57:     ctl_addr.sin_addr = my_machine_addr;
                     58: 
                     59:     ctl_sockt = socket(AF_INET, SOCK_DGRAM, 0, 0);
                     60: 
                     61:     if (ctl_sockt <= 0) {
                     62:        p_error("Bad socket");
                     63:     }
                     64: 
                     65:     if (bind(ctl_sockt, &ctl_addr, sizeof(ctl_addr), 0) != 0) {
                     66:        p_error("Couldn't bind to control socket");
                     67:     }
                     68: 
                     69:     length = sizeof(ctl_addr);
                     70:     if (getsockname(ctl_sockt, &ctl_addr, &length) == -1) {
                     71:        p_error("Bad address for ctl socket");
                     72:     }
                     73: }
                     74: 
                     75: /* print_addr is a debug print routine */
                     76: 
                     77: print_addr(addr)
                     78: struct sockaddr_in addr;
                     79: {
                     80:     int i;
                     81: 
                     82:     printf("addr = %x, port = %o, family = %o zero = ",
                     83:            addr.sin_addr, addr.sin_port, addr.sin_family);
                     84: 
                     85:     for (i = 0; i<8;i++) {
                     86:        printf("%o ", (int)addr.sin_zero[i]);
                     87:     }
                     88:     putchar('\n');
                     89: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.