summaryrefslogtreecommitdiffstats
path: root/private/inc/sys/snet/nbt_ctrl.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/inc/sys/snet/nbt_ctrl.h')
-rw-r--r--private/inc/sys/snet/nbt_ctrl.h193
1 files changed, 193 insertions, 0 deletions
diff --git a/private/inc/sys/snet/nbt_ctrl.h b/private/inc/sys/snet/nbt_ctrl.h
new file mode 100644
index 000000000..8f78167c0
--- /dev/null
+++ b/private/inc/sys/snet/nbt_ctrl.h
@@ -0,0 +1,193 @@
+/*++
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ nbt_ctrl.h
+
+Abstract:
+
+ This file contains structure definitions for the user-level interface to
+ the NBT driver.
+
+Author:
+
+ Mike Massa (mikemas) Jan 30, 1992
+
+Revision History:
+
+ Who When What
+ -------- -------- ----------------------------------------------
+ mikemas 01-30-92 created
+
+Notes:
+
+--*/
+
+/*
+ * /usr/projects/spare/PBRAIN/SCCS/pbrainG/dev/src/include/sys/snet/0/s.nbt_control.h
+ * @(#)nbt_control.h 1.9
+ *
+ * Last delta created 15:54:26 10/25/91
+ * This file extracted 16:49:25 12/23/91
+ *
+ * Modifications:
+ *
+ * 6 Feb 1991 (RAE) Ported to SpiderTCP
+ */
+
+#ifndef _NBT_CTRL_INCLUDED_
+#define _NBT_CTRL_INCLUDED_
+
+
+typedef unsigned short word;
+typedef unsigned char byte;
+typedef unsigned int dword;
+
+//
+// #defines for debugging reference count problems
+//
+
+#if DBG
+
+#define REFCOUNT_TRACE 1
+
+#endif
+
+#define REFCOUNT_TRACE_UNUSENAME 0
+#define REFCOUNT_TRACE_USENAME 1
+#define REFCOUNT_TRACE_FINDNAME 2
+#define REFCOUNT_TRACE_PUTNEXT 3
+#define REFCOUNT_TRACE_LINKREQ 4
+#define REFCOUNT_TRACE_ACTIVE 5
+
+#define NUM_REFCOUNT_TRACE 6
+
+/*
+ * XEB (Standard Object Block)
+ */
+
+#ifdef COMPILE_UP_TCPIP
+
+typedef struct xeb {
+ struct msgb *msg; /* the allocated stream msg */
+ char blockname[4]; /* Debug name information */
+ struct xeb *dnlink; /* Debug link to next block) */
+ struct xeb *dplink; /* Debug link to previous block */
+ struct xeb *nlink; /* link to next block) */
+ struct xeb *plink; /* link to previous block */
+ struct queue *uqptrRD;
+ struct queue *uqptrWR;
+ struct queue *lqptrRD;
+ struct queue *lqptrWR;
+ int state;
+ int (*init_object)(); /* init_object procedure */
+ void (*in_object)(); /* in_object procedure */
+ int (*out_object)(); /* out_object procedure */
+ int (*close_object)(); /* close_object procedure */
+ int (*test_resource)(); /* procedure, test buf resources */
+ int bufcall_flag; /* object wait on buf resources */
+ struct xeb *nmptr; /* pointer to bound name */
+ struct msgb *work_q; /* queue of work to do */
+} XEB;
+
+#else /* COMPILE_UP_TCPIP */
+
+typedef struct xeb {
+ struct msgb **msg; /* the allocated stream msg */
+ char blockname[4]; /* Debug name information */
+ struct xeb *nlink; /* link to next block) */
+ struct xeb *plink; /* link to previous block */
+ struct queue *uqptrRD;
+ struct queue *uqptrWR;
+ struct queue *lqptrRD;
+ struct queue *lqptrWR;
+ int state;
+ int ref_count; /* reference count for the object */
+ /* each pending operation references the */
+ /* object and the completion deref's it */
+ /* when the ref count goes to zero, the */
+ /* object can be safely closed */
+#ifdef REFCOUNT_TRACE
+ int trace_count[NUM_REFCOUNT_TRACE];
+ /* each type of reference has a trace entry */
+ /* when a reference is made, it is made with */
+ /* a reference type that is incremented for */
+ /* the entry */
+ int FindNamesAdded; /* number of findname requests added to the */
+ /* FASTTIMQ for this xeb */
+ int FindNamesRemoved; /* number of findname requests taken from the */
+ /* FASTTIMQ for this xeb */
+#endif
+ KEVENT close_event; /* This event is signalled when the ref count */
+ /* goes to zero. It is waited on in nbtclose */
+ int (*init_object)(); /* init_object procedure */
+ void (*in_object)(); /* in_object procedure */
+ int (*out_object)(); /* out_object procedure */
+ int (*close_object)(); /* close_object procedure */
+ int (*test_resource)(); /* procedure, test buf resources */
+ int spl; /* level at which per xeb lock was acquired */
+ struct msgb *work_q; /* work to do queue for deferred actions */
+ int bufcall_flag; /* object wait on buf resources */
+ struct xeb *nmptr; /* pointer to bound name */
+} XEB;
+
+#endif /* COMPILE_UP_TCPIP */
+
+
+typedef struct linkreq {
+ unsigned int primtype;
+ XEB *xeb;
+ struct queue *toq; /* who have asked */
+ struct queue *l_qbot;
+ int l_index;
+ struct msgb * mconind; /* msg pointer to message which have started */
+ /* this request */
+} LINKREQ;
+
+
+
+typedef struct confreq {
+ unsigned int primtype;
+
+ /* General */
+
+ unsigned char this_scope[240]; /* SCOPE_ID */
+ unsigned char name[17]; /* permanent nb name */
+ unsigned long broadcast_inaddr; /* ip broadcast addr */
+ unsigned long subnet_mask; /* subnet mask for the ip addr */
+ unsigned long this_inaddr; /* ip addr for the nbt */
+ unsigned short bcast_req_retry_timeout; /* 250 ms */
+ unsigned short bcast_req_retry_count; /* 3 */
+
+ /* Name service */
+
+ unsigned short conflict_timer; /* 1000 ms */
+ unsigned short namesrv_udpport; /* 137 */
+
+ /* Session service */
+
+ unsigned short sessionsrv_tcpport; /* 139 */
+ unsigned short ssn_retry_count; /* 4 */
+ unsigned short ssn_close_timeout; /* 30 sek */
+ unsigned short ssn_keep_alive_timeout; /* 60 sek */
+
+ /* Datagram service */
+
+ unsigned short datagramsrv_udpport; /* 138 */
+ unsigned short dgr_frag_timeout; /* 2 sec */
+} CONFREQ;
+
+
+#define CONF_REQ 3001
+#define NBT_LINK_REQ 3016
+#define NBT_LINK_ACK 3017
+#define NBT_LINK_NACK 3018
+#define NBT_UNLINK_REQ 3019
+#define NBT_UNLINK_ACK 3020
+#define NBT_UNLINK_NACK 3021
+
+
+#endif // _NBT_CTRL_INCLUDED_
+