public void dispatchOncRpcCall(OncRpcCallInformation call, int program, int version, int procedure) { if (version == 4) { switch (procedure) { case 0: { call.retrieveCall(XdrVoid.XDR_VOID); NFSPROC4_NULL_4(); call.reply(XdrVoid.XDR_VOID); break; } case 1: { COMPOUND4args args_ = new COMPOUND4args(); call.retrieveCall(args_); COMPOUND4res result_ = NFSPROC4_COMPOUND_4(args_); call.reply(result_); break; } default: call.failProcedureUnavailable(); break; } } else { call.failProgramUnavailable(); } }
public void dispatchOncRpcCall(OncRpcCallInformation call, int program, int version, int procedure) { if (version == 1) { switch (procedure) { case 0: { call.retrieveCall(XdrVoid.XDR_VOID); MOUNTPROC_NULL(); call.reply(XdrVoid.XDR_VOID); break; } case 1: { Name args_ = new Name(); call.retrieveCall(args_); MountStatus result_ = MOUNTPROC_MNT(args_); call.reply(result_); break; } case 2: { call.retrieveCall(XdrVoid.XDR_VOID); MountList result_ = MOUNTPROC_DUMP(); call.reply(result_); break; } case 3: { Name args_ = new Name(); call.retrieveCall(args_); MOUNTPROC_UMNT(args_); call.reply(XdrVoid.XDR_VOID); break; } case 4: { call.retrieveCall(XdrVoid.XDR_VOID); MOUNTPROC_UMNTALL(); call.reply(XdrVoid.XDR_VOID); break; } case 5: { call.retrieveCall(XdrVoid.XDR_VOID); Exports result_ = MOUNTPROC_EXPORT(); call.reply(result_); break; } default: { call.failProcedureUnavailable(); break; } } } else { call.failProgramUnavailable(); } }
public void dispatchOncRpcCall(OncRpcCallInformation call, int program, int version, int procedure) { if (version == 2) { switch (procedure) { case 0: { call.retrieveCall(XdrVoid.XDR_VOID); NFSPROC_NULL(); call.reply(XdrVoid.XDR_VOID); break; } case 1: { NFSHandle args_ = new NFSHandle(); args_.Version = V2.RPC.NFSv2Protocol.NFS_VERSION; call.retrieveCall(args_); FileStatus result_ = NFSPROC_GETATTR(args_); call.reply(result_); break; } case 2: { CreateArguments args_ = new CreateArguments(); call.retrieveCall(args_); FileStatus result_ = NFSPROC_SETATTR(args_); call.reply(result_); break; } case 3: { call.retrieveCall(XdrVoid.XDR_VOID); NFSPROC_ROOT(); call.reply(XdrVoid.XDR_VOID); break; } case 4: { ItemOperationArguments args_ = new ItemOperationArguments(); call.retrieveCall(args_); ItemOperationStatus result_ = NFSPROC_LOOKUP(args_); call.reply(result_); break; } case 5: { NFSHandle args_ = new NFSHandle(); args_.Version = V2.RPC.NFSv2Protocol.NFS_VERSION; call.retrieveCall(args_); LinkStatus result_ = NFSPROC_READLINK(args_); call.reply(result_); break; } case 6: { ReadArguments args_ = new ReadArguments(); call.retrieveCall(args_); ReadStatus result_ = NFSPROC_READ(args_); call.reply(result_); break; } case 7: { call.retrieveCall(XdrVoid.XDR_VOID); NFSPROC_WRITECACHE(); call.reply(XdrVoid.XDR_VOID); break; } case 8: { WriteArguments args_ = new WriteArguments(); call.retrieveCall(args_); FileStatus result_ = NFSPROC_WRITE(args_); call.reply(result_); break; } case 9: { CreateArguments args_ = new CreateArguments(); call.retrieveCall(args_); ItemOperationStatus result_ = NFSPROC_CREATE(args_); call.reply(result_); break; } case 10: { ItemOperationArguments args_ = new ItemOperationArguments(); call.retrieveCall(args_); XdrInt result_ = new XdrInt(NFSPROC_REMOVE(args_)); call.reply(result_); break; } case 11: { RenameArguments args_ = new RenameArguments(); call.retrieveCall(args_); XdrInt result_ = new XdrInt(NFSPROC_RENAME(args_)); call.reply(result_); break; } case 12: { LinkArguments args_ = new LinkArguments(); call.retrieveCall(args_); XdrInt result_ = new XdrInt(NFSPROC_LINK(args_)); call.reply(result_); break; } case 13: { SymlinkArguments args_ = new SymlinkArguments(); call.retrieveCall(args_); XdrInt result_ = new XdrInt(NFSPROC_SYMLINK(args_)); call.reply(result_); break; } case 14: { CreateArguments args_ = new CreateArguments(); call.retrieveCall(args_); ItemOperationStatus result_ = NFSPROC_MKDIR(args_); call.reply(result_); break; } case 15: { ItemOperationArguments args_ = new ItemOperationArguments(); call.retrieveCall(args_); XdrInt result_ = new XdrInt(NFSPROC_RMDIR(args_)); call.reply(result_); break; } case 16: { ItemArguments args_ = new ItemArguments(); call.retrieveCall(args_); ItemStatus result_ = NFSPROC_READDIR(args_); call.reply(result_); break; } case 17: { NFSHandle args_ = new NFSHandle(); args_.Version = V2.RPC.NFSv2Protocol.NFS_VERSION; call.retrieveCall(args_); FSStatStatus result_ = NFSPROC_STATFS(args_); call.reply(result_); break; } default: { call.failProcedureUnavailable(); break; } } } else { call.failProgramUnavailable(); } }
public void dispatchOncRpcCall(OncRpcCallInformation call, int program, int version, int procedure) { if (version == 3) { switch (procedure) { case 0: { call.retrieveCall(XdrVoid.XDR_VOID); NFSPROC3_NULL(); call.reply(XdrVoid.XDR_VOID); break; } case 1: { GetAttributeArguments args_ = new GetAttributeArguments(); call.retrieveCall(args_); ResultObject <GetAttributeAccessOK, GetAttributeAccessOK> result_ = NFSPROC3_GETATTR(args_); call.reply(result_); break; } case 2: { SetAttributeArguments args_ = new SetAttributeArguments(); call.retrieveCall(args_); ResultObject <SetAttributeAccessOK, SetAttributeAccessFAIL> result_ = NFSPROC3_SETATTR(args_); call.reply(result_); break; } case 3: { ItemOperationArguments args_ = new ItemOperationArguments(); call.retrieveCall(args_); ResultObject <ItemOperationAccessResultOK, ItemOperationAccessResultFAIL> result_ = NFSPROC3_LOOKUP(args_); call.reply(result_); break; } case 4: { AccessArguments args_ = new AccessArguments(); call.retrieveCall(args_); ResultObject <AccessAccessOK, AccessAccessFAIL> result_ = NFSPROC3_ACCESS(args_); call.reply(result_); break; } case 5: { ReadLinkArguments args_ = new ReadLinkArguments(); call.retrieveCall(args_); ResultObject <ReadLinkAccessOK, ReadLinkAccessFAIL> result_ = NFSPROC3_READLINK(args_); call.reply(result_); break; } case 6: { ReadArguments args_ = new ReadArguments(); call.retrieveCall(args_); ResultObject <ReadAccessOK, ReadAccessFAIL> result_ = NFSPROC3_READ(args_); call.reply(result_); break; } case 7: { WriteArguments args_ = new WriteArguments(); call.retrieveCall(args_); ResultObject <WriteAccessOK, WriteAccessFAIL> result_ = NFSPROC3_WRITE(args_); call.reply(result_); break; } case 8: { MakeFileArguments args_ = new MakeFileArguments(); call.retrieveCall(args_); ResultObject <MakeFileAccessOK, MakeFileAccessFAIL> result_ = NFSPROC3_CREATE(args_); call.reply(result_); break; } case 9: { MakeFolderArguments args_ = new MakeFolderArguments(); call.retrieveCall(args_); ResultObject <MakeFolderAccessOK, MakeFolderAccessFAIL> result_ = NFSPROC3_MKDIR(args_); call.reply(result_); break; } case 10: { SymlinkArguments args_ = new SymlinkArguments(); call.retrieveCall(args_); ResultObject <SymlinkAccessOK, SymlinkAccessFAIL> result_ = NFSPROC3_SYMLINK(args_); call.reply(result_); break; } case 11: { MakeNodeArguments args_ = new MakeNodeArguments(); call.retrieveCall(args_); ResultObject <MakeNodeAccessOK, MakeNodeAccessFAIL> result_ = NFSPROC3_MKNOD(args_); call.reply(result_); break; } case 12: { ItemOperationArguments args_ = new ItemOperationArguments(); call.retrieveCall(args_); ResultObject <RemoveAccessOK, RemoveAccessFAIL> result_ = NFSPROC3_REMOVE(args_); call.reply(result_); break; } case 13: { ItemOperationArguments args_ = new ItemOperationArguments(); call.retrieveCall(args_); ResultObject <RemoveAccessOK, RemoveAccessFAIL> result_ = NFSPROC3_RMDIR(args_); call.reply(result_); break; } case 14: { RenameArguments args_ = new RenameArguments(); call.retrieveCall(args_); ResultObject <RenameAccessOK, RenameAccessFAIL> result_ = NFSPROC3_RENAME(args_); call.reply(result_); break; } case 15: { LinkArguments args_ = new LinkArguments(); call.retrieveCall(args_); ResultObject <LinkAccessOK, LinkAccessFAIL> result_ = NFSPROC3_LINK(args_); call.reply(result_); break; } case 16: { ReadFolderArguments args_ = new ReadFolderArguments(); call.retrieveCall(args_); ResultObject <ReadFolderAccessResultOK, ReadFolderAccessResultFAIL> result_ = NFSPROC3_READDIR(args_); call.reply(result_); break; } case 17: { ExtendedReadFolderArguments args_ = new ExtendedReadFolderArguments(); call.retrieveCall(args_); ResultObject <ExtendedReadFolderAccessOK, ExtendedReadFolderAccessFAIL> result_ = NFSPROC3_READDIRPLUS(args_); call.reply(result_); break; } case 18: { FSStatisticsArguments args_ = new FSStatisticsArguments(); call.retrieveCall(args_); ResultObject <FSStatisticsAccessOK, FSStatisticsAccessFAIL> result_ = NFSPROC3_FSSTAT(args_); call.reply(result_); break; } case 19: { FSInfoArguments args_ = new FSInfoArguments(); call.retrieveCall(args_); ResultObject <FSInfoAccessOK, FSInfoAccessFAIL> result_ = NFSPROC3_FSINFO(args_); call.reply(result_); break; } case 20: { PathConfigurationArguments args_ = new PathConfigurationArguments(); call.retrieveCall(args_); ResultObject <PathConfigurationAccessOK, PathConfigurationAccessFAIL> result_ = NFSPROC3_PATHCONF(args_); call.reply(result_); break; } case 21: { CommitArguments args_ = new CommitArguments(); call.retrieveCall(args_); ResultObject <CommitAccessOK, CommitAccessFAIL> result_ = NFSPROC3_COMMIT(args_); call.reply(result_); break; } default: call.failProcedureUnavailable(); break; } } else { call.failProgramUnavailable(); } }
// // Handle incomming calls... // /// <exception cref="org.acplt.oncrpc.OncRpcException"></exception> /// <exception cref="System.IO.IOException"></exception> public virtual void dispatchOncRpcCall(OncRpcCallInformation call, int program, int version, int procedure) { // // Spit out some diagnosis messages... // System.Console.Out.WriteLine("Incomming call for program " + program.ToString("X") + "; version " + version + "; procedure " + procedure.ToString("X") + "; auth type " + call.callMessage.auth.getAuthenticationType()); // // Handle incomming credentials... // if (call.callMessage.auth.getAuthenticationType() == OncRpcAuthType .ONCRPC_AUTH_UNIX) { OncRpcServerAuthUnix auth = (OncRpcServerAuthUnix )call.callMessage.auth; if ((auth.uid != 42) && (auth.gid != 815)) { throw (new OncRpcAuthenticationException(OncRpcAuthStatus .ONCRPC_AUTH_BADCRED)); } // // Suggest shorthand authentication... // XdrBufferEncodingStream xdr = new XdrBufferEncodingStream(8); xdr.beginEncoding(null, 0); xdr.xdrEncodeInt(42); xdr.xdrEncodeInt(~42); xdr.endEncoding(); // // ATTENTION: this will return the *whole* buffer created by the // constructor of XdrBufferEncodingStream(len) above. So make sure // that you really want to return the whole buffer! // auth.setShorthandVerifier(xdr.getXdrData()); } else { if (call.callMessage.auth.getAuthenticationType() == OncRpcAuthType .ONCRPC_AUTH_SHORT) { // // Check shorthand credentials. // OncRpcServerAuthShort auth = (OncRpcServerAuthShort)call.callMessage.auth; XdrBufferDecodingStream xdr = new XdrBufferDecodingStream (auth.getShorthandCred()); xdr.beginDecoding(); int credv1 = xdr.xdrDecodeInt(); int credv2 = xdr.xdrDecodeInt(); xdr.endDecoding(); if (credv1 != ~credv2) { Console.Out.WriteLine("AUTH_SHORT rejected"); throw (new OncRpcAuthenticationException(OncRpcAuthStatus.ONCRPC_AUTH_REJECTEDCRED)); } if ((++shorthandCredCounter % 3) == 0) { System.Console.Out.WriteLine("AUTH_SHORT too old"); throw (new OncRpcAuthenticationException(OncRpcAuthStatus .ONCRPC_AUTH_REJECTEDCRED)); } Console.Out.WriteLine("AUTH_SHORT accepted"); } } switch (procedure) { case 0: { // // Now dispatch incomming calls... // // // The usual ONC/RPC PING (aka "NULL" procedure) // call.retrieveCall(XdrVoid.XDR_VOID); call.reply(XdrVoid.XDR_VOID); break; } case 1: { // // echo string parameter // XdrString param = new XdrString(); call.retrieveCall(param); System.Console.Out.WriteLine("Parameter: \"" + param.stringValue() + "\""); call.reply(param); break; } case 42: { // // This is a special call to shut down the server... // if ((program == 42) && (version == 42)) { call.retrieveCall(XdrVoid.XDR_VOID); call.reply(XdrVoid.XDR_VOID); shutdown(); break; } break; } default: { // // For all unknown calls, send back an error reply. // call.failProcedureUnavailable(); break; } } }