Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Advanced NetWare v2.0

software


Advanced NetWare v2.0

Internetwork Packed Exchange Protocol

( IPX )



with

Asynchronous Event Sheduler

(AES)

Specifications as of March 19,1986

Copyright (c) 1986 by Novell, Inc. All Rights Reserved

NOTICE: The specifications contained in this document are

intended to be complete and accurate. However, Novell reserved

the right to change, augment, or diminish any or all of these

specifications without notice.

The scope of this document.......... ..... ...... .... 1

IPX overview.......... ..... ...... .................. 1

AES overview.......... ..... ...... .................. 1

IPX Internetwork packets.......... ..... ...... .......2

General Structure of IPX Packets .....................2

Structure of IPX Packet Headers ......................2

Description of Header Contents .......................3

Checksum .......... ..... ...... ......3

Length .......... ..... ...... ........3

Transport control ............................3

Packet type .......... ..... ...... ...3

Destination Network ..........................4

Destination Node .............................4

Destination Socket ...........................4

Source Network .......... ..... ...... 5

Source Node .......... ..... ...... ...5

Source Socket .......... ..... ...... .6

Events and Event control blocks ......................7

General Structure ............................8

Description of Field Contents ................8

Link .......... ..... ...... ..8

ERS Address ..........................8

In use .......... ..... ...... 9

Completion Code ......................9

Socket Number .......................10

IPX Workspace .......................10

Driver Workspace ....................10

Immediate Address ...................10

Fragment Count ......................11

Fragment Description List ...........11

Event control blocks for special - purpose events ...12

General Structure ...........................12

Description of Field contents ...............12

Link.......... ..... ...... ..12

ERS address .........................12

In Use ..............................12

AES Workspace .......................12

- 1 -

The scope of this documen 838e46i t

This document describes the IPX and AES programming interfaces

as they have been implemented for 8088/8086-based workstations

using MS/PC-DOS 2.x or 3.x and the corrasponding Advanced

Netware v2.0 Workstations Shells.

IPX Overview

The Advanced Netware Internetwork Packet Exchange (IPX)

Protocol is an implementations of Xerox's Internetwork

PacketProtocol. The purpose of IPX is to allow applicatios

running on a Netware workstation to take advantage of the

Netware network drives to communicate with other workstations,

servers, or devices on the internetwork.

IPX is a service that provides to applications theability to

send and receive individual packets on the internetwork.

Internetwork packets are structured as defined by Xerox

Network Standard (XNS). In the Advanced NetWare internetwork

environment ( a network comprised of one or more LANs using

Advanced NetWare), each node (a device attached to the

network) has a unique internetwork address. Using IPX, a

NetWare workstations may send or receive packets to or from

any node on the internetwork. The routing of packets between

nodes which reside on physically different LANs is largely

automatic and transparent. This transparency is accomplished

by the IPX facility in conjunction wich the services of

Advanced NetWare bridges.

The network drives make a "best effort" to physically deliver

the packets but do not quarantee delivery. The implementation

of reliable delivery, sequenced protocols, data stream, and

other higher - level interconnection protocol may be buil upon

the IPX packet protocol as needed by specific applications.

The IPX protocol is intended to be used as a foundation upon

which a variety of sophisticaated applicatons may be built,

including communicaton servers, PC-to-mainframe concentrators,

or direct interworkstations message systems.

IPX is fully supported on all LAN topologies which are

supported by Advanced NetWare v2.0. The IPX protocol provides

full transparency and consistency across any Advanced NetWare

internetworks.

AES Overview

The Asynchronous Event Sheduler (AES) is an auxilary service

which provides a means of measuring elapsed time and/or

triggering events at the conclusion of measured time

intervals. Events are: the completion of an IPX send request,

the reception of a packet in fulfillment of an IPPX listen

request, or the expiration of an applicaton-defined time

intervals. A service routine may be provided for each event;

it will be called when the event occurs. If necessary, an

event service routine may reshedule itself for delayed

execution after a given time interval has elapsed.

- 2 -

IPX internetwork Packets

The packet structure of IPX packets is precisely the structure

of Xerox's XNS packets. The packet structure will be brifly

outlined below; interessed users are referred to the Xerox

document "Internetwork Transport Protocol" (Xerox Corporation,

Xerox System Integration Standard; Stamford; Connecticut;

December 1981; XSIS-028112) for a more detailed discussion of

the XNS packet protocol.

General Structure of IPX Packets

An IPX packet consist of 30 bytes of header followd by 0 to

546 bytes of data. Thus, the minimum packet length is 30

bytes, and the maximum length is 576 bytes.

Contents and structure of the data portion of packet are

entirely the responsibility of the application(s) using IPX

and may take format required.

Structure of IPX Packet Headers

The IPX header (first 30 bytes of all packets) must conform to

the following format:

Offset Field Size Data Type

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

0 Checksum 2 bytes h-l i's comlement integer

2 Length 2 bytes high-low unsigned integer

4 Transport Control 1 byte unsigned integer

5 Packet Type 1 byte unsigned integer

6 Destination Network 4 bytes high-low unsigned integer

10 Destination Node 6 bytes high-low unsigned integer

16 Destination Socket 2 bytes high-low unsigned integer

18 Source Network 4 bytes high-low unsigned integer

22 Source Node 6 bytes high-low unsigned integer

28 Source Socket 2 bytes high-low unsigned integer

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

Note that numeric fields composed of more than 1 byte can be

in two opposite formats: high-low(h-l) and low-high. High-low

numbers contain the most significant byte in the first byte of

the field, the next-most significant byte in the second byte,

and so on, with the least significant byte appearing last.

Low-high numbers are stored in exactly the opposite order.

- 3 -

Description of Header Contents

Following is a basic descriptions of the meaning and use of

each field in an IPX packed header.

Checksum

This field is a one's complement add and left cycle checksum

of the 16-bit words in the packed header. This fiels will

contain a -zero (FFFFh) if no checksum is desired. If a

calculated checksum comes to -zero then it should be reset to

+zero (0000h).

Note that field is a checksumof the 30-byte header only. If

applications wish to checksumtheir own data then they should

provide their own checksumin some agreed-upon portion of data

area.

A given NetWareshell implementation may not verify this

checksum when receiving a packed. If header checksum

verification is required, then it should be performad by the

application to whom the packed is delivered.

Lenght

This field contain the length of the complete network packed,

which is the length of the header plus the length of the data

section. Therefore, the minimum length of a packed is

30-bytes, and the maximum length of a packet is 576 bytes.

Transport Control

This field is used by Advanced Netware Internetwork Bridges

and always set to zero before a packed is sent.

Packed Type

This field indicates the "type" of service offered or required

by the packet; Xerox has defined the following values:

0 Unknown packed type

1 Routing Information Packet

2 Echo packet

3 Error packet

4 Packet Exchange Packet

5 Sequenced Packet Protocol Packet

16-31 Experimental Protocol

Users are strongly encouraged to use either packet type 0 or

packet type 4 in all their packets.

- 4 -

Destination Network

This field contain a network number of the destination network

where the node can be found to whom the packet is addressed.

Under Advanced NetWare, networks connected on an internetwork

are assigned 4-byte networks number by a network

administrator. Each network on a connected internetwork is

required to have a unique number.

If this field is set to 0, the destination node is assumed to

reside on the same physical network to which the source node

is connected; the packet will be sent without involving an

Advanced NetWare Internetwork Bridge.

Destination Node

This field contain a 6-byte number which identifis the

physical address (on the destination network) of the node to

which the packet is destined.

Note that not all physical LAN topologies use same size

address fields. A node on an EtherNet network would require

all 6 bytes to specify its address, while a node on an OmniNet

network would require only 1 byte.

If a physical network needs less than 6 bytes to specify node

addresses, then the portion of the address needed should

occupy the least significant (last) portion of this field and

the first bytes of the field should be set to zeroes.

Setting all six bytes to FFh indicates that the packet should

be broadcast to all nodes on the specified network. Broadcast

to all nodes on a network may or may not be supported,

depending on the physical characteristics (i.e. broadcast

support) of the underlying physical network to which the

packet is destined.

Destination Socket

This fiels contains the socket address of the software routine

to which the packet is destined.

Socket numbers are used to route packets to different software

ruotines within a given node. Xerox has reserved certain

sockets for special use. Pre-defined sockets are as follows:

1 Routing Information packet

2 Echo protocol packet

3 Error handler packet

32-63 Experimental

- 5 -

Sockets with numbers below 3.000 (decimal) are considered

"well-known" sockets with statically assigned meanings, while

sockets with numbers above 3.000 are dynamically assignable

sockets.

Applications developers that wish to produce a unique

well-known socket may request that Xerox assign them one. A

small fee and some amount of processing time may be required

by Xerox.

Novell has obtained from Xerox a set of sockets for various

uses in the Advanced NetWare environment. For example, NetWare

File Servers accept requests addressed to socket 0451h.

Because it is unlickely that NetWare systems will frequently

find themselves co-existing with bona fide Xerox networking

software, Novell has decided to offer an alternative scheme

for addressing socket numbers. Novell will administrate a list

of sockets that will be well-known in all NetWare

environments. Software developers writing value-added

packetges for NetWare should find it simpler to obtain socket

assigments from Novell. Numbers assigned by Novell begin at

8000h (32.768 decimal). Dynamic socket numbers begin at 4000h.

Source Network

This field contains the network number of the LAN to which the

node that originated the packet is connected.

This field may contain a value of zero, indicating an

"unknown" number for the network to which the source node is

physically connected.

Incidentally, all packets with a zero in this field which pass

through an Advanced NetWare Internetwork Bridge will have this

field set with the real source network number. Thus, when a

packet is received from a node on a different network, the

Source Network field will always be set properly; packets

originated by a node on the same network as the receiving node

are the only packets which may still contain a value of zero

in this field.

Source Node

This field contain the physicall address of the node from

which the packet originated.

How many bytes of this address are actually used to address

the given node is a function of the physicall network to which

the node is connected. See the related discussion in the

preceding definition of the Destination Node field.

- 6 -

Source socket

This field contain the socket address being used by the

software routine that originated the packet.

Although it is not required by the IPX protocol, it is usual

for all stations communicating about a particular task in a

peer-to-peer fashion to send and receive using the same socket

number. In a client/server situation, the node which is acting

as a server (perhaps a communicating gateway) would lickely be

listening on a specific socket for frequest to service. In

such cases, the source socket is not necessary the same or

even significant; all that matters is that the server reply to

the given source socket.

For example, all Advanced NetWare file servers have the same

socket address, but request to them may be originated by

clients using any socket number.

If software developers wish to have a uniquely assigned static

socket to communicate on then they should contact Xerox or

Novell to have a socket number assigned to him. (See the

discussion of socket number allocation in the previous

description of the Destination Socket field.)

- 7 -

Events and Event control blocks

An Event Control Block (ECB) is a data structure that contains

information required to coordinate the sheduling and/or

activation of certain desired operations. Nearly all IPX or

AES function act upon ECBs and/or the information they

represent.

There are two different kinds of events that may occur, events

related to an IPX send or receive operation, and

special-purpose events sheduled by an application. All events

have an associated Event Control Block.

For example, when an application desired to transmit an IPX

packet, it must first prepare an ECB which describes where to

obtain the packet data. The completed sending of a packet

constitutes an "IPX send event".

Linkwise, when an application desires to receive packets, it

must make one or more ECBs available to IPX to describe where

to store incoming packet data. The reception of a packet will

cause an "IPX receive event".

Additionally, an application may define and shedule a

special-purpose event. An Event Control Block must be supplied

to the AES along with a time interval. The AES will count-down

the remaining time in the given interval. When the count-down

timer reaches zero, the scheduled event occurs.

There are two metods by which an event may be detected and

acted upon by the application: polling an "in use" status flag

or providing a service routine which can be invoked in an

interrupt-like fashion.

Every Event Control Block has an "in-use" status flag. This

flag is automatically set to a non-zero value whenever an ECB

is passed to an IPX or AES function to request an event. While

this flag is non-zero, the application must not alter the

contents of the Event Control Block.

When IPX or the AES has finished performing the request

function involving the specified ECB, the "in-use" flag will

automatically be set to zero. At this point, the application

has total freedom to manipulate the ECB and any of its

associated data.

An application may find, in some cases, that it is sufficient

to periodically pool the status of all outstanding ECBs to

determine when the awaited events have occured.

Alternatively, every Event Control Block provides a way to

specify the address of an Event Source Routine (ESR) which

will be called in an interrupt-like fashion when the expected

event has occured, use of an ESR more readily allows for

real-time, asynchronous background operations to occur while

the main body of the application performs some other activity.

Event Control Blocks for IPX events have a different structure

than ECBs intended for special events; honewer, congruent

structuring of the first few fields in each type of ECB allow

either kind of ECB to be used with the AES. Thus, an Event

Service Routine invoked by an IPX event may use its associated

ECB to re-shedule itself to "occur" at a later time.

- 8 -

Event Control Blocks for IPX events

IPX function require a long form of Event Control Block ( an

"IPX-ECB"). The format of an IPX-ECB and the meaning of each

field will be described in this section.

General Structure

Offset Field Size Data Type

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

0 Link 4 bytes 8086 long address

(offset,segment)

4 ESR Address 4 bytes 8086 long address

(offset,segment)

8 In Use 1 byte Unsigned integer

9 Completion Code 1 byte Unsigned integer

10 Socket Number 2 bytes High-low uinteger

12 IPX Workspace 4 bytes N/A

16 Driver Workspace 12 bytes N/A

28 Immediate Address 6 bytes High-low uns. integer

34 Fragment Count 2 bytes Low-high uns. integer

36 Fragment Descriptor-1 6 bytes Structure:

Address 4 bytes 8086 long address

(off,seg)

Size 2 bytes Low-high uns.integer

30+n*6 Fragment Descriptor-n 6 bytes Structure

As can be seen in the above structure, an IPX Event Control

Block consist of two parts.

The first, fixed portion (36 bytes long) contains

status/information fields as well as a workspace for use by

IPX and the network hardware drivers.

The second, variable portion is a list of one or more buffer

fragment addresses and lengths. This Fragment Descriptor List

defines the places in memory from which a packet will be

gathered for sending of to which a packet will be scattered

upon reception.

Description of Field Contents

Link

This field is maintained by IPX when the ECB is in use. When

the ECB is not in use, the application may use this field, if

desired. Most commonly, it would be used as a link field for

keeping the ECB in free/ready lists or queues.

ESR Address

This field contains the address of an application - defined Event

Service Routine (ESR) that IPX will call when the expected event

(a packet send or receive operation) has been completed.

- 9 -

Because IPX maintains the In Use and Completion Code fields, it

is possible for a programm to simply poll the status of its

outstanding IPX request at appropriable intervals and not use a

service routine at all. If no Event Service Routine is desired,

then the ESR Address should be set to null (four bytes of zero).

For a complete discussion of Event Service Ruotine usage,

implementation and restriction quidelines, see the section

entitled Event Service Routine Implementation.

In Use

This field contains a non-zero value whenever the ECB is in use

by the IPX or AES. Following is a list of possible values and

their meanings:

FFh The ECB is in use for transmitting

FEh The ECB is "listening" on a certain socket for incoming

packets

FDh The ECB has been schedulled with the AES and is awaiting

the expiration of its time interval.

FBh A send or receive event has occured, but yhe ECB is in a

temporary holding queue, waiting to be officially

processed

IPX will reset this field to zero when the request action has

been completed.

Completion Code

This field is set by the IPX routines to indicate the final

status of the request represented by the Event Control Block.

This field can not be considered valid until after IPX has reset

the In Use field to zero.

When an ECB has been given to IPx for the purpose of sending a

packet, any of the following completion codes may be reported:

00h The send was completed successfully. This does not

guarantee that the packet was received successfully. The

packet may have been lost somewhere along the way, or

even if it made it all the way to the target node there

may have been no available receive buffers.

FFh Physically unable to send the packet (Hardware or network

failure.)

FEh Packet Undeliverable (destination detected not to exist,

no Internetwork Bridge available, or possible hardware

failure).

FDh Malformed packet (total length is less than 30 bytes of

too large, first fragment is too small for IPX header, or

Fragment Count is zero)

FCh The send request was cancelled.

- 10 -

When an ECB has been given to IPX for the purpose of listening

for incoming packets, any of the following completion codes may

be reported:

00h The packet was received successfully

FFh Socket Closed. The socket that ECB was supported to

listen on was not open.

FDh Packet overflow. A packet waas received, but the Fragment

Count in the ECB was zero, or the available space

described by the Fragment Descriptor was not large enough

to contain the entire packet.

FCh The liste request for this packet was canceled.

Socket Number

This field contains the number of the socket with which this ECB

is associated. When an ECB is used for sending, this field

contains the socket that the packet was sent from; when

receiving, this field contains the socket that the packet was

received on.

IPX Workspace

This four-byte fild is reserved for use by the IPX Routines. It

does not need to be initialized to any values, and it must not be

changed while the control block is being used by the IPX

routines. When the ECB is not in use by the IPX, this area may be

used in any fashion desired.

Driver Workspace

This twelve-byte field is reserved for use by the physical

network drivers. It does not need to be initialized to any

values, and it must not be changed while the control block is

being used by the IPX routines. When the ECB is not in use by the

IPX, this ares\a may be used in any fashions desired.

Immediate Address

This six-byte field contains the address of the node to which the

packet was just sent or from which it just arrived. (this will be

the address of an Internetwork Bridge on the local network if the

packet was not to/from a node on the local network.)

- 11 -

This field contains a count of the number of buffer fragments

from which packet shiuld be built for sending, or the number of

buffers into which a received packet should be split.

The value in this field must be greater than zero. A value of 1

(one) merely indicates that the packet is to be sent/received

from/to a contuguous portion of memory. In other words, the first

fragment contains the entire packet.

Fragment Descriptor List

A Fragment Descriptor precisely identifies where to find a piece

of a packet to be sent, or where to place a piece of received

packet. A fragment Descriptor has two component fields:

Address

An address of a bufferfrom which packet data should be

gathered for a packet send or which packet data should be

copied upon a packet receive.

Size

The size of the buffer fragment pointed to by the

preceding Address.

Any IPX Event Control Block must have at least one Fragment

Descriptor, and an arbitraly number of additional descriptors, as

necesssary. These descriptors constitute the Fragment Descriptor

List.

Allowing packet headers and data to be "gathered" from several

places or "scattered" to several locations, the IPX functions

remove the need for applications to repeatedly copy data to and

from multiple locations.

Note that sending and receiving complete packets from or into

contiguous memory may be accomplished by setting the Fragment

Count field to 1 (one) and providing only a single Fragment

Descripror.

Important

When sending a packet, IPX will "gather" the packet contents from

an arbitrary number of fragments; honewer, the buffer fragment

identified by the first entry in the Fragment Descriptor List

must be at least 30 bytes long and must contain the complete IPX

packet header. The total packet size (thw sum of all the

individual fragment sizes) must not exceed 576 bytes.

- 12 -

Event control blocks for special-purpose Events

Special-purpose events sheduled by an applicaton are included to

occur after the expiration of specified time interval.

These events are represented by a short from Event Control Block

(an "AES-ECB") and are sheduled directly through the Asynchronous

Event Sheduler.

General Structure

Offset Field Size Data type

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

0 Link 4 bytes 8086 long address

(offset,segment)

4 ESR Address 4 bytes 8086 long address

8 In Use 1 byte Unsigned integer

9 AES Workspace 5 bytes N/A

Description of Field Contents

Link

This field is used by the AES when the ECB is in use. When the

ECB is not in use, the application may use this field, if

desired. Most commonly, it would be used as a link field for

keeping the ECB in a free list or queue.

ERS Address

This field contains the address of an application-defined Event

Service Routine (ESR) that the AES will call when the specified

time interval has expired.

Because the AES maintains the IN Use field, it is possible for a

programm to simply pool the status of a sheduled event at

appropriate intervals and not use a service routine at all. If no

Event Service Routine is desired, then ESR Address should be set

to null (four bytes of zero).

In Use

This field contains a value of ECB while the Event Control Block

is being used by the AES to shedule a special event.

The AES will reset this field to zero when the given time

interval has expired.

AES Workspace

This field is reserved for use by the AES routines. It does not

need to be initialized to any values, but it must not be changed

while control block is in use.

- 13 -

Invoking IPX and AES function

The remainder of this document will detail the IPX and AES

programming interface that has been implemented for

8086/8088-based personal computers using MS/PC-DOS 2.x or 3.x and

the Advanced NetWare Workstation Shell v2.0 or greater.

this section will describe general implementation features of IPX

and AES function; how to request their services, and how to

monotor the status of those requests.

Access Method

The IPX and AES function are accessed through the Advanced

Netware shell by loading register Bx with the appropriate

function number and issuing a software interrupt 7Ah with

registers and other informations prepared as documented for each

function.

Register Preservation

IPX and AES functions preserve only register DS,SS,SP and

processor flags.

Interrupt States & Re-entrancy

All IPX functions execute entirely in the interrupt-disabled

state except for the Send Packet, Get Local Target, and

Relinguish Control functions. If you are calling either of these

functions from inside code that is running with interrupts

disabled, you must be sure your code can survive if interrupts

are enabled temporary by IPX.

All IPX functions are re-entrant, and may even be called from

Event Service Routines, with two exceptions: function Close

Socket and Disconnect From Target can not be called from an ESR.

All AES function execute with interrupts disabled and are

therefore inherently re-entrant and cause no re-entrancy concerns

at the application level. They may be called at any time, from

any code.

Use of Differency-sized ECBs

IPX functions will operate only with IPX style (long) Event

Control Blocks.

AES functions will operate with IPX style (long) Event Control

Blocks or AES style (short, special-purpose) Event Control

Blocks.

Monitoring the Status of a Request

Whenever an Event Control Block is supplied for use in a send,

listen, sheduling request (IPX-ECB), or special-purpose sheduling

request (AES-ECB), the ECB's In Use field will be set to FFh,

FEh, FDh, or FCh respectively.

At other times the ECB's request cycle, there are two other

temporary states that may be indicated by the ECB's In Use field.

When the Driver concludes a send or receive, the associated ECB

is placed in a holding queue, pending final release and the

calling of its ESR, if any. During this time, the In Use field

will contain a value of FBh. When the Driver is transferring

packet data to or from the fragment buffers described by the ECB,

the In Use field will contain a value of FAh.

While an ECB's In Use field contains a non-zero value, no

modifications can be made to either the ECB or any its associated

buffers. Naturally, the ECB may not be used concurrently for

another IPX or AES request.

An ECB that is in use will remain so until the expected event

occurs or the outstanding request is canceled. Note, however,

that ECB may shuttle from the care of IPX directly to the care of

the AES if the ECB's ESR decides to re-shedule itself. The value

in the In Use field will reflect this change. (During the

translation of ownership, the In Use field will contain a zero,

but this will never be seen by the monitoring applicatondue to

the interrupt-service nature of the ESR).

An application may check the value of the In Use field at any

time to determine when the request is no longer outstanding. An

ECB is no longer in use when after the ECB's In Use field has

been reset to zero.

An other information in an Event Control Block can not be assumed

valid until after the ECB's In Use field has been reset to zero.

Numeric Field Format Conventions

With regard to byte-ordering of numeric fields, the following

rules apply:

1) Socket numbers are always in high-low order. Thus, when

contained in an 8086 register, xL will contain the high byte and

xH will contain the low byte.

2) Numeric fields in the IPX packet header are always in high-low

order.

3) Values passed/returned in registers or numeric fields in ECBs

are always in low-high order, with the exception of socket

numbers, as noted in Rule I above.

Prerequisite Conditions

The documentation for each IPX or AES function will detail a set

of conditions that are assumed to exit when the functions is

invoked. These conditions include the setting of parameters in

certain registers or the initialization of various ECB or IPX

header fields.

- 15 -

Only the conditions that are expicitly mentioned in the function

documentation's Assumes section need to be met by the programmer

before invoking the function.

Field Value Preservation

For any particular IPX or AES function, the values of all the

fields that are required to be initialised by the application

will not be altered during the execution of the function, with

one exception: when an IPX send broadcast request is canceled,

the ESR Address field of the associated ECB will not be valid.

Thus, an application may initialize certain ECBs buffer areas

containing IPX headers once, are re-use those ECBs and buffers,

changing only the data portion of the packets as needed.

System Clock Ticks

System clock ticks, as referred to this document, refer to the

system clock ticks of an IBM PC. Those clock ticks occur

approximataly 18.21 times a second.

On other machines, clock ticks may only be available some other

number of times per second. For example, suppose actual clock

ticks were available only twice a second. In such a case, IPX

will still handle all timing functions in terms of IBM PC clock

tick values. A 36 tick delay will still indicate a delay of

approximately two seconds. However, that timing will only be

accurate to within plus or minus half a second.

- 16 -

IPX and AES function definition

Open Socket

Assumes

-------

Bx has 0h

Al has Socket Longevity Flag

00h = Stay open until closed of program terminates

FFh = Stay open until closed

Dx has Requested Socket Number

0000h = Let IPX dynamically assign a socket number

non-zero= Open on this socket

Returns

-------

Al has Function Completion Code

00h = socket was successfully opened

FFh = socket is already open.

FEh = socket table is full. (IPX capacity is at maximum)

Dx has Assign Socket Number

Description

This function opens a particular socket for use by the application.

This function must be called before being able to send packets from or

receive packets on a particular socket. If desired, IPX will

dynamically assign you a socket number that is not already open on the

workstation.

The Requested Socket Number contained in DX is assumed to be in

high-low order, that is, DL contains the HIGH half of the socket

number, and DH contains the LOW half of the socket number that is to

be opened.

If this function is called with a Request Socket Number of zero,

a socket number will be dynamically assigned by IPX.

If the open request is successful, DX will contain the Assigned

Socket Number when the function returns. This is the socket that

was actually opened, as determined by the Requested Socket Number

value.

The Socket Longevity Flag indicates whether or not the socket is

intended to remain open after the application terminates. A value

of FFh will cause the socket to remain open until it is

exclicitly closed. This feature is useful for terminate-and-stay

resident applicatons that intaract with IPX.

- 17 -

As a precautionary measure when programming transient

applications, programmers should always set the Socket Longevity

Flag to zero, so that an unexpected termination of their code (by

a control-break or control-C, for example) will cause the socket

to be closed automatically when the application terminates and

forces an end-of-job condition.

All applications (except terminate-and-stay-resident

applications) should close all of their open sockets before

terminating.

NOTE: If there are already as many open sockets open as IPX has

internal table space to keep track of, the Function Completion

Code returned in Al will be FEh. At the time of this

specification's, IPX will support up to 50 open soockets on any

workstation.

- 18 -

Close Socket

Assumes

Bx has 1h

Dx has Number of socket to be closed

Returns

Nothing

Description

This function closes the specified socket.

This functions cancels any IPX-ECBs associated with the indicated

socket which are in use by IPX or AES for sending, listening, or

sheduling purposes.

Whenever an outstanding IPX request is canceled (by this function

or by the Cancel Event function), the In Use field of any

affected ECB is reset to zero and the Completion Code field is

set to FCh, indicating that the request was canceled.

NOTE: The Event Service Routine of a cancelled ECB is not called.

Note that packets which arrive for a socket which is closed or

has no outstanding listen requests will simply be ignored.

Attempting to close a socket that was not open has no effect.

WARNING

Transient: applications must close all of their open sockets

before terminating. Thus, only terminate-and-stay-resident

applications should ever leave sockets open, and those sockets

should be opened as "long-lived" sockets (see the description of

Open Socket).

If sockets are not closed before programm termination, a small

but finite window exests where a packet may arruve and the

service routine be called even though the program has issued an

EXIT command to DOS. In such a case, corrupted pointers could

conceivably cause the workstaton to "hang" with interrupts

disabled.

WARNING

This function can not be called from an Event Service Routine,

regardless of whether the ESR was called as the result of an IPX

and AES event.

- 19 -

Get local Target

Assumes

Bx has 2h

ES:SI has a pointer to a twelve-byte buffer

ES:DI has a pointer to a six-byte buffer

Returns

Al has Function complete code

00h if a local target node was indentified

FAh if there is no known path to the desired

destination node Cx has one-way transport time to

target node (only if al is 00h)

Description

This function determines the value which should be placed in

an ECB's immediate Address fiels prior to passing the ECB

to function Send Packet.

Registers ES:SI point to a twelve-byte buffer which contains the

full internetwork address of a node to which the application

would like to send a packet.

If there has been no prior communication with the destination

node, then this function should be called once to determine what

value should be placed in the Immediate Address field of each ECB

that will be used in sending packets to the destination. The

immediate address value will be placed in the six-byte buffer

pointed to by ES:DI.

If the ultimate destination node resides on the same local

network, then local target address will be same as the node

address portion of the full twelve-byte target address. If,

however, the destination node resides on another network of the

internetwork, the local target address returned will be the

address of an Advanced NetWare Internetwork Bridge which will

route the packet toward its final destination.

Furthermore, once communicaton has been established with another

node it is recommended that the Immediate Address field of send

ECBs be set to the value contained the Immediate Address field of

the ECB which was most recently used to receive a packet from the

other node.

Therefore, application which never initiate communication with

other nodes but merely respond to incoming request will never

need to call this function they may simply send reply packets to

the same immediate address from which the request packets

arrived. (Whenever a packet is received, the Immediate Address

field of the receive ECB will be set by IPX to indicate the

address from which the packet came.)

- 20 -

The Function Complete Code returned in Al will be FAh if this

function could not find a path to the desired destination

network.

Note that the successful completion (Al returns with a 00h) of

this function does not guarantee that the destination node

exists; it only indicates the local address to which packet

should be sent to start them on their journey.

If this function was successful, a time calue will be returned in

register Cx. This value indicates the amount of time (in system

clock ticks) for a 576-byte packet to be sent to the target node.

This time is a best-case time; a packet may take longer if

network traffic is heavy. However, short packets may take less

time because they have fewer bytes to be transmitted.

Whun sending broadcasts, this function should still be called to

determine the value to place in the send ECB's Immediate Address

field.

- 21 -

Send Packet

Assumes

Bx has 3h

ES:DI has a pointer to an Event Control Block

In the ECB, the ESR Address,Socket Number, Immediate Address, Fragment

Count, and Fragment Descriptor List fields are initialised.

The first buffer fragment described by the Fragment Descriptor List is

a least 30 bytes long and contains the packet's IPX header.

In the IPX packet header, the Packet Type, Destination Network,

Destination Node, and Destinaton Socket fields are initialised.

Returns

Nothing

Description

This function prepares the ECB and the IPX header of the associated

packet and passes the ECB to network communication drivers to

initialise the send operation. Having done so, this function returns

immediality to the calling applicaton.

This function will complete the packet's IPX header by filling in the

Checksum, Length, Transport Control, Source Network, Source Node,

and Source Socket fields. The latter calue is taken from the

Socket Number field of the supplied ECB.

IPX is designed to allow applications to function in fully

asynchronous fashion with respect to the sending of internetwork

packets; therefore, the send event can not be assumed concluded

when this function returns.

Using the information provided in the ECB, the network drivers

will attempt to transmit the packet as soon as the network

hardware is available and any other pending send requests have

been serviced. The packet will be sent to the node on the

immediately connected network that is indicated by the ECB's

Immediate Address field. To understand how to determine the

proper value for the Immediate Address field, see the

documentation of function Get Local Target.

While the packet is waiting to be transmitted, the In Use field

in its ECB will contain a value of FFh.

- 22 -

When the drivers have finished their attempt to tramsmot the

packet, the In Use field will be reset to zero. At this point,

the Completion Code field in the ECB will contain the final

status of the send request and the Event Service Routine pointed

to by the ESR Address field will be called. If no ESR is desired,

then the ESR Address field should be set to null (zeroes).

If the request is cancelled by a Cancel Event or Close Socket

function, the In Use field will be reset to zero and the

Completion Code will be set to FCh. The ECB's Event Service

Routine will not be called.

Valid Completion Code values are:

00h The send was completed successfully.

FFh Physical unable to send the packet (Hardware or network

failure).

FEh Packet Undeliverable.

FDh Malformed packet (less that 30 or greater that 576 bytes,

or list fragment too small for header, or Fragment Count

was zero).

FCh The send request was canceled by a Close Socket or Cancel

Send/Listen function call.

Some additional words of exlanation are necessary.

The 00h completion code indicates that the packet was

successfully transmitted does not guarantee that it was

successfully received by the destination node. There conditions

may exist to prevent successful reception of a packet:

1) The packet may be lost or garbled by the transmission media at

any stage of its jouney;

2) The given destination node does not exist (some media

protocols are unable to detect this condition when transmitting

to a node that is aliegedly on the same physical network, and

they can never detect this case if the packet must pass though an

Internetwork Bridge);

3) There are no outstanding socket listen request in the

destination node when the packet is received.

The Packet Undeliverable code, FEh, can be generated in tree

ways:

1) The packet was destined for a far network and no Advanced

NetWare Internetwork Bridge with a path to the destination

network could be found;

- 23 -

2) The packet is destined for a node on the local network and the

local network hardware detects that the target address is

nonexistent or inactive (this is hardware-dependent); some

drivers may have no way to distinguish between a hardware failure

and a non-existent destination node and may indicate this error

instead of an FFh;

3) The packet was destined for another socket on same machine

that the packet was sent from, and that socket is not open or has

pending listen request.

IPX allow packets to be sent between a source and destination

that reside in the same physical node ("Intranode routing"); even

the source and destination sockets may be the same. This ability

appers both to explicitly addressed packets as well as broadcast

packets. Thus, an application that uses the same socket address

for sending and receiving would always receive broadcasts it had

sent to nodes on the same network as it was physically connected

to.

When an intranode packet is "sent", all related processing

(including ESR execution) is performad in the same fashion as a

normal transmission. Only then, if there is a listening ECB, will

the packet be "received" and appropriately processed. The order

of thus processing is guaranteed.

- 24 -

Listen for Packet

Assumes

Bx has 4h

ES:DI has a pointer to an Event Control Block

In the ECB, the ESR Address, Socket Number, Fragment Count, and

Fragment Descriptor List fields are initialised.

Returns

Nothing

Description

This function delivers an ECB and the buffer space it describes

to IPX the purpose of receiving an internetwork packet. Having

done so, it returns immediately to calling the application.

IPX is designed to allow applications to function in a fully

asynchronous fashion with respect to the receiving of

internetwork packets; therefore, this function only dedicates the

given Event Control Block for use in receiving packets; the

function does not wait for an actual packet to be received.

The ECBwill only be used to receive packets that are destined to

the socket given in the ECB's Socket Number field. The socket

must be open before any listen requests may be made for that

socket. (Incidentally, if a socket is not open, any incoming

packets destined for that socket will be ignored.)

When an ECB is donated to IPX for the purpose of listening for

internetwork packets, the In Use field is set by IPX to FEh. This

field will remain set until a receive event occurs, the request

is canceled, or IPX judges the ECB to be unusable.

After IPx has reset the In Use field to zero, one of the

following values will be recorded in the Completion Code field

of the ECB:

00h Packet was received successfully.

FFh The socket upon which the ECB was to listen was not

opened.

FDh Packet overflow. A packet was received, but the ECB's

Fragment Count was zero, or the available space defined

by the 's Fragment Descriptor List was not large enough

to contain the entire packet.

FCh The send request was canceled by a Close Socket or Cancel

Send/Listen function call.

- 25 -

If the request was cancelled by a Cancel Event or Close Socket

function, the In Use field will be reset to zero and the

Completion Code will be set to FCh, as listed above. The ECB's

Event Service Routine will not be called.

Otherwise, the Event Service Routine pointed to by the ECB's ESR

Address field will be called. If no ESR is desired, then the ESR

Address field should be set to null (zeroes).

If the Completion Code field contains a value of 00h or FDh, then

the Immediate Address field of the ECB will contain the address

of node on the local natwork from which the packet was received.

IPX imposes no limit on the number of ECBs that may be used

concurrently for listening on a given socket. Many applications

may enormosly by having several ECBs listening on the same

socket. Note, however, that there is no guarantee that listening

ECBs will be utilized by IPX in the same order they were offered.

When a packet is received, IPX checks to see if there are any

available ECBs listening on the appropriate socket. If there are

no available ECBs, then the packet will simply be discarded. If

there is only one ECB available, it will be used to disburse the

packet data.

If multiple Event Control Blocks are availablr, then IPX will

coose one of them for use in disbusring the packet data.

Listening ECBs are not chosen for use in receiving a packet on

the basis of what order they were originally made available.

When a packet arrives and an available ECB is chosen by IPX, the

address of the node on the local network from which the packet

came will be recorded in the Immediate Address field of the ECB.

An application that desires to make a reply to the packet can

copy this calue to the Immediate Address field of the ECB which

will be used to send the reply. Replies made in this fashion can

even be made from inside Event Service Routines.

/*******@@@@@@@@

Shedule IPX Event

Assumes

Bx has 5h

Ax has desired delay time

ES:DI has a pointer to an IPX Event Control Block

In the ECB, the ESR adress and Socket Number fields are initialised

Return nothing

Description

This functionis used to shedule or re-shedule an IPX event to occur

when the specified time interval expired. The interval may be less

than an 18th of a second or over an hour in length.

/ ** ** ** ** ** ** ** ** ** ** ****/

Cancel Event

Assumes

Bx has 6h

ES:DI has a pointer to an ECB that is in use by IPX or the AES

Returns

Al has Function complete code

00h if the event was canceled

FFh if the given ECB was not in use by IPX or the AES

F9h if the given ECB was in use and unable to be canceled

Description

This function cancels the event....

/ ** ** *********/

Shedule special event

Bx has 7h

Ax has desired delay time

ES:DI has a pointer to an special-purpose ECB (AES-ECB)

In the ECB, the ESR Adress field is initialised

Return: nothing

Description

This function is used to shedule a special-purpose...

/ ** ** *************/

Get Interval Marker

Assumes

Bx has 8h

Returns

Ax has the interval marker (16-bit Unsigned integer)

Description

This function returns a timing marker.

This marker reflect the time at which this function was called. The

value is given in units equal to the length of time between any two

system clock ticks ( approximately 1/18.21 of a second)

This value has no relation to any real-word absolute time.. However,

when it is compared with a time marker obtained at different time, the

difference will yield elapsed time.

...........

/ ** ** ** ** ** ** *****/

Get internetwork Address

Assumes

Bx has 9h

ES:DI has a pointer to a ten-byte buffer area

Returns

Four-byte Network Number and six-byte Node Address in the indicated

buffer

Description

This function allow a programm to determine the internetwork adress of

the node on which it is executing.

This programm-supplied buffer is filled with four-byte Network Number

followed by the six-byte Node Address. Both fields in high-low order.

This function is especialy useful for any application that must other

nodes of its address on the internetwork.

Note that this function does not return a socket number. When programm

form complete tweive-byte adresses, they should append socket numbers

appropriate to their application.

Rellnquish Control

Assumes

Bx has Ah

Returns

Nothing

Description

This function should be invoked whenever the applications will

"idling", waiting for external events to provide it with serious

processing to perform.

............

Disconect from target

Assumes

BX has Bh

ES:DI point to a 12-byte buffer containing an internetwork adress

Returns

Nothing

Description

This function exists as courtesy to those network communications

drivers which may operate strictly on point-to-point basis at physical

transport level.

.................


Document Info


Accesari: 712
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )