FWRITE -> O_RDWR
[unix-history] / usr / src / usr.bin / rlogin / krcmd.c
CommitLineData
f788ac26
KF
1/*
2 * $Source: /mit/kerberos/ucb/mit/kcmd/RCS/krcmd.c,v $
3 * $Header: /mit/kerberos/ucb/mit/kcmd/RCS/krcmd.c,v 5.1 89/07/25 15:38:44 kfall Exp Locker: kfall $
4 */
5
6#ifndef lint
7static char *rcsid_kcmd_c =
8"$Header: /mit/kerberos/ucb/mit/kcmd/RCS/krcmd.c,v 5.1 89/07/25 15:38:44 kfall Exp Locker: kfall $";
9#endif lint
10#define LIBC_SCCS
11
12/*
13 * Copyright (c) 1989 The Regents of the University of California.
14 * All rights reserved.
15 *
16 * Redistribution and use in source and binary forms are permitted
17 * provided that the above copyright notice and this paragraph are
18 * duplicated in all such forms and that any documentation,
19 * advertising materials, and other materials related to such
20 * distribution and use acknowledge that the software was developed
21 * by the University of California, Berkeley. The name of the
22 * University may not be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
25 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
26 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27 */
28
29#ifndef lint
30static char sccsid[] = "@(#)krcmd.c 1.3 (Berkeley) 2/10/89";
31#endif /* not lint */
32
33#include <sys/types.h>
34#include <stdio.h>
4f10ae0d 35#include <kerberosIV/des.h>
308c0e0f 36#include <kerberosIV/krb.h>
f788ac26
KF
37
38#define SERVICE_NAME "rcmd"
39
308c0e0f
KB
40/*
41 * krcmd: simplified version of Athena's "kcmd"
42 * returns a socket attached to the destination, -1 or krb error on error
43 * if fd2p is non-NULL, another socket is filled in for it
44 */
45
f788ac26
KF
46int
47krcmd(ahost, rport, remuser, cmd, fd2p, realm)
48 char **ahost;
49 u_short rport;
50 char *remuser, *cmd;
51 int *fd2p;
52 char *realm;
53{
308c0e0f 54 int sock = -1, err = 0;
f788ac26 55 KTEXT_ST ticket;
308c0e0f 56 long authopts = 0L;
f788ac26
KF
57
58 err = kcmd(
59 &sock,
60 ahost,
61 rport,
62 NULL, /* locuser not used */
63 remuser,
64 cmd,
65 fd2p,
66 &ticket,
67 SERVICE_NAME,
68 realm,
308c0e0f
KB
69 (CREDENTIALS *) NULL, /* credentials not used */
70 (bit_64 *) NULL, /* key schedule not used */
71 (MSG_DAT *) NULL, /* MSG_DAT not used */
72 (struct sockaddr_in *) NULL, /* local addr not used */
73 (struct sockaddr_in *) NULL, /* foreign addr not used */
f788ac26
KF
74 authopts
75 );
76
308c0e0f 77 if (err > KSUCCESS && err < MAX_KRB_ERRORS) {
f788ac26
KF
78 fprintf(stderr, "krcmd: %s\n", krb_err_txt[err]);
79 return(-1);
80 }
308c0e0f
KB
81 if (err < 0)
82 return(-1);
f788ac26
KF
83 return(sock);
84}
85
86#include <sys/socket.h>
87#include <netinet/in.h>
88
89int
90krcmd_mutual(ahost, rport, remuser, cmd, fd2p, realm, cred, sched)
91 char **ahost;
92 u_short rport;
93 char *remuser, *cmd;
94 int *fd2p;
95 char *realm;
96 CREDENTIALS *cred;
97 Key_schedule sched;
98{
99 int sock, err;
100 KTEXT_ST ticket;
101 MSG_DAT msg_dat;
102 struct sockaddr_in laddr, faddr;
103 long authopts = KOPT_DO_MUTUAL;
104
105 err = kcmd(
106 &sock,
107 ahost,
108 rport,
109 NULL, /* locuser not used */
110 remuser,
111 cmd,
112 fd2p,
113 &ticket,
114 SERVICE_NAME,
115 realm,
116 cred, /* filled in */
117 sched, /* filled in */
308c0e0f 118 &msg_dat, /* filled in */
f788ac26
KF
119 &laddr, /* filled in */
120 &faddr, /* filled in */
121 authopts
122 );
123
308c0e0f 124 if (err > KSUCCESS && err < MAX_KRB_ERRORS) {
f788ac26
KF
125 fprintf(stderr, "krcmd_mutual: %s\n", krb_err_txt[err]);
126 return(-1);
127 }
308c0e0f
KB
128
129 if (err < 0)
130 return (-1);
f788ac26
KF
131 return(sock);
132}