DWORD VmDnsRpcServerUseProtSeqEp( PCSTR pszProtSeq, PCSTR pszEndpoint ) { DWORD dwError = 0; DCETHREAD_TRY { rpc_server_use_protseq_ep( (unsigned char*) pszProtSeq, rpc_c_protseq_max_calls_default, (unsigned char*) pszEndpoint, (unsigned32*)&dwError); } DCETHREAD_CATCH_ALL(THIS_CATCH) { if ( dwError == rpc_s_ok ) { dwError = dcethread_exc_getstatus(THIS_CATCH); if (!dwError) { dwError = RPC_S_INTERNAL_ERROR; } } } DCETHREAD_ENDTRY; BAIL_ON_VMDNS_ERROR(dwError); error: return dwError; }
static DWORD bind_server( rpc_binding_vector_p_t * server_binding, rpc_if_handle_t interface_spec, PENDPOINT pEndPoints ) { DWORD dwError = 0; DWORD dwRpcStatus = 0; DWORD i; /* * Prepare the server binding handle * use all avail protocols (UDP and TCP). This basically allocates * new sockets for us and associates the interface UUID and * object UUID of with those communications endpoints. */ for (i = 0; pEndPoints[i].protocol != NULL; i++) { if (!pEndPoints[i].endpoint) { rpc_server_use_protseq((unsigned char*) pEndPoints[i].protocol, rpc_c_protseq_max_calls_default, (unsigned32*)&dwRpcStatus); BAIL_ON_DCE_ERROR(dwError, dwRpcStatus); } else { if (!strcmp(pEndPoints[i].protocol, "ncalrpc") && pEndPoints[i].endpoint[0] == '/') { dwError = prepare_domain_socket(pEndPoints[i].endpoint); BAIL_ON_SRVSVC_ERROR(dwError); } rpc_server_use_protseq_ep((unsigned char*) pEndPoints[i].protocol, rpc_c_protseq_max_calls_default, (unsigned char*) pEndPoints[i].endpoint, (unsigned32*)&dwRpcStatus); BAIL_ON_DCE_ERROR(dwError, dwRpcStatus); } } rpc_server_inq_bindings(server_binding, (unsigned32*)&dwRpcStatus); BAIL_ON_DCE_ERROR(dwError, dwRpcStatus); error: return dwError; }
static void bind_server( rpc_binding_vector_p_t * server_binding, rpc_if_handle_t interface_spec ATTRIBUTE_UNUSED, const char * protocol, const char * endpoint) { const char * function = "n/a"; unsigned32 status; /* * Prepare the server binding handle * use all avail protocols (UDP and TCP). This basically allocates * new sockets for us and associates the interface UUID and * object UUID of with those communications endpoints. */ #if 0 rpc_server_use_all_protseqs_if(0, interface_spec, &status); #else if (!endpoint) { if (!protocol) { function = "rpc_server_use_all_protseqs()"; rpc_server_use_all_protseqs(rpc_c_protseq_max_calls_default, &status); } else { function = "rpc_server_use_protseq()"; rpc_server_use_protseq((unsigned_char_p_t)protocol, rpc_c_protseq_max_calls_default, &status); } } else { function = "rpc_server_use_protseq_ep()"; rpc_server_use_protseq_ep((unsigned_char_p_t)protocol, rpc_c_protseq_max_calls_default, (unsigned_char_p_t)endpoint, &status); } #endif chk_dce_err(status, function, "", 1); rpc_server_inq_bindings(server_binding, &status); chk_dce_err(status, "rpc_server_inq_bindings()", "", 1); }