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 #include <afsconfig.h>
11 #include <afs/param.h>
14 #include <sys/types.h>
16 #include <netinet/in.h>
23 #define N_SECURITY_OBJECTS 1
28 main(int argc, char **argv)
30 struct rx_securityClass *(securityObjects[N_SECURITY_OBJECTS]);
31 struct rx_service *service;
33 /* Initialize Rx, telling it port number this server will use for its single service */
34 if (rx_Init(BULK_SERVER_PORT) < 0)
37 /* Create a single security object, in this case the null security object, for unauthenticated connections, which will be used to control security on connections made to this server */
38 securityObjects[BULK_NULL] = rxnull_NewServerSecurityObject();
39 if (securityObjects[BULK_NULL] == (struct rx_securityClass *)0)
40 Quit("rxnull_NewServerSecurityObject");
42 /* Instantiate a single BULK service. The rxgen-generated procedure which is called to decode requests is passed in here (BULK_ExecuteRequest). */
44 rx_NewService(0, BULK_SERVICE_ID, "BULK", securityObjects,
45 N_SECURITY_OBJECTS, BULK_ExecuteRequest);
46 if (service == (struct rx_service *)0)
47 Quit("rx_NewService");
48 rx_SetMaxProcs(service, 2);
50 rx_StartServer(1); /* Donate this process to the server process pool */
51 Quit("StartServer returned?");
55 BULK_FetchFile(struct rx_call *call, int verbose, char *name)
61 printf("Fetch file %s\n", name);
62 fd = open(name, O_RDONLY, 0);
63 if (fd < 0 || fstat(fd, &status) < 0) {
65 printf("Failed to open %s\n", name);
69 error = bulk_SendFile(fd, call, &status);
76 BULK_StoreFile(struct rx_call *call, int verbose, char *name)
82 printf("Store file %s\n", name);
83 fd = open(name, O_CREAT | O_TRUNC | O_WRONLY, 0666);
84 if (fd < 0 || fstat(fd, &status) < 0) {
85 fprintf(stderr, "Could not create %s\n", name);
89 error = bulk_ReceiveFile(fd, call, &status);