Annotation of src/hmiipx.h, revision 1.1.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.