dcmnet/include/dcmtk/dcmnet/dul.h

00001 /*
00002           Copyright (C) 1993, 1994, RSNA and Washington University
00003 
00004           The software and supporting documentation for the Radiological
00005           Society of North America (RSNA) 1993, 1994 Digital Imaging and
00006           Communications in Medicine (DICOM) Demonstration were developed
00007           at the
00008                   Electronic Radiology Laboratory
00009                   Mallinckrodt Institute of Radiology
00010                   Washington University School of Medicine
00011                   510 S. Kingshighway Blvd.
00012                   St. Louis, MO 63110
00013           as part of the 1993, 1994 DICOM Central Test Node project for, and
00014           under contract with, the Radiological Society of North America.
00015 
00016           THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND NEITHER RSNA NOR
00017           WASHINGTON UNIVERSITY MAKE ANY WARRANTY ABOUT THE SOFTWARE, ITS
00018           PERFORMANCE, ITS MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
00019           USE, FREEDOM FROM ANY COMPUTER DISEASES OR ITS CONFORMITY TO ANY
00020           SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND PERFORMANCE OF
00021           THE SOFTWARE IS WITH THE USER.
00022 
00023           Copyright of the software and supporting documentation is
00024           jointly owned by RSNA and Washington University, and free access
00025           is hereby granted as a license to use this software, copy this
00026           software and prepare derivative works based upon this software.
00027           However, any distribution of this software source code or
00028           supporting documentation or derivative works (source code and
00029           supporting documentation) must include the three paragraphs of
00030           the copyright notice.
00031 */
00032 /* Copyright marker.  Copyright will be inserted above.  Do not remove */
00033 /*
00034 ** @$=@$=@$=
00035 */
00036 /*
00037 **        DICOM 93
00038 **        Electronic Radiology Laboratory
00039 **      Mallinckrodt Institute of Radiology
00040 **    Washington University School of Medicine
00041 **
00042 ** Module Name(s):
00043 ** Author, Date:  Stephen M. Moore, 14-Apr-1993
00044 ** Intent:        This file defines the public structures and constants
00045 **                and the function prototypes for the DUL (DICOM Upper
00046 **                Layer) facility.
00047 ** Last Update:   $Author: joergr $, $Date: 2010-10-14 13:17:22 $
00048 ** Revision:      $Revision: 1.30 $
00049 ** Status:        $State: Exp $
00050 */
00051 
00052 
00053 #ifndef DUL_IS_IN
00054 #define DUL_IS_IN 1
00055 
00056 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
00057 
00058 #include "dcmtk/ofstd/ofglobal.h"
00059 #include "dcmtk/ofstd/oftypes.h"
00060 #include "dcmtk/ofstd/ofcast.h"
00061 #include "dcmtk/dcmnet/extneg.h"
00062 #include "dcmtk/dcmnet/dicom.h"
00063 #include "dcmtk/dcmnet/dcuserid.h"
00064 
00065 class DcmTransportConnection;
00066 class DcmTransportLayer;
00067 class LST_HEAD;
00068 
00075 extern OFGlobal<OFBool> dcmDisableGethostbyaddr;   /* default OFFalse */
00076 
00082 extern OFGlobal<OFBool> dcmStrictRoleSelection;   /* default OFFalse */
00083 
00087 extern OFGlobal<Sint32> dcmConnectionTimeout;   /* default -1 */
00088 
00093 extern OFGlobal<int> dcmExternalSocketHandle;   /* default -1 */
00094 
00101 extern OFGlobal<const char *> dcmTCPWrapperDaemonName;   /* default NULL */
00102 
00103 /* Global option flag for compatibility with DCMTK releases prior to version 3.0.
00104  * Default (0) is automatic handling, which should work in most cases.
00105  */
00106 extern OFGlobal<unsigned long> dcmEnableBackwardCompatibility;
00107 
00108 #ifndef DUL_KEYS
00109 #define DUL_KEYS 1
00110 typedef void DUL_NETWORKKEY;
00111 typedef void DUL_ASSOCIATIONKEY;
00112 typedef unsigned char DUL_PRESENTATIONCONTEXTID;
00113 #endif
00114 
00118 /*  Define a structure containing fixed length fields that can
00119  *  be used for requesting or accepting an association.  The
00120  *  lengths of "titles" and "names" are specified by the DICOM
00121  *  protocol document.  The fields in the structure are made
00122  *  longer to allow for zero-terminators.  DICOM doesn't know
00123  *  about node names, but the DUL_ package needs them.
00124  */
00125 
00126 #define DUL_LEN_TITLE  OFstatic_cast(size_t, 16)  /* required by DICOM protocol */
00127 #define DUL_LEN_NAME   OFstatic_cast(size_t, 64)  /* required by DICOM protocol */
00128 #define DUL_LEN_UID    OFstatic_cast(size_t, 64)  /* required by DICOM protocol */
00129 #define DUL_LEN_NODE   OFstatic_cast(size_t, 127) /* should be "big enough" */
00130 
00131 
00132 /* DICOM PDU Types */
00133 
00134 #define DUL_TYPEASSOCIATERQ  OFstatic_cast(unsigned char, 0x01)
00135 #define DUL_TYPEASSOCIATEAC  OFstatic_cast(unsigned char, 0x02)
00136 #define DUL_TYPEASSOCIATERJ  OFstatic_cast(unsigned char, 0x03)
00137 #define DUL_TYPEDATA         OFstatic_cast(unsigned char, 0x04)
00138 #define DUL_TYPERELEASERQ    OFstatic_cast(unsigned char, 0x05)
00139 #define DUL_TYPERELEASERP    OFstatic_cast(unsigned char, 0x06)
00140 #define DUL_TYPEABORT        OFstatic_cast(unsigned char, 0x07)
00141 
00142 #define DUL_MAXTYPE          OFstatic_cast(unsigned char, 0x07)
00143 
00144 class DUL_ModeCallback
00145 {
00146 public:
00147 
00149   virtual ~DUL_ModeCallback() {}
00150 
00154   virtual void callback(unsigned long mode) = 0;
00155 };
00156 
00157 typedef struct {
00158     char applicationContextName[DUL_LEN_NAME + 1];
00159     char callingAPTitle[DUL_LEN_TITLE + 1];
00160     char calledAPTitle[DUL_LEN_TITLE + 1];
00161     char respondingAPTitle[DUL_LEN_TITLE + 1];
00162     unsigned long maxPDU;
00163     unsigned short result;
00164     unsigned short resultSource;
00165     unsigned short diagnostic;
00166     char callingPresentationAddress[64];
00167     char calledPresentationAddress[64];
00168     LST_HEAD *requestedPresentationContext;
00169     LST_HEAD *acceptedPresentationContext;
00170     unsigned short maximumOperationsInvoked;
00171     unsigned short maximumOperationsPerformed;
00172     char callingImplementationClassUID[DICOM_UI_LENGTH + 1];
00173     char callingImplementationVersionName[16 + 1];
00174     char calledImplementationClassUID[DICOM_UI_LENGTH + 1];
00175     char calledImplementationVersionName[16 + 1];
00176     unsigned long peerMaxPDU;
00177     SOPClassExtendedNegotiationSubItemList *requestedExtNegList;
00178     SOPClassExtendedNegotiationSubItemList *acceptedExtNegList;
00179     UserIdentityNegotiationSubItemRQ *reqUserIdentNeg;
00180     UserIdentityNegotiationSubItemAC *ackUserIdentNeg;
00181 
00182     OFBool useSecureLayer;
00183 }   DUL_ASSOCIATESERVICEPARAMETERS;
00184 
00185 typedef enum {
00186     DUL_SC_ROLE_NONE,
00187     DUL_SC_ROLE_DEFAULT,
00188     DUL_SC_ROLE_SCU,
00189     DUL_SC_ROLE_SCP,
00190     DUL_SC_ROLE_SCUSCP
00191 }   DUL_SC_ROLE;
00192 
00193 #define DUL_PRESENTATION_ACCEPT     0
00194 #define DUL_PRESENTATION_REJECT_USER    1
00195 #define DUL_PRESENTATION_REJECT_NOREASON  2
00196 #define DUL_PRESENTATION_REJECT_ABSTRACT_SYNTAX 3
00197 #define DUL_PRESENTATION_REJECT_TRANSFER_SYNTAX 4
00198 
00199 typedef OFList<char *> DUL_TRANSFERSYNTAXLIST;
00200 
00201 typedef struct {
00202     void *reserved[2];
00203     DUL_PRESENTATIONCONTEXTID presentationContextID;
00204     char abstractSyntax[DUL_LEN_UID + 1];
00205     LST_HEAD *proposedTransferSyntax;
00206     char acceptedTransferSyntax[DUL_LEN_UID + 1];
00207     unsigned char result;
00208     DUL_SC_ROLE proposedSCRole;
00209     DUL_SC_ROLE acceptedSCRole;
00210 }   DUL_PRESENTATIONCONTEXT;
00211 
00212 typedef struct {
00213     void *reserved[2];
00214     char transferSyntax[DUL_LEN_UID + 1];
00215 }   DUL_TRANSFERSYNTAX;
00216 
00217 typedef struct dul_abortitems {
00218     unsigned char result;
00219     unsigned char source;
00220     unsigned char reason;
00221 }   DUL_ABORTITEMS;
00222 
00223 typedef enum {
00224     DUL_COMMANDPDV,   /* A command PDV inside a data PDU */
00225     DUL_DATASETPDV
00226 }   /* A data set PDV inside a data PDU */
00227     DUL_DATAPDV;
00228 
00229 typedef enum {
00230     DUL_BLOCK,      /* Block on an operation (read, request) */
00231     DUL_NOBLOCK
00232 }   /* Or return immediately if nothing avail */
00233     DUL_BLOCKOPTIONS;
00234 
00235 typedef struct {
00236     unsigned long fragmentLength;
00237     unsigned char presentationContextID;
00238     DUL_DATAPDV pdvType;
00239     OFBool lastPDV;
00240     void *data;
00241 }   DUL_PDV;
00242 
00243 typedef struct {
00244     unsigned long count;
00245     void *scratch;
00246     unsigned long scratchLength;
00247     DUL_ABORTITEMS abort;
00248     DUL_PDV *pdv;
00249 }   DUL_PDVLIST;
00250 
00251 /*  Define the bits that go in the options field for InitializeNetwork
00252 **
00253 **  The low two bits define the byte order of messages at the DICOM
00254 **  level.  This does not define the order of user data inside of a
00255 **  DICOM PDU.
00256 */
00257 
00258 #define DUL_ORDERMASK          0x03  /* The bottom two bits */
00259 #define DUL_ORDERLITTLEENDIAN  0x01
00260 #define DUL_ORDERBIGENDIAN     0x02
00261 
00262 #define DUL_DOMAINMASK         0x04
00263 #define DUL_FULLDOMAINNAME     0x04
00264 
00265 #define DUL_AEREQUESTOR        "AE REQUESTOR"
00266 #define DUL_AEACCEPTOR         "AE ACCEPTOR"
00267 #define DUL_AEBOTH             "AE BOTH"
00268 
00269 /*  These macros define results and reasons for rejecting an association
00270 **  request.  Result is permanent or transient.  There are a number of
00271 **  different reasons for rejecting requests that occur at different layers
00272  */
00273 #define DUL_REJ_RSLTPERMANENT  0x01
00274 #define DUL_REJ_RSLTTRANSIENT  0x02
00275 
00276 /*  These macros define parameters used to construct an ABORT PDU.
00277 **  These include the source of the abort (SCU or SCP) and the
00278 **  reason for the abort.
00279 */
00280 
00281 #define DUL_SCU_INITIATED_ABORT           0x00
00282 #define DUL_SCP_INITIATED_ABORT           0x02
00283 
00284 #define DUL_ABORTSERVICEUSER              0x00
00285 #define DUL_ABORTSERVICEPROVIDER          0x02
00286 
00287 #define DUL_ABORTNOREASON                 0x00
00288 #define DUL_ABORTUNRECOGNIZEDPDU          0x01
00289 #define DUL_ABORTUNEXPECTEDPDU            0x02
00290 #define DUL_ABORTUNRECOGNIZEDPDUPARAM     0x04
00291 #define DUL_ABORTUNEXPECTEDPDUPARAM       0x05
00292 #define DUL_ABORTINVALIDPDUPARAM          0x06
00293 
00294 /*  These macros define parameters used to construct a REJECT PDU.
00295 **  These include the source of the reject (DICOM UL service-user,
00296 **  (DICOM UL service-provider) and the reason for the reject.
00297 */
00298 #define DUL_REJECT_PERMANENT              0x01
00299 #define DUL_REJECT_TRANSIENT              0x02
00300 
00301 #define DUL_ULSU_REJECT                   0x01
00302 #define DUL_ULSP_ACSE_REJECT              0x02
00303 #define DUL_ULSP_PRESENTATION_REJECT      0x03
00304 
00305 #define DUL_ULSU_REJ_NOREASON             0x01
00306 #define DUL_ULSU_REJ_UNSUP_APP_CTX_NAME   0x02
00307 #define DUL_ULSU_REJ_UNREC_CALLING_TITLE  0x03
00308 #define DUL_ULSU_REJ_UNREC_CALLED_TITLE   0x07
00309 
00310 #define DUL_ULSP_ACSE_REJ_NOREASON        0x01
00311 #define DUL_ULSP_ACSE_UNSUP_PROTOCOL      0x02
00312 
00313 #define DUL_ULSP_PRES_REJ_TEMP_CONGEST    0x01
00314 #define DUL_ULSP_PRES_REJ_LIMIT           0x02
00315 
00316 #define DUL_ABORTNOREASON                 0x00
00317 #define DUL_ABORTUNRECOGNIZEDPDU          0x01
00318 #define DUL_ABORTUNEXPECTEDPDU            0x02
00319 #define DUL_ABORTUNRECOGNIZEDPDUPARAM     0x04
00320 #define DUL_ABORTUNEXPECTEDPDUPARAM       0x05
00321 #define DUL_ABORTINVALIDPDUPARAM          0x06
00322 
00323 /* Define a set of constants and types that let the user get information
00324 ** about the Association
00325 */
00326 
00327 typedef enum {
00328     DUL_K_INTEGER,    /* An integer type */
00329     DUL_K_STRING      /* A string type */
00330 }   DUL_DATA_TYPE;
00331 typedef enum {
00332     DUL_K_MAX_PDV_XMIT
00333 }   DUL_ASSOCIATION_PARAMETER;
00334 
00335 #define DUL_TIMEOUT 180
00336 
00337 /* Operating mode flags as defined in the 1993 toolkit specification.
00338 ** Needed for backward compatibility with DCMTK releases prior to 3.0
00339 ** (and possibly older CTN releases).
00340 */
00341 
00342 #define DUL_DULCOMPAT     2768240730UL
00343 #define DUL_DIMSECOMPAT   327680UL
00344 #define DUL_MAXPDUCOMPAT  4278190335UL
00345 
00346 /* Define the function prototypes for this facility.
00347 **
00348 ** First set of functions are for establishing the network and associations.
00349 */
00350 
00351 OFCondition
00352 DUL_AcknowledgeAssociationRQ(
00353   DUL_ASSOCIATIONKEY ** association,
00354   DUL_ASSOCIATESERVICEPARAMETERS * params,
00355   int activatePDUStorage);
00356 
00357 OFCondition
00358 DUL_InitializeNetwork(
00359   const char *mode,
00360   void *param,
00361   int timeout,
00362   unsigned long
00363   options,
00364   DUL_NETWORKKEY ** network);
00365 
00366 OFCondition
00367 DUL_ReceiveAssociationRQ(
00368   DUL_NETWORKKEY ** net,
00369   DUL_BLOCKOPTIONS blk,
00370   int timeout,
00371   DUL_ASSOCIATESERVICEPARAMETERS * parameters,
00372   DUL_ASSOCIATIONKEY ** association,
00373   int activatePDUStorage);
00374 
00375 OFCondition
00376 DUL_RejectAssociationRQ(
00377   DUL_ASSOCIATIONKEY ** association,
00378   DUL_ABORTITEMS * params,
00379   int activatePDUStorage);
00380 
00381 OFCondition
00382 DUL_RequestAssociation(
00383   DUL_NETWORKKEY ** network,
00384   DUL_ASSOCIATESERVICEPARAMETERS * params,
00385   DUL_ASSOCIATIONKEY ** association,
00386   int activatePDUStorage);
00387 
00388 /* Define functions for releasing/aborting Associations.
00389 */
00390 OFCondition DUL_AbortAssociation(DUL_ASSOCIATIONKEY ** association);
00391 OFCondition DUL_DropAssociation(DUL_ASSOCIATIONKEY ** association);
00392 OFCondition DUL_DropNetwork(DUL_NETWORKKEY ** network);
00393 OFCondition DUL_ReleaseAssociation(DUL_ASSOCIATIONKEY ** association);
00394 OFCondition DUL_AcknowledgeRelease(DUL_ASSOCIATIONKEY ** association);
00395 
00396 /* Functions for reading/write PDVs inside P DATA PDUs.
00397 */
00398 OFCondition
00399 DUL_ReadPDVs(DUL_ASSOCIATIONKEY ** association,
00400        DUL_PDVLIST * pdvList, DUL_BLOCKOPTIONS block, int timeout);
00401 OFCondition
00402 DUL_WritePDVs(DUL_ASSOCIATIONKEY ** association,
00403         DUL_PDVLIST * pdvList);
00404 OFCondition DUL_NextPDV(DUL_ASSOCIATIONKEY ** association, DUL_PDV * pdv);
00405 
00406 
00407 /* Miscellaneous functions.
00408 */
00409 OFCondition
00410 DUL_AssociationParameter(DUL_ASSOCIATIONKEY ** association,
00411        DUL_ASSOCIATION_PARAMETER param, DUL_DATA_TYPE type,
00412        void *address, size_t length);
00413 OFCondition
00414 DUL_MakePresentationCtx(DUL_PRESENTATIONCONTEXT ** ctx,
00415          DUL_SC_ROLE proposedSCRole, DUL_SC_ROLE acceptedSCRole,
00416 DUL_PRESENTATIONCONTEXTID ctxID, unsigned char reason, const char *abstractSyntax,
00417       const char *transferSyntax,...);
00418 OFString& DUL_DumpParams(OFString& str, DUL_ASSOCIATESERVICEPARAMETERS * params);
00419 OFString& DUL_DumpConnectionParameters(OFString& str, DUL_ASSOCIATIONKEY *association);
00420 
00421 OFCondition DUL_ClearServiceParameters(DUL_ASSOCIATESERVICEPARAMETERS * params);
00422 void DUL_DefaultServiceParameters(DUL_ASSOCIATESERVICEPARAMETERS * params);
00423 OFString& dumpExtNegList(OFString& str, SOPClassExtendedNegotiationSubItemList& lst);
00424 
00425 /*
00426 ** Additional functions (from dulextra.cc) needed to support
00427 ** selecting amongst several concurrent associations.
00428 ** Andrew Hewett, Institute OFFIS, Oldenburg, Germany.
00429 */
00430 
00431 OFBool
00432 DUL_dataWaiting(DUL_ASSOCIATIONKEY * callerAssociation, int timeout);
00433 int
00434 DUL_networkSocket(DUL_NETWORKKEY * callerNet);
00435 OFBool
00436 DUL_associationWaiting(DUL_NETWORKKEY * callerNet, int timeout);
00437 
00438 /*
00439  * functions allowing to retrieve raw A-ASSOCIATE PDUs from the DUL layer
00440  */
00441 void DUL_activateAssociatePDUStorage(DUL_ASSOCIATIONKEY *dulassoc);
00442 void DUL_returnAssociatePDUStorage(DUL_ASSOCIATIONKEY *dulassoc, void *& pdu, unsigned long& pdusize);
00443 
00444 /* get pointer to transport connection from opaque association pointer */
00445 DcmTransportConnection *DUL_getTransportConnection(DUL_ASSOCIATIONKEY * callerAssociation);
00446 
00447 /* change transport layer */
00448 OFCondition DUL_setTransportLayer(DUL_NETWORKKEY *callerNetworkKey, DcmTransportLayer *newLayer, int takeoverOwnership);
00449 
00450 /* activate compatibility mode and callback */
00451 void DUL_activateCompatibilityMode(DUL_ASSOCIATIONKEY *dulassoc, unsigned long mode);
00452 void DUL_activateCallback(DUL_ASSOCIATIONKEY *dulassoc, DUL_ModeCallback *cb);
00453 
00454 /*
00455  * function allowing to retrieve the peer certificate from the DUL layer
00456  */
00457 unsigned long DUL_getPeerCertificateLength(DUL_ASSOCIATIONKEY *dulassoc);
00458 unsigned long DUL_getPeerCertificate(DUL_ASSOCIATIONKEY *dulassoc, void *buf, unsigned long bufLen);
00459 
00460 /*
00461  * functions for multi-process servers
00462  */
00463 
00469 OFBool DUL_processIsForkedChild();
00470 
00475 void DUL_markProcessAsForkedChild();
00476 
00489 void DUL_requestForkOnTransportConnectionReceipt(int argc, char *argv[]);
00490 
00491 
00493 void DUL_DumpParams(DUL_ASSOCIATESERVICEPARAMETERS * params);
00495 void DUL_DumpConnectionParameters(DUL_ASSOCIATIONKEY *association, STD_NAMESPACE ostream& outstream);
00497 void dumpExtNegList(SOPClassExtendedNegotiationSubItemList& lst);
00498 
00499 #endif
00500 
00501 /*
00502 ** CVS Log
00503 ** $Log: dul.h,v $
00504 ** Revision 1.30  2010-10-14 13:17:22  joergr
00505 ** Updated copyright header. Added reference to COPYRIGHT file.
00506 **
00507 ** Revision 1.29  2010-08-26 09:28:02  joergr
00508 ** Fixed incorrect behavior of association acceptors during SCP/SCU role
00509 ** selection negotiation.
00510 ** Introduced new global flag which allows for rejecting presentation contexts
00511 ** in case of an unsuccessful SCP/SCU role selection (disabled by default).
00512 **
00513 ** Revision 1.28  2009-12-08 16:37:52  joergr
00514 ** Fixed inconsistent source code formatting.
00515 **
00516 ** Revision 1.27  2009-11-18 11:53:58  uli
00517 ** Switched to logging mechanism provided by the "new" oflog module.
00518 **
00519 ** Revision 1.26  2008-04-17 15:28:33  onken
00520 ** Reworked and extended User Identity Negotiation code.
00521 **
00522 ** Revision 1.25  2007-09-07 08:49:12  onken
00523 ** Added basic support for Extended Negotiation of User Identity.
00524 **
00525 ** Revision 1.24  2006/08/15 16:04:29  meichel
00526 ** Updated the code in module dcmnet to correctly compile when
00527 **   all standard C++ classes remain in namespace std.
00528 **
00529 ** Revision 1.23  2005/12/12 15:15:08  meichel
00530 ** Added missing include dependency
00531 **
00532 ** Revision 1.22  2005/12/09 14:48:35  meichel
00533 ** Added missing virtual destructors
00534 **
00535 ** Revision 1.21  2005/12/08 16:02:23  meichel
00536 ** Changed include path schema for all DCMTK header files
00537 **
00538 ** Revision 1.20  2005/11/25 11:31:11  meichel
00539 ** StoreSCP now supports multi-process mode both on Posix and Win32 platforms
00540 **   where a separate client process is forked for each incoming association.
00541 **
00542 ** Revision 1.19  2004/02/25 12:31:15  meichel
00543 ** Added global option flag for compatibility with very old DCMTK releases in the
00544 **   DICOM upper layer and ACSE code. Default is automatic handling, which should
00545 **   work in most cases.
00546 **
00547 ** Revision 1.18  2003/08/14 09:01:37  meichel
00548 ** Adapted type casts to new-style typecast operators defined in ofcast.h
00549 **
00550 ** Revision 1.17  2003/06/10 13:37:36  meichel
00551 ** Added support for TCP wrappers in DICOM network layer
00552 **
00553 ** Revision 1.16  2003/06/06 13:07:29  meichel
00554 ** Introduced global flag dcmExternalSocketHandle which allows
00555 **   to pass an already opened socket file descriptor to dcmnet.
00556 **
00557 ** Revision 1.15  2003/06/02 16:44:11  meichel
00558 ** Renamed local variables to avoid name clashes with STL
00559 **
00560 ** Revision 1.14  2002/11/28 16:57:36  meichel
00561 ** Added global flag dcmConnectionTimeout that defines a timeout for
00562 **   outgoing association requests in the DICOM upper layer.
00563 **
00564 ** Revision 1.13  2001/11/27 09:54:33  wilkens
00565 ** Updated storescp. 6 new options (--output-directory, --sort-conc-studies,
00566 ** --exec-on-reception, --exec-on-eostudy, --rename-on-eostudy, and
00567 ** --eostudy-timeout) implemented (requirements from GO-Kard).
00568 **
00569 ** Revision 1.12  2001/10/12 10:18:27  meichel
00570 ** Replaced the CONDITION types, constants and functions in the dcmnet module
00571 **   by an OFCondition based implementation which eliminates the global condition
00572 **   stack.  This is a major change, caveat emptor!
00573 **
00574 ** Revision 1.11  2001/09/26 12:28:59  meichel
00575 ** Implemented changes in dcmnet required by the adaptation of dcmdata
00576 **   to class OFCondition.  Removed some unused code.
00577 **
00578 ** Revision 1.10  2001/06/01 11:02:02  meichel
00579 ** Implemented global flag and command line option to disable reverse
00580 **   DNS hostname lookup using gethostbyaddr when accepting associations.
00581 **
00582 ** Revision 1.9  2000/10/10 12:06:54  meichel
00583 ** Updated transport layer error codes and routines for printing
00584 **   connection parameters.
00585 **
00586 ** Revision 1.8  2000/08/10 14:50:54  meichel
00587 ** Added initial OpenSSL support.
00588 **
00589 ** Revision 1.7  2000/06/07 08:57:22  meichel
00590 ** dcmnet ACSE routines now allow to retrieve a binary copy of the A-ASSOCIATE
00591 **   RQ/AC/RJ PDUs, e.g. for logging purposes.
00592 **
00593 ** Revision 1.6  1999/04/19 08:39:27  meichel
00594 ** Added experimental support for extended SOP class negotiation.
00595 **
00596 ** Revision 1.5  1999/03/29 11:19:59  meichel
00597 ** Cleaned up dcmnet code for char* to const char* assignments.
00598 **
00599 ** Revision 1.4  1998/06/29 12:14:27  meichel
00600 ** Removed some name clashes (e.g. local variable with same
00601 **   name as class member) to improve maintainability.
00602 **   Applied some code purifications proposed by the gcc 2.8.1 -Weffc++ option.
00603 **
00604 ** Revision 1.3  1997/07/21 08:40:11  andreas
00605 ** - Replace all boolean types (BOOLEAN, CTNBOOLEAN, DICOM_BOOL, BOOL)
00606 **   with one unique boolean type OFBool.
00607 **
00608 ** Revision 1.2  1997/01/13 15:53:02  hewett
00609 ** Added missing function prototypes (required for CodeWarrior 10).
00610 **
00611 ** Revision 1.1.1.1  1996/03/26 18:38:44  hewett
00612 ** Initial Release.
00613 **
00614 **
00615 */


Generated on 30 Nov 2010 for OFFIS DCMTK Version 3.5.5 20101130 by Doxygen 1.5.1