
1: /* $NetBSD: ctl.c,v 1.3 2003/06/11 12:00:22 wiz Exp $ */ 2: /* 3: * Copyright (c) 1983-2003, Regents of the University of California. 4: * All rights reserved. 5: * 6: * Redistribution and use in source and binary forms, with or without 7: * modification, are permitted provided that the following conditions are 8: * met: 9: * 10: * + Redistributions of source code must retain the above copyright 11: * notice, this list of conditions and the following disclaimer. 12: * + Redistributions in binary form must reproduce the above copyright 13: * notice, this list of conditions and the following disclaimer in the 14: * documentation and/or other materials provided with the distribution. 15: * + Neither the name of the University of California, San Francisco nor 16: * the names of its contributors may be used to endorse or promote 17: * products derived from this software without specific prior written 18: * permission. 19: * 20: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 21: * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 23: * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31: */ 32: 33: #include "bsd.h" 34: 35: #if defined(TALK_43) || defined(TALK_42) 36: 37: #include <sys/cdefs.h> 38: #ifndef lint 39: #if 0 40: static char sccsid[] = "@(#)ctl.c 5.2 (Berkeley) 3/13/86"; 41: #else 42: __RCSID("$NetBSD: ctl.c,v 1.3 2003/06/11 12:00:22 wiz Exp $"); 43: #endif 44: #endif /* not lint */ 45: 46: /* 47: * This file handles haggling with the various talk daemons to 48: * get a socket to talk to. sockt is opened and connected in 49: * the progress 50: */ 51: 52: #include "hunt.h" 53: #include "talk_ctl.h" 54: 55: struct sockaddr_in daemon_addr = { AF_INET }; 56: struct sockaddr_in ctl_addr = { AF_INET }; 57: 58: /* inet addresses of the two machines */ 59: struct in_addr my_machine_addr; 60: struct in_addr his_machine_addr; 61: 62: u_short daemon_port; /* port number of the talk daemon */ 63: 64: int ctl_sockt; 65: 66: CTL_MSG msg; 67: 68: /* open the ctl socket */ 69: void 70: open_ctl() 71: { 72: int length; 73: 74: ctl_addr.sin_port = 0; 75: ctl_addr.sin_addr = my_machine_addr; 76: ctl_sockt = socket(AF_INET, SOCK_DGRAM, 0); 77: if (ctl_sockt <= 0) 78: p_error("Bad socket"); 79: if (bind(ctl_sockt, &ctl_addr, sizeof(ctl_addr)) != 0) 80: p_error("Couldn't bind to control socket"); 81: length = sizeof(ctl_addr); 82: if (getsockname(ctl_sockt, (struct sockaddr *) &ctl_addr, &length) < 0) 83: p_error("Bad address for ctl socket"); 84: } 85: #endif