Annotation of src/hmiipx.h, revision 1.1

1.1     ! root        1: /****************************************************************************
        !             2: *
        !             3: *  File              : hmiipx.h
        !             4: *  Date Created      : 12/21/94
        !             5: *  Description       : ipx header information including data structures
        !             6: *
        !             7: *  Programmer(s)     : Nick Skrepetos
        !             8: *  Last Modification : 2/6/95 - 9:53:48 PM
        !             9: *  Additional Notes  :
        !            10: *
        !            11: *****************************************************************************
        !            12: *            Copyright (c) 1994-5,  HMI, Inc.  All Rights Reserved          *
        !            13: ****************************************************************************/
        !            14: 
        !            15: #ifndef  _HMI_IPX_DEFINED
        !            16: #define  _HMI_IPX_DEFINED
        !            17: 
        !            18: // equates
        !            19: #define  _IPX_INT                0x7a
        !            20: 
        !            21: // maximum number of nodes to support at once
        !            22: #define  _IPX_MAX_NODES          _NETNOW_MAX_NODES
        !            23: 
        !            24: // broadcast command
        !            25: #define  _IPX_BROADCAST          _IPX_MAX_NODES + 1
        !            26: 
        !            27: // maximum number of packets that can be in packet queue
        !            28: #define  _IPX_MAX_SEND_PACKETS   _NETNOW_MAX_SEND_PACKETS
        !            29: #define  _IPX_MAX_LISTEN_PACKETS _NETNOW_MAX_LISTEN_PACKETS
        !            30: 
        !            31: // size of the packet for transmission
        !            32: #define  _IPX_DATA_PACKET        _NETNOW_DATA_PACKET
        !            33: 
        !            34: // socket number for our use
        !            35: #define  _IPX_SOCKET             0x4545
        !            36: 
        !            37: // offset for ipx header from start of ECB area
        !            38: #define  _IPX_HEADER_OFFSET      sizeof( _IPX_ECB )
        !            39: 
        !            40: // offset for ipx data packet 
        !            41: #define  _IPX_DATA_OFFSET        _IPX_HEADER_OFFSET + sizeof( _IPX_HEADER )
        !            42: 
        !            43: // real mode memory sizes for sending and receiving
        !            44: // packets.
        !            45: #define  _IPX_REAL_SEND_SIZE     _IPX_MAX_SEND_PACKETS * \
        !            46:                                  ( _IPX_DATA_PACKET + _IPX_DATA_OFFSET )
        !            47: #define  _IPX_REAL_LISTEN_SIZE   _IPX_MAX_LISTEN_PACKETS * \
        !            48:                                  ( _IPX_DATA_PACKET + _IPX_DATA_OFFSET )
        !            49: 
        !            50: // ipx commands
        !            51: #define  _IPX_OPEN_SOCKET              0x00
        !            52: #define  _IPX_CLOSE_SOCKET             0x01
        !            53: #define  _IPX_GET_LOCAL_TARGET         0x02
        !            54: #define  _IPX_SEND_PACKET              0x03
        !            55: #define  _IPX_LISTEN_FOR_PACKET        0x04
        !            56: #define  _IPX_SCHEDULE_IPX_EVENT       0x05
        !            57: #define  _IPX_CANCEL_EVENT             0x06
        !            58: #define  _IPX_GET_INTERVAL_MARKER      0x08
        !            59: #define  _IPX_GET_INTERWORK_ADDRESS    0x09
        !            60: #define  _IPX_RELINQUISH_CONTROL       0x0a
        !            61: #define  _IPX_DISCONNECT_FROM_TARGET   0x0b
        !            62: 
        !            63: // ipx packet types
        !            64: #define  _IPX_PACKET_UNKNOWN           0x00
        !            65: #define  _IPX_PACKET_ROUTING_INFO      0x01
        !            66: #define  _IPX_PACKET_ECHO              0x02
        !            67: #define  _IPX_PACKET_ERROR             0x03
        !            68: #define  _IPX_PACKET_IPX               0x04
        !            69: #define  _IPX_PACKET_SPX               0x05
        !            70: 
        !            71: // socket types
        !            72: #define  _IPX_SOCKET_DYNAMIC           0x00
        !            73: #define  _IPX_SOCKET_SHORT_LIVED       0x00
        !            74: #define  _IPX_SOCKET_LONG_LIVED        0xff
        !            75: 
        !            76: // set structure packing to byte packing
        !            77: #pragma  pack(1)
        !            78: 
        !            79: // ipx header structure
        !            80: typedef  struct   _tagIPX_HEADER
        !            81:          {
        !            82: 
        !            83:             USHORT   wChecksum;                 // checksum, 0xffff
        !            84:             USHORT   wLength;                   // length
        !            85:             BYTE     bTransportControl;         // 
        !            86:             BYTE     bPacketType;               // usually type _IPX_PACKET_IPX
        !            87:             BYTE     bDestNetworkNumber[ 4 ];   // destination network
        !            88:             BYTE     bDestNetworkNode[ 6 ];     // destination node
        !            89:             USHORT   wDestNetworkSocket;        // destination socket
        !            90:             BYTE     bSourceNetworkNumber[ 4 ]; // source network
        !            91:             BYTE     bSourceNetworkNode[ 6 ];   // source node
        !            92:             USHORT   wSourceNetworkSocket;      // source socket
        !            93: 
        !            94:          } _IPX_HEADER;
        !            95: 
        !            96: // packet header for protected mode
        !            97: typedef  struct   
        !            98:                {
        !            99: 
        !           100:                   PSTR     pData;            // pointer to data
        !           101:                   USHORT   wLength;          // length of packet
        !           102: 
        !           103:                } _PACKET;
        !           104: 
        !           105: // real mode packet structure
        !           106: typedef  struct   
        !           107:                {
        !           108: 
        !           109:                   SHORT    wOffset;          // address of header
        !           110:                   SHORT    wSegment;         // address of header
        !           111:                   USHORT   wLength;          // length of packet
        !           112: 
        !           113:                } _REAL_PACKET;
        !           114: 
        !           115: // packet information
        !           116: typedef  union
        !           117:       {
        !           118: 
        !           119:          _PACKET        sPacket;             // protected mode version
        !           120:          _REAL_PACKET   sRealPacket;         // real mode version
        !           121: 
        !           122:       }  _ECB_PACKET;
        !           123: 
        !           124: // ECB structure
        !           125: typedef  struct   _tagIPX_ECB
        !           126:          {
        !           127: 
        !           128:             PSTR     pLinkAddress;              // link address
        !           129:             PSTR     pESRRoutine;               // ESR service routine
        !           130: 
        !           131:             BYTE     bInUse;                    // in use flag
        !           132:             BYTE     bCompletionCode;           // completion code
        !           133: 
        !           134:             USHORT   wSocket;                   // socket
        !           135:             USHORT   wConnectionID;             // returned by listen
        !           136: 
        !           137:             USHORT   wWorkSpace;                // temp work space
        !           138:             BYTE     bDriverWorkSpace[ 12 ];    // temp work space for driver
        !           139: 
        !           140:             BYTE     bImmediateAddress[ 6 ];    // address
        !           141: 
        !           142:             USHORT   wPacketCount;              // number of packets
        !           143: 
        !           144:             _ECB_PACKET sPacket[ 2 ];           // packets 386/real
        !           145: 
        !           146:          }  _IPX_ECB;
        !           147: 
        !           148: // internet address
        !           149: typedef  struct   _tagIPX_INTERNET_ADDR
        !           150:          {
        !           151: 
        !           152:             BYTE     bNetwork[ 4 ];             // network address
        !           153:             BYTE     bNode[ 6 ];                // node address
        !           154: 
        !           155:          } _IPX_INTERNET_ADDR;
        !           156: 
        !           157: // network address
        !           158: typedef  struct   _tagIPX_NETWORK_ADDR
        !           159:          {
        !           160: 
        !           161:             _IPX_INTERNET_ADDR   sInternetAddr; // internet address
        !           162:             BYTE                 bSocket[ 2 ];  // socket
        !           163: 
        !           164:          } _IPX_NETWORK_ADDR;
        !           165: 
        !           166: // local target immediate address
        !           167: typedef  struct   _tagIPX_LOCAL_TARGET
        !           168:          {
        !           169: 
        !           170:             _IPX_INTERNET_ADDR   sInternetAddr;    // internet address
        !           171:             BYTE                 bImmediate[ 6 ];  // immediate address
        !           172: 
        !           173:          } _IPX_LOCAL_TARGET;
        !           174: 
        !           175: // flags for send/listen element
        !           176: #define  _IPX_ELEMENT_ACTIVE     0x8000            // element is active
        !           177: #define  _IPX_ELEMENT_DATA       0x4000            // element has data waiting
        !           178: #define  _IPX_ELEMENT_LISTENING  0x2000            // element is listening for packet
        !           179: #define  _IPX_ELEMENT_SENDING    0x1000            // element is sending packet
        !           180: 
        !           181: // structure for send/listen elements
        !           182: typedef  struct   _tagIPX_ELEMENT
        !           183:          {
        !           184: 
        !           185:             USHORT         wFlags;                 // misc flags
        !           186:             USHORT         wOffset;                // offset into data area
        !           187:             _IPX_HEADER    sHeader;                // IPX header
        !           188:             _IPX_ECB       sECB;                   // IPX ECB
        !           189:             _IPX_ECB *     pECB;                   // pointer to ECB
        !           190:             _IPX_HEADER *  pIPXHeader;             // pointer to IPX header
        !           191:             PSTR           pHeader;                // application specific header
        !           192:             USHORT         wHSize;                 // application header size
        !           193: 
        !           194:          } _IPX_ELEMENT;
        !           195: 
        !           196: // equates for node addition
        !           197: enum
        !           198:    {
        !           199:       _IPX_ADD_COMPLETE,
        !           200:       _IPX_ADD_DUPLICATE,
        !           201:       _IPX_ADD_LIST_FULL
        !           202:    };
        !           203: 
        !           204: // equates for init error
        !           205: enum
        !           206:    {
        !           207:       _IPX_INIT_NO_ERROR,
        !           208:       _IPX_INIT_NO_MEMORY,
        !           209:       _IPX_INIT_NO_IPX,
        !           210:       _IPX_INIT_NO_SOCKET
        !           211:    };
        !           212: 
        !           213: // reset structure packing
        !           214: #pragma  pack()
        !           215: 
        !           216: #endif
        !           217: 
        !           218: // function prototypes
        !           219: BOOL   cdecl hmiIPXInitSystem           ( WORD wNodes, WORD wSocket );
        !           220: BOOL   cdecl hmiIPXUnInitSystem         ( VOID );
        !           221: BOOL   cdecl hmiIPXInstalled            ( VOID );
        !           222: BOOL   cdecl hmiIPXOpenSocket           ( WORD wSocket );
        !           223: BOOL   cdecl hmiIPXCloseSocket          ( WORD wSocket );
        !           224: VOID   cdecl hmiIPXRelinquishControl    ( VOID );
        !           225: VOID   cdecl hmiIPXListenForPacket      ( _IPX_ECB * sECB, _IPX_ECB ** pPacket );
        !           226: VOID   cdecl hmiIPXSendPacket           ( _IPX_ECB * sECB, _IPX_ECB ** pPacket, PSTR pHeader, WORD wSize  );
        !           227: VOID   cdecl hmiIPXGetInternetworkAddr  ( _IPX_INTERNET_ADDR * sInterworkAddr );
        !           228: VOID   cdecl hmiIPXGetLocalTarget       ( _IPX_LOCAL_TARGET * sNetworkAddr );
        !           229: BOOL   cdecl hmiIPXSendData             ( PSTR pHeader, WORD wHSize,
        !           230:                                          PSTR pData,   WORD wDSize,
        !           231:                                          WORD wNode );
        !           232: BOOL   cdecl hmiIPXGetData              ( PSTR pHeader, WORD wHSize,
        !           233:                                          PSTR pData,   WORD wDSize );
        !           234: BOOL   cdecl hmiIPXPostListen           ( VOID );
        !           235: WORD   cdecl hmiIPXServiceSend          ( VOID );
        !           236: VOID   cdecl hmiIPXGetListenData        ( _IPX_ECB * sECB, PSTR pHeader, WORD wSize );
        !           237: VOID   cdecl hmiIPXSortNodes            ( VOID );
        !           238: WORD   cdecl hmiIPXGetConsoleNode       ( VOID );
        !           239: WORD   cdecl hmiIPXGetActiveNodes       ( VOID );
        !           240: BOOL   cdecl hmiIPXGetHeader            (  PSTR pHeader,     WORD wHSize, 
        !           241:                                           PSTR * pPacket );
        !           242: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.