2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 /* This file contains functions used by the Windows 95 (DJGPP) AFS client
11 to communicate with the startup executable. */
14 #include <sys/types.h>
15 #include <sys/socket.h>
16 #include <netinet/in.h>
18 #include "afs/afsmsg95.h"
21 struct sockaddr_in addr;
27 struct sockaddr_in myaddr;
29 sock = socket(AF_INET, SOCK_DGRAM, 0);
33 addr.sin_addr.s_addr = htonl(0x7f000001); /* 127.0.0.1 */
34 addr.sin_family = AF_INET;
35 addr.sin_port = htons(AFS_MSG_PORT);
37 myaddr.sin_addr.s_addr = INADDR_ANY;
38 myaddr.sin_family = AF_INET;
41 rc = bind(sock, (struct sockaddr *) &myaddr, sizeof(myaddr));
43 fprintf(stderr, "afsMsg_Init: bind sock %d rc=%d\n", sock, rc);
49 int afsMsg_StatusChange(int status, int exitCode, char *string)
51 afsMsg_statChange_t *msgP;
54 char msgBuf[AFS_MAX_MSG_LEN];
57 msgP = (afsMsg_statChange_t *) msgBuf;
59 msgP->hdr.msgtype = AFS_MSG_STATUS_CHANGE;
61 msgP->newStatus = status;
62 msgP->exitCode = exitCode;
66 slen = strlen(string); /* one extra for NULL */
67 if (slen > AFS_MAX_MSG_LEN - sizeof(afsMsg_statChange_t))
68 slen = AFS_MAX_MSG_LEN - sizeof(afsMsg_statChange_t);
69 strncpy(&msgP->message, string, slen);
72 msgP->hdr.length = sizeof(afsMsg_statChange_t) + slen;
74 rc = sendto(sock, msgP, msgP->hdr.length, 0, (struct sockaddr *) &addr,
76 /*rc = send(sock, &msg, msg.hdr.length, 0);*/
79 fprintf(stderr, "%s: sent status change %d to sock %d length %d size=%d errno=%d\n",
80 asctime(localtime(&now)), status,
81 sock, msgP->hdr.length, rc, (rc < 0 ? errno:0));
88 int afsMsg_Print(char *str, int level)
92 char msgBuf[AFS_MAX_MSG_LEN];
95 slen = strlen(str); /* one extra for NULL */
96 if (slen > AFS_MAX_MSG_LEN - sizeof(afsMsg_statChange_t))
97 slen = AFS_MAX_MSG_LEN - sizeof(afsMsg_statChange_t);
98 strncpy(&msgP->message, str, slen);
100 msgP->hdr.msgtype = AFS_MSG_PRINT;
101 msgP->hdr.length = sizeof(afsMsg_hdr_t) + slen;
102 msgP->debugLevel = level;
103 strcpy(&msgP->message, str);
105 rc = sendto(sock, msgP, msgP->hdr.length, 0, (struct sockaddr *) &addr,
110 int afsMsg_Shutdown()
114 if (rc < 0) fprintf(stderr, "error closing socket, rc=%d\n", rc);
116 else fprintf(stderr, "socket closed\n");