----------------------------------------------------------

   NCB.ACTION		      0x74 Wait     0xF4 No-Wait

----------------------------------------------------------

Description
-----------

This command enables extensions to the transport i/f to be expressed via
NetBIOS and mapped to TdiAction. The following fields are specified in the
NCB:

Supplied Fields:
----------------

NCB_BUFFER - points to an action parameter block structure (see Note 1 below)
NCB_LENGTH - length of the parameter block
NCB_NUM    - see Note 2 below
NCB_LSN    - see Note 2 below
NCB_ADAPTR_NUM

Note 1
------

The action parameter block is a contiguous input/output buffer which
contains all the parameters involved in the required action. The buffer
starts with a common header followed by the action specific parameters.

The header is described by the following structure:

typedef struct _ACTION_HEADER {
    ULONG	TransportID;
    USHORT	ActionCode;
    USHORT	Reserved;
    } ACTION_HEADER;

The ACTION_HEADER fields:

     TransportID - Four bytes identifing the transport provider. May be used
		   to check the validity of the request by the transport.
		   We can use the following convention:

		   All strings starting with M are reserved for MS use.
		   For instance:


		   M\0\0\0 - All transports
		   MNBF    - NBF
		   MABF    - AsyBEUI
		   MXNS    - XNS, etc.

      ActionCode - identifies the action
      Reserved	 - future extensions (e.g. version nr, etc.)

Note 2
------

The type of TDI handle to use for this action is infered from the NCB fields
as follows:



NCB_NUM    |	0	    |  !=0	     |	 0	      |    !=0
------------------------------------------------------------------------
NCB_LSN    |  !=0	    |	 0	     |	 0	      |    !=0
------------------------------------------------------------------------
Tdi HANDLE | Connection ID  | Address	     | Control Channel|
	   | associated with| associated with| associated with| ILEGAL
	   | the valid LSN  | the valid lana | the valid lana |
------------------------------------------------------------------------


Returned Fields:
----------------

NCB_RET

Valid Return Codes:
-------------------

0x00  OK
0x03  Invalid cmd.
0x06  Message incomplete.
0x09  No resource
0x0B  Canceled
0x21  Busy
0x22  Too many cmds.
0x23  Invalid lana
0x40  Sys Err
0x4X  Unacceptable net status


    NCB.ACTION --> IRP Mapping
    --------------------------

ActionParametersBlock = NCB_BUFFER

----------------------------------------------------------

  AsyBEUI Extensions via NCB.ACTION

----------------------------------------------------------

We define the following AsyBEUI extensions:

1. QUERY.INDICATION
-------------------

Description:
-----------

This command returns when one of the following frames is detected on the
async line:

ADD_GROUP_NAME_QUERY
ADD_NAME_QUERY
NAME_QUERY

The intercepted frame's fields are returned in a structure as follows:

typedef struct _QUERY_INDICATION {
    UCHAR	command;
    USHORT	data2;
    UCHAR	dstname[NCBNAMSZ];
    UCHAR	srcname[NCBNAMSZ];
    } QUERY_INDICATION;

The mapping of the frame fields to structure fields ia done as follows:

  Intercepted Frame :			       QUERY_INDICATION fields:

    unsigned char   command;	   -----------> command
    unsigned char   data1;
    unsigned short  data2;	   -----------> data2
    unsigned short  xmitc;
    unsigned short  rspc;
    char	    dstname[16];   -----------> dstname
    char	    srcname[16];   -----------> srcname


The QUERY.INDICATION command is provided via a NCB.ACTION as follows:

NCB_BUFFER points to a structure of the type:

typedef struct _ACTION_QUERY_INDICATION {
    ACTION_HEADER      header;
    QUERY_INDICATION   queryind;
    } ACTION_QUERY_INDICATION, *PACTION_QUERY_INDICATION;

    The header fields are as follows:

    header.TransportID - four bytes with the string MSAB
    header.ActionCode - QUERY_INDICATION_CODE

NCB_LENGTH is sizeof(ACTION_QUERY_INDICATION)

NCB_ADAPTR_NUM is a valid lana for the AsyBEUI stack.

NCB_LSN = 0
NCB_NUM = 0
NCB_POST

2. DATAGRAM.INDICATION
----------------------

Description:
-----------

This command receives a datagram message from any name
on the async network that is located on the peer stack
(i.e. it doesn't get completed
if the sender name is located on the same stack and lana where the NCB is
submitted).

The datagram indication information is received in the following structure:

typedef _DG_INDICATION {
    UCHAR	dstname[NCBNAMSZ];
    UCHAR	srcname[NCBNAMSZ];
    USHORT	dgbufflen;
    UCHAR	dgbuff[1];
    } DG_INDICATION;

The intercepted datagram is reflected in the structure as follows:

dstname - destination name
srcname - source name
dgbufflen - at submission time, this is the length of the datagram buffer.
	    on completion, it is the length of the received data. If the length
	    of the submitted buffer is < then the received datagram the NCB
	    return code will show it (0x06 -> msg incomplete).
dgbuff - datagram buffer. On completion it holds the datagram data.

The DATAGRAM.INDICATION command is provided via a NCB.ACTION as follows:

NCB_BUFFER points to a structure of the type:

typedef struct _ACTION_DG_INDICATION {
    ACTION_HEADER	header;
    DG_INDICATION	dgind;
    } ACTION_DG_INDICATION, *PACTION_DG_INDICATION;

    The header fields are as follows:

    header.TransportID - four bytes with the string MSAB
    header.ActionCode - DG_INDICATION_CODE

NCB_BUFFER	- points to a DG_INDICATION structure
NCB_LENGTH	- sizeof(ACTION_DG_INDICATION) + dgbuff length
NCB_ADAPTR_NUM	- valid AsyBEUI lana
NCB_POST
NCB_LSN = 0
NCB_NUM = 0

----------------------------------------------------------

   NCB.QUICK.ADD.NAME		0x75 Wait     0xF5 No-Wait
   NCB.QUICK.ADD.GROUP.NAME	0x76 Wait     0xF6 No-Wait

----------------------------------------------------------

Description:
-----------

These commands add a 16-character unique/group name to the table of names.

NOTES:
------

When AsyBEUI processes this command no name query requests are sent.
Otherwise, it behaves identically with NCB.ADD.NAME, NCB.ADD.GROUP.NAME.


Supplied Fields:
----------------

NCB_ADAPTR_NUM
NCB_NAME

Returned Fields
---------------

NCB_RETCODE
NCB_NUM

Valid Return Codes:
-------------------

0x00  OK
0x03  Invalid cmd.
0x09  No resource
0x0B  Canceled
0x0D  Duplicate name in local name table
0x0E  Name table full
0x21  Busy
0x22  Too many cmds.
0x23  Invalid lana
0x40  Sys Err
0x4X  Unacceptable net status
0xFX  Adapter Err


NCB.QUICK.ADD.NAME, NCB.QUICK.ADD.GROUP.NAME ---> TdiOpenAddress Mapping
------------------------------------------------------------------------

The mapping is identical to the normal ADD.NAME and ADD.GROUP.NAME ncbs.
The NBF transport provider will differentiate them by the NB_NameType field
in the NetBIOS_Name structure provided in the TRANSPORT_ADDRESS.

NB_NameType:

    0 - unique name
    1 - group name
    2 - quick add unique name
    3 - quick add group name.
