Category : C Source Code
Archive   : KERMCU04.ZIP
Filename : CKOLAT.H

 
Output of file : CKOLAT.H contained in archive : KERMCU04.ZIP
/* Definitions for the C interface to the DECnet LAT protocol */
/* Part of DEC PathWorks 2.0 for OS/2 */

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define def_num_sessions 4 /* default number of sessions */
#define max_num_sessions 10 /* maximum number of sessions */
#define min_num_sessions 4 /* minimum number of sessions */

#define def_num_buffers 4 /* default number of buffers */
#define max_num_buffers 8 /* maximum number of buffers */
#define min_num_buffers 2 /* minimun number of buffers */

#define def_num_services 50 /* default number of services */
#define max_num_services 2048 /* maximum number of services */
#define min_num_services 10 /* minimum number of services */

#define def_num_retx 8 /* default number of retransmit */
#define max_num_retx 255 /* maximum number of retransmit */
#define min_num_retx 4 /* minimum number of retransmit */

#define SEND_CHAR 1 /* send a character */
#define GET_CHAR 2 /* read a character */
#define GET_CHAR_BLK 3 /* read a block of characters */
#define GET_STATUS 4 /* slot status */
#define START_SESSION 5 /* start a session */
#define START_SESS_PSW 6 /* start a session with specified password */
#define STOP_SESSION 7 /* stop a session */
#define SEND_BREAK 8 /* send a break signal */
#define ADD_PREFER_NODE 9 /* add preferred node */
#define DEL_PREFER_NODE 10 /* delete preferred node */
#define RESET_COUNTERS 11 /* reset lat counter */
#define READ_COUNTERS 12 /* read lat internal counters */
#define RESET_SERVICES 13 /* reset service index */
#define READ_SERVICES 14 /* read a service entry */
#define READ_SCB 15 /* read all of the scbs */
#define READ_VCB 16 /* read all of the vcbs */
#define READ_LMCB 17 /* read the lmcb */
#define READ_LATINFO 18 /* read lat info */
#define READ_SERVICE_ENTRY 19 /* read service entry info */
#define SET_RETX_LIMIT 20 /* set retransmit limit in lmcb */
#define SET_MULTI_STATE 21 /* set the state of the multicast receiver */
#define SET_GROUP_CODE 22 /* enable a specific group code */
#define CLEAR_GROUP_CODE 23 /* clear a specific group code */

/* Bit defination of LatStatus in LAT_CB */
#define LS_NoError 0x0000 /* No error for this function */
#define LS_NoChar 0x8000 /* No character read */
#define LS_CharNotSent 0x8000 /* Character not sent */
#define LS_BrkNotSent 0x8000 /* Break not sent */
#define LS_NotInRun 0x4000 /* Slot session not in run state */
#define LS_TxBufEmpty 0x2000 /* Transmit buffer empty */
#define LS_InvalidSize 0x1000 /* Bad size specified */
#define LS_SesStart 0x0800 /* Session in starting state */
#define LS_InvalidHdl 0x0400 /* Invalid session handle */
#define LS_NoMoreSession 0x0400 /* No more slot session available */
#define LS_TxBufBusy 0x0200 /* Unable to queue transmit data */
#define LS_NoCircuit 0x0200 /* No more virtual circuit */
#define LS_RxData 0x0100 /* Receive data available */
#define LS_NoService 0x0100 /* Service name not found */
#define LS_NoMoreService 0x0080 /* no more new service */
#define LS_NoDLL 0x0040 /* No DLL handle */
#define LS_OtherError 0x0020 /* another error has happened */
#define LS_IllegalFnc 0xFFFF /* illegal function */

/* LAT_CB Session Status Word */
#define SS_TxBufBusy 0x00 /* Slot session tx buffer busy */
#define SS_Stopped 0x08 /* Slot session stopped! */
#define SS_HostStop 0x10 /* Host sent stop slot */

#define IS_InitOK 0x0001 /* LAT driver init'ed */
#define IS_SessionErr 0x0002 /* Session specifier error */
#define IS_BufferErr 0x0004 /* Buffer specifier error */
#define IS_ServiceErr 0x0008 /* Service specifier error */
#define IS_ReTxErr 0x0010 /* Retransmit specifier error */
#define IS_GetMemErr 0x0800 /* Allocate memory error */
#define IS_LatPortailFailed 0x2000 /* Unable to open LAT portal */
#define IS_NeedDll 0x4000 /* DLL driver needed */
#define IS_AlreadyInit 0x8000 /* LAT driver already init'ed */

struct lat_init {
uint MaxSessions; /* Maximum number of slot sessions */
uint MaxBuffers; /* Maximum number of buffers per session */
uint MaxServices; /* Maximum number of services */
uint ReTxLimit; /* Retransmit limit */
uint InitStatus; /* Initialization status */
};

struct lat_info {
uchar vermjr;
uchar vermir;
uint NSessions;
uint NBuffers;
uint NServices;
uint scbsize;
};

struct service_info {
uchar node_leng; /* node name length */
uchar node_name[16]; /* node name string */
uchar node_addr[6]; /* node address */
uchar node_status; /* node status */
uchar serv_rate; /* service rating */
uchar serv_leng; /* service length */
uchar serv_name[16]; /* service string */
uchar serv_status; /* service status */
};

struct scb_info {
uint scb_inuse; /* scb inuse flag */
uint reserved1; /* reserved */
uint reserved2; /* reserved */
};

struct lat_cb {
uchar LatFunction; /* function code */
uint SessionHandle; /* lat handle */
uint SessionStatus; /* Session status */
uint StopReason; /* Stop reason */
uint BufferSize; /* size of buffer */
ulong *BufferPtr; /* pointer to buffer */
ulong WaitTime; /* waiting time */
uchar CharByte; /* I/O character */
uint LatStatus; /* function returned status */
};

struct lat_count {
uint n_count; /* number of counters */
uint ids[12];
ulong c1;
ulong c2;
ulong c3;
ulong c4;
ulong c5;
ulong c6;
ulong c7;
ulong c8;
ulong c9;
ulong c10;
ulong c11;
ulong c12;
ulong c13;
ulong c14;
};


struct lat_counter
{
ulong second_since_zeroed;
ulong messages_transmitted;
ulong messages_received;
ulong messages_retransmitted;
ulong out_of_seq_mess_received;
ulong illegal_messages_received;
ulong illegal_slots_received;
ulong buf_que_entry_unavailable;
ulong transmit_buffer_unavailable;
ulong invalid_messages_received;
ulong invalid_slot_received;
ulong invalid_multicast_received;
};

struct lmcb_struct {
uchar lat_mess_retrans_limit; /* retransmit limit */
uchar group_enable[32]; /* group code */
uchar num_active_circuit; /* number of active circuits */
uchar num_active_session; /* number of active sessions */
uint lat_min_rcv_datagram_size; /* minimun datagram size */
uchar protocol_version; /* protocol version */
uchar protocol_eco;
uchar max_sim_slots; /* maximum slots on this circuit */
uchar nbr_dl_bufs; /* number of datalink buffers minus 1 */
uchar server_circuit_timer; /* data transfer timer */
uchar lat_keep_alive_timer; /* keep alive timer (sec)*/
uint facility_number; /* Not used */
uint product_code; /* PC LAT server assigned code */
uchar server_retransmit_timer; /* unacked retransmit timer(sec) */
uchar lat_min_rcv_slot_size; /* minimum slot size */
uchar lat_min_rcv_att_slot_size; /* minimum attention slot size */
uchar server_name_len; /* lat server name length */
uchar server_name[16]; /* lat server name */
};

struct service_entry {
uint node_pointer;
uchar service_rating;
uchar service_name_len;
uchar service_name[16];
uchar service_status_flags;
};

struct node_entry {
uchar node_name_len;
uchar node_name[16];
uchar node_address[6];
uchar status_flag;
uchar msg_incarnation;
uchar node_change_flags;
};

struct vcb_struct {
uint vc_state; /* VC state */
uchar circuit_name[18]; /* circuit name */
uchar vc_type; /* DCB type */
uchar vc_format; /* FORMAT of portal */
uchar rem_address[6]; /* Remote adapter address */
uchar loc_address[6]; /* local adapter address */
uint cp_typ; /* Protocol type */
uint cpad; /* padding */
uchar cctl; /* mo' paddin' */
uchar cp_ident[5]; /* even mo' paddin' */
uint cportal_id; /* portal number */
ulong unacked_xmtb; /* unacked message */
uint unacked_xmtb_len;
uchar param_len[5]; /* even mo' paddin' */
uchar msg_typ; /* message type */
uint loc_cir_id; /* local circuit ID */
uint rem_cir_id; /* remote circuit ID */
uchar nxmt; /* next message number to tx */
uchar ack; /* most recent message acked */
uchar rrf; /* response request flag */
uchar dwf; /* data waiting flag */
uchar vc_status; /* number of sessions */
uint slot_index; /* index to first slot session on this circ */
uint last_xmit; /* index to last slot tx'ed on this circuit */
uchar retransmit_counter; /* retransmits on this message */
uchar uxmt; /* unack'ed message # */
uchar retransmit_timer_on; /* re-transmit timer turned on */
uchar retransmit_timer; /* count down for retransmit */
uchar balanced_mode_on; /* balance mode active flag */
uint balanced_mode_timer; /* tick counts for lat_keep_alive */
uint max_buf_size; /* max tx buffer size */
uchar max_circuit_sessions; /* max circuits */
uint disconnect_reason; /* disconnect reason */
};

struct scb_struct {
uchar service[18]; /* service name */
uchar node[18];
uchar port[18];
ulong scb_sem; /**/
uint session_status; /* session status word */
uint stop_reason; /* session stop reason */
uint slot_state; /* slot state 0=halted */
uchar local_credits; /* available credits to tx slots */
uint vcb_offset;
uint vcb_segment;
uint back_slot; /* index to back slot on this circ */
uint forward_slot; /* index to forward slot */
uchar rem_slot_id; /* remote slot connect ID */
uchar loc_slot_id; /* local slot ID */
uchar slot_byte_count; /* number of bytes in tx_slot_data */
uchar remote_credits; /* credits from remote node */
uchar tx_slot_data[255]; /* data to be tx'ed */
uchar num_slots; /* number of slots in this buffer */
uchar num_occupied; /* number of slots in use */
uchar next_rx_slot; /* index to next slot to be used */
uchar cur_buf_slot; /* index to current slot in use */
uint rx_slot_pntr; /* offset to next char to be taken */
uint slot_ptr_table[2]; /* pointers to the slots */
};

struct flagbits {
unsigned SW_duplicate : 1;
unsigned SW_invalid_value : 1;
unsigned SW_found : 1;
};

struct SIB {
char schar; /* switch character */
int value; /* switch value */
int defv; /* default value */
int minv; /* min value */
int maxv; /* max value */
struct flagbits flags; /* switch status flags */
};

struct decnode {
unsigned char decnode_flags;
unsigned int decnode_address;
char decnode_name[7];
long decnode_pointer;
};




  3 Responses to “Category : C Source Code
Archive   : KERMCU04.ZIP
Filename : CKOLAT.H

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/