/* * Initialize the callback interface structure */ static int init_afs_cb(void) { int count; afs_uuid_create(&afs_cb_interface.uuid); count = rx_getAllAddr((afs_uint32 *) &afs_cb_interface.addr_in, AFS_MAX_INTERFACE_ADDR); if (count <= 0) afs_cb_interface.numberOfInterfaces = 0; else afs_cb_interface.numberOfInterfaces = count; afs_cb_inited = 1; return 0; }
static int init_afs_cb(void) { int count; afs_uuid_create(&afs_cb_interface.uuid); count = rx_getAllAddr((afs_uint32 *)&afs_cb_interface.addr_in, AFS_MAX_INTERFACE_ADDR); if (count <= 0) afs_cb_interface.numberOfInterfaces = 0; else { int i; afs_cb_interface.numberOfInterfaces = count; for (i = 0; i < count; i++) { /* these addresss will be marshalled in XDR, so they must be in * host-byte order to make sense */ afs_cb_interface.addr_in[i] = ntohl(afs_cb_interface.addr_in[i]); } } afs_cb_inited = 1; return 0; }
afs_int32 init_callback_service(rpc_test_request_ctx *ctx) { pthread_t tid; pthread_attr_t tattr; afs_int32 code = 0; afs_uuid_create(&(ctx->cb_listen_addr.uuid)); #if !defined(RPC_TEST_GLOBAL_RX_INIT) #if 0 code = rx_InitHost(ctx->cb_listen_addr.addr_in[0], (int) htons(ctx->cb_port)); #else code = rx_Init((int) htons(ctx->cb_port)); #endif #endif /* RPC_TEST_GLOBAL_RX_INIT */ assert(pthread_attr_init(&tattr) == 0); assert(pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED) == 0); assert(pthread_create(&tid, &tattr, init_callback_service_lwp, ctx) == 0); return (code); } /* init_callback_service */
void afspag_Init(afs_int32 nfs_server_addr) { struct clientcred ccred; struct rmtbulk idata, odata; afs_int32 code, err, addr, obuf; int i; afs_uuid_create(&afs_cb_interface.uuid); AFS_GLOCK(); afs_InitStats(); rx_Init(htons(7001)); AFS_STATCNT(afs_ResourceInit); AFS_RWLOCK_INIT(&afs_xuser, "afs_xuser"); AFS_RWLOCK_INIT(&afs_xpagcell, "afs_xpagcell"); AFS_RWLOCK_INIT(&afs_xpagsys, "afs_xpagsys"); AFS_RWLOCK_INIT(&afs_icl_lock, "afs_icl_lock"); afs_resourceinit_flag = 1; afs_nfs_server_addr = nfs_server_addr; for (i = 0; i < MAXNUMSYSNAMES; i++) { afs_sysnamelist[i] = afs_osi_Alloc(MAXSYSNAME); osi_Assert(afs_sysnamelist[i] != NULL); } afs_sysname = afs_sysnamelist[0]; strcpy(afs_sysname, SYS_NAME); afs_sysnamecount = 1; afs_sysnamegen++; srv_secobj = rxnull_NewServerSecurityObject(); stats_svc = rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", &srv_secobj, 1, RXSTATS_ExecuteRequest); pagcb_svc = rx_NewService(0, PAGCB_SERVICEID, "pagcb", &srv_secobj, 1, PAGCB_ExecuteRequest); rx_StartServer(0); clt_secobj = rxnull_NewClientSecurityObject(); rmtsys_conn = rx_NewConnection(nfs_server_addr, htons(7009), RMTSYS_SERVICEID, clt_secobj, 0); #ifdef RXK_LISTENER_ENV afs_start_thread(rxk_Listener, "Rx Listener"); #endif afs_start_thread((void *)(void *)rx_ServerProc, "Rx Server Thread"); afs_start_thread(afs_rxevent_daemon, "Rx Event Daemon"); afs_start_thread(afs_Daemon, "AFS PAG Daemon"); afs_icl_InitLogs(); AFS_GUNLOCK(); /* If it's reachable, tell the translator to nuke our creds. * We should be more agressive about making sure this gets done, * even if the translator is unreachable when we boot. */ addr = obuf = err = 0; idata.rmtbulk_len = sizeof(addr); idata.rmtbulk_val = (char *)&addr; odata.rmtbulk_len = sizeof(obuf); odata.rmtbulk_val = (char *)&obuf; memset(&ccred, 0, sizeof(ccred)); code = RMTSYS_Pioctl(rmtsys_conn, &ccred, NIL_PATHP, 0x4F01, 0, &idata, &odata, &err); } /*afs_ResourceInit */