DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T p

⟦919a8b279⟧ TextFile

    Length: 97180 (0x17b9c)
    Types: TextFile
    Names: »pktd.lst«

Derivation

└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
    └─⟦349c9a24c⟧ »EurOpenD3/network/ka9q/pktd.tar.Z« 
        └─⟦613ecc654⟧ 
            └─⟦this⟧ »./build/pktd.lst« 

TextFile

\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-1\r
\r
\r
				;       @(#)pktd.asm.u	1.5    2/7/90\r
				;\r
				; Copyright (c) 1989, 1990 by Sun Microsystems,\r
				 Inc.\r
				;\r
				\r
				title Sun Packet Driver Interface Driver\r
				page ,132\r
				\r
				;\r
				;	The following driver is derived from two sources:\r
				;	(1) Version 1.08 of the Packet Driver Specification,\r
				;	    developed at FTP Software Inc.\r
				;	(2) The PC-NFS Link Level Driver Kit.\r
				;\r
				;	In addition, Karl Auerbach (karl@asylum.sf.ca.us) contributed\r
				;	a couple of fixes; his mods are marked "***KAA". Thanks, Karl.\r
				;\r
				;	This version includes the fixes suggested by many users to allow\r
				;	PC-NFS to co-exist with Netware using the New York code. Thanks\r
				;	to Russ Nelson at Clarkson and James Van Bokkelen at FTP for\r
				;	their help.\r
				;\r
				;	This material is provided "as is." It is NOT a supported\r
				;	Sun product, and has not been tested against more than\r
				;	a handful of packet drivers. Please send any comments,\r
				;	fixes, etc. to me (geoff@east.sun.com).\r
				;\r
				;		Geoff Arnold\r
				\r
 = 0001				_OPERATING_STATISTICS equ 1\r
				\r
 0000				cseg	segment para public 'code'\r
					assume	cs:cseg\r
					assume	ds:nothing\r
					assume	es:nothing\r
				\r
				\r
				include pktdd.asm\r
			     C	;      @@(#)pktdd.asm.u	1.2	2/7/90\r
			     C	;\r
			     C	; Copyright (c) 1989, 1990  Sun Microsystems, Inc.\r
			     C	;\r
			     C	\r
			     C	;\r
			     C	;macros\r
			     C	status macro state,err,rc\r
			     C		ifidn	<state>,<done>\r
			     C		or	es:word ptr srh_sta_fld[bx],0100h\r
			     C		endif\r
			     C		ifidn	<state>,<busy>\r
			     C		or	es:word ptr srh_sta_fld[bx],0200h\r
			     C		endif\r
			     C		ifidn	<err>,<error>\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-2\r
\r
\r
			     C		or	es:word ptr srh_sta_fld[bx],8000h\r
			     C		endif\r
			     C		ifnb	<rc>\r
			     C		or	es:word ptr srh_sta_fld[bx],rc\r
			     C		endif\r
			     C		endm\r
			     C	\r
			     C	; parameter block offsets\r
			     C	\r
 = 0000                      C	srh	equ	0		;static request header start\r
 = 000D                      C	srh_len 	equ	13	;  "      "       "    length\r
 =                           C	srh_len_fld	equ	srh	;  "      "       "      "    field\r
 = 0001                      C	srh_ucd_fld	equ	srh+1	;  "      "       "    unit code field\r
 = 0002                      C	srh_ccd_fld	equ	srh+2	;  "      "       "    command code field\r
 = 0003                      C	srh_sta_fld	equ	srh+3	;  "      "       "    status field\r
 = 0005                      C	srh_res_fld	equ	srh+5	;  "      "       "    reserved area field\r
			     C	\r
			     C	\r
			     C	;\r
			     C	; ioctl i/o structure\r
			     C	;\r
			     C	\r
			     C	ioc_req struc\r
			     C	\r
 0000  000D[                 C	ioc_res 	db	13 dup (?)	; srh area\r
	   ??                C	\r
			 ]   C	\r
			     C	\r
 000D  00                    C	ioc_media_b	db	?\r
 000E  00000000              C	ioc_addr	dd	?\r
 0012  0000                  C	ioc_count	dw	?\r
 0014  0000                  C	ioc_sector	dw	?\r
			     C	\r
 0016                        C	ioc_req ends\r
			     C	\r
			     C	\r
			     C	; init\r
			     C	\r
 = 000D                      C	units		equ	srh+srh_len\r
 = 0001                      C	units_len	equ	1\r
 = 000E                      C	br_addr_0	equ	units+units_len\r
 = 0010                      C	br_addr_1	equ	br_addr_0+2\r
 = 0004                      C	br_addr_len	equ	4\r
 = 0012                      C	bpb_ptr_off	equ	br_addr_0+br_addr_len\r
 = 0014                      C	bpb_ptr_seg	equ	bpb_ptr_off+2\r
			     C	\r
			     C	\r
 = 000E                      C	end_addr_off	equ 14\r
 = 0010                      C	end_addr_seg	equ 16\r
			     C	\f

\r
 0000                        C	pktd_driver	proc	far\r
 0000                        C	begin:\r
 = 0000                      C	start	equ	$\r
			     C	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-3\r
\r
\r
			     C	; device header\r
 0000  FFFFFFFF              C	next_dev	dd	-1	; pointer to next device\r
 0004  C000                  C	attribute	dw	0c000h	; character device with ioctl\r
 0006  0241 R                C	strategy	dw	dev_strategy ; ptr to dev strategy\r
 0008  024C R                C	interrupt	dw	dev_int ; ptr to dev interrupt\r
 000A  4E 46 53 4C 49 4E     C	dev_name	db	'NFSLINK1'      ;  ethernet device driver\r
       4B 31                 C	\r
			     C	\r
			     C	public ethinit_offset\r
			     C	\r
 0012  03FA R                C	ethinit_offset	dw	offset ethinit\r
 0014  0000                  C	ethinit_segment dw	0\r
 0016  0434 R                C	ethsend_offset	dw	offset ethsend\r
 0018  0000                  C	ethsend_segment dw	0\r
			     C	\r
 001A  0000                  C	rh_off		dw	?	; request header offset\r
 001C  0000                  C	rh_seg		dw	?	; request header segment\r
			     C	\r
 001E  69                    C	matchtable	db	'i'             ;interrupt number\r
 001F  6D                    C			db	'm'             ;shared memory offset base (32K)\r
			     C	\r
 = 0002                      C	matchnum	equ	$-matchtable	;maximum number of entries\r
			     C	\r
 0020  036A R                C	routinetable	dw	intnumchange	;change default int num\r
 0022  036C R                C			dw	memoffchange	;change default shared memory base\r
			     C	\r
			     C	\r
			     C	\r
			     C	; function table\r
 0024                        C	funtab		label	byte\r
 0024  026F R                C		dw	init		;initialization\r
 0026  02AB R                C		dw	media_check\r
 0028  02AB R                C		dw	build_bpb\r
 002A  03B6 R                C		dw	ioctl_in\r
 002C  02AB R                C		dw	input		; read\r
 002E  02AB R                C		dw	nd_input\r
 0030  02AB R                C		dw	in_stat 	; input status\r
 0032  02AB R                C		dw	in_flush\r
 0034  02AB R                C		dw	output		; write\r
 0036  02AB R                C		dw	out_verify	; write w verify\r
 0038  02AB R                C		dw	out_stat\r
 003A  02AB R                C		dw	out_flush\r
 003C  03A8 R                C		dw	ioctl_out\r
			     C	\r
 003E  0A 0D 53 75 6E 20     C	init_msg	db 10,13,'Sun Microsystems PC-NFS Packet Driver Interface'\r
       4D 69 63 72 6F 73     C	\r
       79 73 74 65 6D 73     C	\r
       20 50 43 2D 4E 46     C	\r
       53 20 50 61 63 6B     C	\r
       65 74 20 44 72 69     C	\r
       76 65 72 20 49 6E     C	\r
       74 65 72 66 61 63     C	\r
       65                    C	\r
 006F  0A 0D                 C			db 10,13\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-4\r
\r
\r
 0071  56 65 72 73 69 6F     C			db 'Version 3.2'\r
       6E 20 33 2E 32        C	\r
 007C  0A 0D                 C			db 10,13\r
 007E  43 6F 70 79 72 69     C			db 'Copyright (c) 1989, 1990 Sun Microsystems, Inc.'\r
       67 68 74 20 28 63     C	\r
       29 20 31 39 38 39     C	\r
       2C 20 31 39 39 30     C	\r
       20 53 75 6E 20 4D     C	\r
       69 63 72 6F 73 79     C	\r
       73 74 65 6D 73 2C     C	\r
       20 49 6E 63 2E        C	\r
 00AD  0A 0D                 C			db 10,13\r
 00AF  54 68 69 73 20 64     C			db 'This driver may be freely copied, but not resold. It is NOT a supported'\r
       72 69 76 65 72 20     C	\r
       6D 61 79 20 62 65     C	\r
       20 66 72 65 65 6C     C	\r
       79 20 63 6F 70 69     C	\r
       65 64 2C 20 62 75     C	\r
       74 20 6E 6F 74 20     C	\r
       72 65 73 6F 6C 64     C	\r
       2E 20 49 74 20 69     C	\r
       73 20 4E 4F 54 20     C	\r
       61 20 73 75 70 70     C	\r
       6F 72 74 65 64        C	\r
 00F6  0A 0D                 C			db 10,13\r
 00F8  53 75 6E 20 4D 69     C			db 'Sun Microsystems product, and is provided "as is", with no warranty.'\r
       63 72 6F 73 79 73     C	\r
       74 65 6D 73 20 70     C	\r
       72 6F 64 75 63 74     C	\r
       2C 20 61 6E 64 20     C	\r
       69 73 20 70 72 6F     C	\r
       76 69 64 65 64 20     C	\r
       22 61 73 20 69 73     C	\r
       22 2C 20 77 69 74     C	\r
       68 20 6E 6F 20 77     C	\r
       61 72 72 61 6E 74     C	\r
       79 2E                 C	\r
 013C  0A 0D                 C			db 10,13\r
 013E  49 74 20 69 73 20     C			db 'It is designed to work with drivers conforming to Version 1.08 of the'\r
       64 65 73 69 67 6E     C	\r
       65 64 20 74 6F 20     C	\r
       77 6F 72 6B 20 77     C	\r
       69 74 68 20 64 72     C	\r
       69 76 65 72 73 20     C	\r
       63 6F 6E 66 6F 72     C	\r
       6D 69 6E 67 20 74     C	\r
       6F 20 56 65 72 73     C	\r
       69 6F 6E 20 31 2E     C	\r
       30 38 20 6F 66 20     C	\r
       74 68 65              C	\r
 0183  0A 0D                 C			db 10,13\r
 0185  46 54 50 20 53 6F     C			db 'FTP Software Packet Driver Specification.'\r
       66 74 77 61 72 65     C	\r
       20 50 61 63 6B 65     C	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-5\r
\r
\r
       74 20 44 72 69 76     C	\r
       65 72 20 53 70 65     C	\r
       63 69 66 69 63 61     C	\r
       74 69 6F 6E 2E        C	\r
 01AE  0A 0D                 C			db 10,13\r
 01B0  0A 0D                 C			db 10,13\r
 01B2  2A 2A 2A 20 54 68     C			db '*** This version will support NetWare coexistence when used with ***'\r
       69 73 20 76 65 72     C	\r
       73 69 6F 6E 20 77     C	\r
       69 6C 6C 20 73 75     C	\r
       70 70 6F 72 74 20     C	\r
       4E 65 74 57 61 72     C	\r
       65 20 63 6F 65 78     C	\r
       69 73 74 65 6E 63     C	\r
       65 20 77 68 65 6E     C	\r
       20 75 73 65 64 20     C	\r
       77 69 74 68 20 2A     C	\r
       2A 2A                 C	\r
 01F6  0A 0D                 C			db 10,13\r
 01F8  2A 2A 2A 20 61 6E     C			db '*** an appropriate NetWare packet driver.                        ***'\r
       20 61 70 70 72 6F     C	\r
       70 72 69 61 74 65     C	\r
       20 4E 65 74 57 61     C	\r
       72 65 20 70 61 63     C	\r
       6B 65 74 20 64 72     C	\r
       69 76 65 72 2E 20     C	\r
       20 20 20 20 20 20     C	\r
       20 20 20 20 20 20     C	\r
       20 20 20 20 20 20     C	\r
       20 20 20 20 20 2A     C	\r
       2A 2A                 C	\r
 023C  0A 0D                 C			db 10,13\r
 023E  0A 0D 24              C			db 10,13,'$'\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-6\r
\r
\r
			     C	page\r
			     C	\r
			     C	; device strategy\r
 0241                        C	dev_strategy:\r
 0241  2E: 8C 06 001C R      C		mov rh_seg, es		; save segment of request header\r
 0246  2E: 89 1E 001A R      C		mov rh_off, bx		; save offset of rh\r
 024B  CB                    C		ret\r
			     C	\r
			     C	\r
			     C	; device interrupt handler\r
 024C                        C	dev_int:\r
			     C	; preserve machine state on entry\r
			     C	\r
 024C  FC                    C		cld\r
 024D  1E                    C		push ds\r
 024E  06                    C		push es\r
 024F  50                    C		push ax\r
 0250  53                    C		push bx\r
 0251  51                    C		push cx\r
 0252  52                    C		push dx\r
 0253  57                    C		push di\r
 0254  56                    C		push si\r
			     C	\r
			     C	; do the branch according to the function passed\r
 0255  2E: 8E 06 001C R      C		mov	es,cs:rh_seg		;get request header\r
 025A  2E: 8B 1E 001A R      C		mov	bx,cs:rh_off\r
 025F  26: 8A 47 02          C		mov al, es:[bx]+2		; get function byte\r
			     C	\r
 0263  D0 E0                 C		shl al, 1			; get offset into table\r
 0265  8D 3E 0024 R          C		lea di, funtab			; get address of function table\r
 0269  32 E4                 C		xor ah, ah\r
 026B  03 F8                 C		add di, ax\r
 026D  FF 25                 C		jmp word ptr [di]\r
			     C	\r
 026F                        C	init:\r
 026F  0E                    C		push cs\r
 0270  5A                    C		pop dx\r
 0271  2E: 89 16 0014 R      C		mov ethinit_segment, dx ; save segment for long pointer\r
 0276  2E: 89 16 0018 R      C		mov ethsend_segment, dx\r
			     C	\r
			     C	extrn last_statement:near\r
			     C	\r
 027B  B8 0000 E             C		mov ax, offset last_statement\r
 027E  B1 04                 C		mov cl, 4\r
 0280  D3 E8                 C		shr ax, cl\r
 0282  03 C2                 C		add ax, dx\r
 0284  40                    C		inc ax\r
 0285  33 D2                 C		xor dx, dx\r
 0287  26: 89 57 0E          C		mov es:[bx][end_addr_off], dx\r
 028B  26: 89 47 10          C		mov es:[bx][end_addr_seg], ax\r
 028F  E8 02C8 R             C		call	parsecmdline\r
			     C		status done,noerror,0		; set status word (done, noerror)\r
 0292  26: 81 4F 03 0100     C1		or	es:word ptr srh_sta_fld[bx],0100h \r
 0298  26: 83 4F 03 00       C1		or	es:word ptr srh_sta_fld[bx],0 \r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-7\r
\r
\r
 029D  52                    C		push dx\r
 029E  50                    C		push ax\r
 029F  BA 003E R             C		mov dx, offset init_msg\r
 02A2  B4 09                 C		mov ah, 9\r
 02A4  CD 21                 C		int 21h\r
			     C	\r
 02A6  58                    C		pop	ax\r
 02A7  5A                    C		pop	dx\r
 02A8  EB 15 90              C		jmp exit\r
..\src\pktdd.asm(190): warning A5104: Jump within short distance\r
			     C	\r
			     C	\r
			     C	; the following are not supported\r
 02AB                        C	output:\r
 02AB                        C	media_check:\r
 02AB                        C	build_bpb:\r
 02AB                        C	nd_input:\r
 02AB                        C	in_stat:\r
 02AB                        C	in_flush:\r
 02AB                        C	out_stat:\r
 02AB                        C	out_flush:\r
 02AB                        C	out_verify:\r
 02AB                        C	input:\r
			     C	\r
			     C		status done, error, 02h 	; device not ready\r
 02AB  26: 81 4F 03 0100     C1		or	es:word ptr srh_sta_fld[bx],0100h \r
 02B1  26: 81 4F 03 8000     C1		or	es:word ptr srh_sta_fld[bx],8000h \r
 02B7  26: 83 4F 03 02       C1		or	es:word ptr srh_sta_fld[bx],02h \r
 02BC  EB 01 90              C		jmp exit\r
..\src\pktdd.asm(206): warning A5104: Jump within short distance\r
			     C	\r
			     C	;common exit\r
 02BF                        C	exit:\r
 02BF  5E                    C		pop si\r
 02C0  5F                    C		pop di\r
 02C1  5A                    C		pop dx\r
 02C2  59                    C		pop cx\r
 02C3  5B                    C		pop bx\r
 02C4  58                    C		pop ax\r
 02C5  07                    C		pop es\r
 02C6  1F                    C		pop ds\r
 02C7  CB                    C		ret\r
			     C	\r
 02C8                        C	parsecmdline	proc	near\r
			     C	\r
			     C	;	this proc is called at init time to parse the command line\r
			     C	;	initially only the number of files is passed\r
			     C	;	on entry	es:bx point to the request header\r
			     C	\r
 02C8  06                    C		push	es\r
 02C9  53                    C		push	bx			;save pointers to request header\r
 02CA  26: C4 7F 12          C		les	di,es:dword ptr bpb_ptr_off[bx] ;point to char after 'device =' in config.sys\r
 02CE  FC                    C		cld\r
 02CF                        C	getnextitem:\r
 02CF  B9 FFFF               C		mov	cx,-1		;max\r
 02D2  B0 2F                 C		mov	al,'/'          ;look for /\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-8\r
\r
\r
 02D4                        C	s_loop:\r
 02D4  AE                    C		scasb		;look for one\r
 02D5  74 12                 C		jz	foundslash\r
 02D7  26: 80 7D FF 0D       C		cmp	es:byte ptr [di-1],0dh	;cr ends the line\r
 02DC  74 3E                 C		jz	noslash\r
 02DE  26: 80 7D FF 0A       C		cmp	es:byte ptr [di-1],0ah	;line feed also ends it\r
 02E3  74 37                 C		jz	noslash\r
 02E5  E2 ED                 C		loop	s_loop\r
 02E7  EB 33                 C		jmp	short noslash\r
 02E9                        C	foundslash:\r
 02E9  E8 031F R             C		call	getcharacter		;get next non blank character\r
 02EC  73 03                 C		jnc	gotchar 		;if carry set then eol reached\r
 02EE  EB 2C 90              C		jmp	noslash\r
..\src\pktdd.asm(245): warning A5104: Jump within short distance\r
 02F1                        C	gotchar:\r
 02F1  3C 41                 C		cmp	al,'A'                  ;see if upper case\r
 02F3  72 06                 C		jb	lower			;must be digit or trash\r
 02F5  3C 5A                 C		cmp	al,'Z'\r
 02F7  77 02                 C		ja	lower\r
 02F9  0C 20                 C		or	al,20h			;convert to lower\r
 02FB                        C	lower:\r
 02FB  06                    C		push	es\r
 02FC  57                    C		push	di			;save pointer\r
 02FD  0E                    C		push	cs\r
 02FE  07                    C		pop	es			;look for match\r
 02FF  BF 001E R             C		mov	di,offset matchtable\r
 0302  B9 0002               C		mov	cx,matchnum		;get number of entries\r
 0305  F2/ AE                C		repne	scasb			;try to find a match\r
 0307  5F                    C		pop	di\r
 0308  07                    C		pop	es			;get pointer back\r
 0309  75 C4                 C		jnz	getnextitem		;nothing so try again\r
 030B  83 E9 02              C		sub	cx,matchnum		;find the right one\r
 030E  F7 D9                 C		neg	cx\r
 0310  49                    C		dec	cx\r
 0311  8B D9                 C		mov	bx,cx\r
 0313  D1 E3                 C		shl	bx,1\r
 0315  2E: FF 97 0020 R      C		call	cs:routinetable[bx]	;call routine\r
 031A  73 B3                 C		jnc	getnextitem\r
 031C                        C	noslash:\r
 031C  5B                    C		pop	bx			;get header ptr back\r
 031D  07                    C		pop	es\r
 031E  C3                    C		ret				;return if eol\r
			     C	\r
 031F                        C	parsecmdline endp\r
			     C	;\r
			     C	\r
			     C	\r
 031F                        C	getcharacter	proc	 near\r
			     C	\r
			     C	;	this procedure will get a character from ES:DI and inc di\r
			     C	;	if the character is a terminator carry will be set\r
			     C	;	and the pointer will point at the terminator character\r
			     C	;	if the character is a non blank the character is returned\r
			     C	;	in al with carry clear.  Pointer will point to next character\r
			     C	;	Blanks and tabs are skipped\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-9\r
\r
\r
			     C	\r
 031F  E3 1F                 C		jcxz	term\r
 0321  26: 8A 05             C		mov	al,es:[di]		;get the character\r
 0324  3C 09                 C		cmp	al,9			;tab\r
 0326  74 14                 C		je	blank\r
 0328  3C 20                 C		cmp	al,' '                  ;space\r
 032A  74 10                 C		je	blank\r
 032C  3C 0D                 C		cmp	al,0dh			;cr\r
 032E  74 10                 C		je	term\r
 0330  3C 0A                 C		cmp	al,0ah			;lf\r
 0332  74 0C                 C		je	term\r
 0334  3C 1A                 C		cmp	al,1ah			;end of file\r
 0336  74 08                 C		je	term\r
 0338  47                    C		inc	di			;point to next character\r
 0339  49                    C		dec	cx\r
 033A  F8                    C		clc\r
 033B  C3                    C		ret				;and return to caller\r
 033C                        C	blank:\r
 033C  47                    C		inc	di			;point to next\r
 033D  49                    C		dec	cx\r
 033E  EB DF                 C		jmp	getcharacter		;and get another\r
			     C	\r
 0340                        C	term:\r
 0340  F9                    C		stc\r
 0341  C3                    C		ret				;got a terminator\r
			     C	\r
 0342                        C	getcharacter endp\r
			     C	\r
 0342                        C	getnumber	proc	near\r
			     C	\r
			     C	;	this procedure will obtain a number from the input buffer\r
			     C	;	pointed to by ES:DI\r
			     C	;	value is returned in BX\r
			     C	\r
 0342  2B DB                 C		sub	bx,bx\r
 0344  B9 FFFF               C		mov	cx,-1			;max characters in num\r
 0347                        C	gn0:\r
 0347  E8 031F R             C		call	getcharacter		;get a character\r
 034A  73 01                 C		jnc	gn1			;got one\r
 034C  C3                    C		ret				;terminator reached\r
 034D                        C	gn1:\r
 034D  3C 2F                 C		cmp	al,'/'                  ; if slash, we are done\r
 034F  74 17                 C		je	end_gn\r
 0351  3C 30                 C		cmp	al,'0'                  ;must be digit\r
 0353  72 12                 C		jb	numerror\r
 0355  3C 39                 C		cmp	al,'9'\r
 0357  77 0E                 C		ja	numerror\r
 0359  50                    C		push	ax\r
 035A  B0 0A                 C		mov	al,10\r
 035C  F6 E3                 C		mul	bl			;bump up bl\r
 035E  8B D8                 C		mov	bx,ax\r
 0360  58                    C		pop	ax\r
 0361  2C 30                 C		sub	al,'0'                  ;convert to binary\r
 0363  02 D8                 C		add	bl,al\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-10\r
\r
\r
 0365  EB E0                 C		jmp	gn0			;try for more\r
			     C	\r
 0367                        C	numerror:\r
 0367  C3                    C		ret				;return with carry set\r
			     C	\r
 0368                        C	end_gn:\r
 0368  4F                    C		dec	di			;set di to point to '/' for main loop\r
 0369  C3                    C		ret\r
			     C	\r
 036A                        C	getnumber endp\r
			     C	\r
 036A                        C	intnumchange	proc	near\r
			     C	\r
 036A  F8                    C		clc\r
 036B  C3                    C		ret\r
			     C	\r
 036C                        C	intnumchange	endp\r
			     C	\r
			     C	\r
			     C	\r
 036C                        C	memoffchange	proc	near\r
			     C	\r
 036C  F8                    C		clc\r
 036D  C3                    C		ret\r
 036E                        C	memoffchange	 endp\r
			     C	\r
			     C	\r
 036E                        C	gethnumber	 proc	 near\r
			     C	\r
			     C	;	this procedure will obtain a number from the input buffer\r
			     C	;	pointed to by ES:DI\r
			     C	;	value is returned in BX\r
			     C	\r
 036E  2B DB                 C		sub	bx,bx\r
 0370  B9 FFFF               C		mov	cx,-1			;max characters in num\r
 0373                        C	ghn0:\r
 0373  E8 031F R             C		call	getcharacter		;get a character\r
 0376  73 01                 C		jnc	ghn1			;got one\r
 0378  C3                    C		ret				;terminator reached\r
 0379                        C	ghn1:\r
 0379  3C 2F                 C		cmp	al,'/'                  ; if slash, we are done\r
 037B  74 29                 C		je	end_ghn\r
 037D  3C 30                 C		cmp	al,'0'                  ;must be digit\r
 037F  72 21                 C		jb	numbererr\r
 0381  3C 39                 C		cmp	al,'9'\r
 0383  72 0F                 C		jb	ok_num\r
 0385  0C 20                 C		or	al,20H			; should be a character, toupper it\r
 0387  3C 61                 C		cmp	al,'a'\r
 0389  72 17                 C		jb	numbererr\r
 038B  3C 66                 C		cmp	al,'f'                 ; 'f' is max legal hex char\r
 038D  77 13                 C		ja	numbererr\r
 038F  2C 57                 C		sub	al,57H		       ; subtract enough so 'a' becomes 0x0a\r
 0391  EB 03 90              C		jmp	ok_letter\r
..\src\pktdd.asm(393): warning A5104: Jump within short distance\r
			     C	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-11\r
\r
\r
 0394                        C	ok_num:\r
 0394  2C 30                 C		sub	al,'0'\r
			     C	\r
 0396                        C	ok_letter:\r
 0396  D1 E3                 C		shl    bx,1		       ; move a nibble\r
 0398  D1 E3                 C		shl    bx,1\r
 039A  D1 E3                 C		shl    bx,1\r
 039C  D1 E3                 C		shl    bx,1\r
 039E  0A D8                 C		or     bl,al		       ; or in al, the new char\r
 03A0  EB D1                 C		jmp	ghn0			;try for more\r
			     C	\r
 03A2                        C	numbererr:\r
 03A2  BB 0000               C		mov	bx,0			; make sure return with illegal number\r
 03A5  C3                    C		ret				;return with carry set\r
			     C	\r
 03A6                        C	end_ghn:\r
 03A6  4F                    C		dec	di			;set di to point to '/' for main loop\r
 03A7  C3                    C		ret\r
			     C	\r
 03A8                        C	gethnumber endp\r
			     C	\r
			     C	\r
			     C	\r
			     C	\r
			     C	\r
			     C	; i/o control\r
			     C	;\r
			     C	\r
			     C	;\r
			     C	; to use i/o control:\r
			     C	;\r
			     C	;	1. write an ioctl string to this device  containing\r
			     C	;	   one (1) byte; this byte is a function code.\r
			     C	;\r
			     C	;	2. read the ioctl string returned - it is four bytes, and\r
			     C	;	   is the double word pointer selected by the function code\r
			     C	;	   you just wrote in #1.\r
			     C	;\r
			     C	\r
			     C	\r
 03A8                        C	ioctl_out:\r
			     C	\r
			     C		status	done, noerror, 0\r
 03A8  26: 81 4F 03 0100     C1		or	es:word ptr srh_sta_fld[bx],0100h \r
 03AE  26: 83 4F 03 00       C1		or	es:word ptr srh_sta_fld[bx],0 \r
 03B3  E9 02BF R             C		jmp	exit\r
			     C	\r
			     C	\r
 03B6                        C	ioctl_in:\r
			     C		status	done, noerror, 0\r
 03B6  26: 81 4F 03 0100     C1		or	es:word ptr srh_sta_fld[bx],0100h \r
 03BC  26: 83 4F 03 00       C1		or	es:word ptr srh_sta_fld[bx],0 \r
 03C1  E9 02BF R             C		jmp	exit\r
			     C	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-12\r
\r
\r
			     C	\r
			     C	\r
			     C	\r
 03C4                        C	pktd_driver	endp\r
				include pktd.mac\r
			     C	;       @(#)pktd.mac.u	1.1     6/20/89\r
			     C	;\r
			     C	; Copyright (c) 1989 by Sun Microsystems, Inc.\r
			     C	;\r
			     C	\r
			     C	save_regs	macro\r
			     C			push_f\r
			     C			push	es\r
			     C			push	ds\r
			     C			push	ax\r
			     C			push	bx\r
			     C			push	cx\r
			     C			push	dx\r
			     C			push	bp\r
			     C			push	di\r
			     C			push	si\r
			     C			endm;	save_regs\r
			     C	restore_regs	macro\r
			     C			pop	si\r
			     C			pop	di\r
			     C			pop	bp\r
			     C			pop	dx\r
			     C			pop	cx\r
			     C			pop	bx\r
			     C			pop	ax\r
			     C			pop	ds\r
			     C			pop	es\r
			     C			pop_f\r
			     C			endm;	restore_regs\r
			     C	save_es_ax	macro\r
			     C			push	es\r
			     C			push	ax\r
			     C			endm;	save_es_ax\r
			     C	\r
			     C	restore_es_ax	macro\r
			     C			pop	ax\r
			     C			pop	es\r
			     C			endm;	restore_es_ax\r
			     C	\r
			     C	save_ax 	macro\r
			     C			push	ax\r
			     C			endm;	save_ax\r
			     C	restore_ax	macro\r
			     C			pop	ax\r
			     C			endm;	restore_ax\r
			     C	push_f	macro\r
			     C			pushf\r
			     C			endm;	push_f\r
			     C	; some 286's have a bug which allows an interrupt to occur during a\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-13\r
\r
\r
			     C	; popf instruction even when going from disabled state to disabled\r
			     C	; state.  using this popff macro avoids this problem.\r
			     C	pop_f	macro\r
			     C	  ifdef popfbug\r
			     C		push cs\r
			     C		call iretins\r
			     C	  else\r
			     C		popf\r
			     C	  endif\r
			     C	endm\r
			     C	\r
			     C	disable_others	macro	flag\r
			     C			in	al,int_ctrmask		; get interrupt mask\r
			     C			jmp	$+2\r
			     C	 ifnb	<flag>\r
			     C			push	ax			; save mask\r
			     C	 endif; <flag>\r
			     C	 ifb	<flag>\r
			     C			mov	ah,al			; save in ah\r
			     C	 endif; !<flag>\r
			     C			or	al,not_intmask		; mask all but ours\r
			     C			out	int_ctrmask,al		; set mask\r
			     C			jmp	$+2\r
			     C			endm;	disable_others\r
			     C	restore_int	macro	flag\r
			     C	 ifnb	<flag>\r
			     C			pop	ax			; get saved mask\r
			     C	 endif; <flag>\r
			     C	 ifb	<flag>\r
			     C	\r
			     C			mov	al,ah			; get saved mask\r
			     C	 endif; !<flag>\r
			     C			out	int_ctrmask,al		; reinstate it\r
			     C			jmp	$+2\r
			     C			endm;	restore_int\r
			     C	\r
			     C	\r
			     C	;	manifest constants\r
 = 05EA                      C	maxpacket	equ 1514		; max packet size\r
 = 0040                      C	minpacket	equ 64			; min eth packet size\r
			     C	\r
			     C	\r
				include protocol.inc\r
			     C	;	@(#)protocol.inc.u	8.1	3/15/89\r
			     C	;************************************************************************\r
			     C	;************************************************************************\r
			     C	;***                                                                  ***\r
			     C	;***       Sun Microsystems Incorporated    P C - N F S   Source      ***\r
			     C	;***                                                                  ***\r
			     C	;***                                                                  ***\r
			     C	;***       Copyright (c) 1986, 1987 by Sun Microsystems, Inc.         ***\r
			     C	;***                                                                  ***\r
			     C	;***               ***** All rights reserved. *****                   ***\r
			     C	;***                                                                  ***\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-14\r
\r
\r
			     C	;***       Source licensees should refer to their source license      ***\r
			     C	;***       agreement for the detailed terms and conditions cover-     ***\r
			     C	;***       ing the use of this code. Under no circumstances may       ***\r
			     C	;***       this notice be removed from the source code.               ***\r
			     C	;***                                                                  ***\r
			     C	;************************************************************************\r
			     C	;************************************************************************\r
			     C	;***                                                                  ***\r
			     C	;***       Module name:  protocol.inc                                 ***\r
			     C	;***                                                                  ***\r
			     C	;***       Description:  Various IP packet offsets & fields           ***\r
			     C	;***                                                                  ***\r
			     C	;************************************************************************\r
			     C	;************************************************************************\r
			     C	\r
			     C	;	@(#)protocol.inc.u	5.1	4/24/87\r
			     C	;\r
			     C	; Network packet types in network (i.e. byte-reversed) form - see led.asm\r
			     C	;\r
 = 0608                      C	ARP_ETHER_TYPE		EQU 608H\r
 = 3580                      C	REVARP_ETHER_TYPE	EQU 3580H\r
 = 0008                      C	INTERNET_ETHER_TYPE	EQU 8H\r
			     C	\r
 = 0014                      C	ip_header_size	equ	20\r
			     C	\r
			     C	;\r
			     C	;\r
			     C	;	This is not in network order\r
			     C	;\r
 = 0009                      C	DISCARD_PROTOCOL_PORT	equ	9\r
			     C	\r
			     C	;	packet offsets of interest\r
 = 0000                      C	pkt_dest	equ 0			; destination address\r
 = 000C                      C	pkt_type	equ 12			; type field (ARP or IP)\r
 = 000E                      C	pkt_ver_ihl	equ 14			; start of IP header\r
 = 0014                      C	pkt_ip_frag	equ 20			; 16 bit fragmentation info\r
 = 0017                      C	pkt_ip_subtype	equ 23			; IP subprotocol (TCP, ICMP or UDP)\r
 = 0024                      C	pkt_udp_dport	equ 36			; IP/UDP destination port\r
			     C	; actually it's pkt_ver_ihl + ihl*4 + 2\r
 = 002A                      C	pkt_select	equ 42			; stream select field\r
			     C	\r
			     C	; network dependent data\r
 = 05EB                      C	largest_packet	equ 1515\r
			     C	\r
			     C	\r
			     C	;\r
			     C	;	the following are the flag bits in the ip header\r
			     C	;\r
 = 4000                      C	ip_flag_df	equ	04000h		; don't fragment\r
 = 2000                      C	ip_flag_mf	equ	02000h		; more fragments\r
 = 1FFF                      C	ip_flag_off	equ	01fffh		; offset field mask\r
			     C	\r
			     C	;\r
			     C	; The following are just bytes in the IP header\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-15\r
\r
\r
			     C	\r
 = 0011                      C	ip_subtype_udp	equ	17	\r
 = 0001                      C	ip_subtype_icmp	equ	1\r
 = 0006                      C	ip_subtype_tcp	equ	6\r
			     C	\r
			     C	\f

\r
			     C	\r
			     C	; icmp specific definitions.\r
			     C	;\r
			     C	\r
 = 0000                      C	icmp_echo_reply		equ	000h\r
 = 0003                      C	icmp_dest_unreach	equ	003h\r
 = 0004                      C	icmp_source_quench	equ	004h\r
 = 0005                      C	icmp_redirect		equ	005h\r
 = 0008                      C	icmp_echo_message	equ	008h\r
 = 000B                      C	icmp_time_exceeded	equ	00bh\r
 = 000C                      C	icmp_param_problem	equ	00ch\r
 = 000D                      C	icmp_timestamp		equ	00dh\r
 = 000E                      C	icmp_timestamp_reply	equ	00eh\r
 = 000F                      C	icmp_info_request	equ	00fh\r
 = 0010                      C	icmp_info_reply		equ	010h\r
 = 0011                      C	icmp_am_req		equ	011h		; AM1 - address mask request\r
 = 0012                      C	icmp_am_resp		equ	012h		; AM2 - address mask reply\r
			     C	\r
			     C	ether_icmp	struc\r
 0000  000E[                 C	icmp_eth_dummy		db	14 dup(0)	      ; skip ethernet stuff\r
	   00                C	\r
			 ]   C	\r
			     C	\r
 000E  0014[                 C	icmp_ip_dummy		db	ip_header_size dup(0) ; skip ip stuff\r
	   00                C	\r
			 ]   C	\r
			     C	\r
 0022  00                    C	icmp_type		db	0\r
 0023  00                    C	icmp_code		db	0\r
 0024  0000                  C	icmp_chksum		dw	0\r
 0026  0000                  C	icmp_ident		dw	0		; for AM1/AM2 - ignored\r
 0028  0000                  C	icmp_seq		dw	0		; ditto\r
 002A  00000000              C	icmp_amask		dd	0		; addr mask or orig.timestamp\r
 002E  00000000              C	icmp_rcv_tstamp		dd	0		; rcv timestamp\r
 0032  00000000              C	icmp_xmit_tstamp	dd	0\r
 0036                        C	ether_icmp	ends\r
			     C	\r
			     C	problem_icmp	struc\r
 0000  000E[                 C	p_icmp_eth_dummy	db	14 dup(0)	      ; skip ethernet stuff\r
	   00                C	\r
			 ]   C	\r
			     C	\r
 000E  0014[                 C	p_icmp_ip_dummy		db	ip_header_size dup(0) ; skip ip stuff\r
	   00                C	\r
			 ]   C	\r
			     C	\r
 0022  00                    C	p_icmp_type		db	0\r
 0023  00                    C	p_icmp_code		db	0\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-16\r
\r
\r
 0024  0000                  C	p_icmp_chksum		dw	0\r
 0026  0000                  C	p_icmp_gw_l		dw	0		; gateway for redirect\r
 0028  0000                  C	p_icmp_gw_h		dw	0\r
 002A  00                    C	p_icmp_ip_hl_v		db	0		; IP header of packet\r
 002B  00                    C	p_icmp_ip_tos		db	0\r
 002C  0000                  C	p_icmp_ip_len		dw	0\r
 002E  0000                  C	p_icmp_ip_id		dw	0\r
 0030  0000                  C	p_icmp_ip_offset	dw	0\r
 0032  00                    C	p_icmp_ip_ttl		db	0\r
 0033  00                    C	p_icmp_ip_p		db	0\r
 0034  0000                  C	p_icmp_ip_sum		dw	0\r
 0036  0000                  C	p_icmp_ip_src_l		dw	0		; src IP addr from hdr\r
 0038  0000                  C	p_icmp_ip_src_h		dw	0\r
 003A  0000                  C	p_icmp_ip_dest_l	dw	0		; dest IP addr from hdr\r
 003C  0000                  C	p_icmp_ip_dest_h	dw	0\r
			     C	; more stuff we don't care about\r
 003E                        C	problem_icmp	ends\r
				include log.inc\r
			     C	;	@(#)log.inc.u	8.1	3/15/89\r
			     C	;\r
			     C	; Copyright (c) 1986 by Sun Microsystems, Inc.\r
			     C	; All rights reserved.\r
			     C	;\r
			     C	;\r
			     C	;	@(#)log.inc	1.1\r
			     C	;\r
			     C	;	The following definitions and macros are used for the 'syslog'\r
			     C	;	facility. It works like this:\r
			     C	;\r
			     C	;	In every driver (here, in pci and led) there must exist a module\r
			     C	;	which contains two variable declarations - for 'log_seg' and\r
			     C	;	'log_base' - and an instance of the procedure 'logger', which may\r
			     C	;	be created by invoking the 'logproc' macro. Other modules within\r
			     C	;	the driver may include invocations of the 'log' macro. The latter\r
			     C	;	increments a tally associated with a particular event. It may be\r
			     C	;	called as:\r
			     C	;			log	_LOG_XXX\r
			     C	;	where _LOG_XXX is one of the constants defined below, or as:\r
			     C	;			log	register\r
			     C	;	(e.g. 'log bx'), where the register contains the event number.\r
			     C	;\r
			     C	;	The "nfsinit" module creates the log buffer \r
			     C	;	using the 'logbuffer' macro, and should propagate the values of\r
			     C	;	'log_seg' and 'log_base' to other drivers using the facility.\r
			     C	;\r
			     C	;	An ioctl is available in order that user-mode utilities\r
			     C	;	may access the log buffer for reporting purposes.\r
			     C	;\r
			     C	logbuffer	macro\r
			     C	log_buffer	dd	_LOG_MAX dup (0)\r
			     C		endm\r
			     C	\r
			     C	\r
			     C	;\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-17\r
\r
\r
			     C	logproc 	macro\r
			     C	public		log_proc\r
			     C	log_proc	proc	near\r
			     C			pushf\r
			     C	\r
			     C			push	bx		; save base register\r
			     C			push	es		; used to address log buffer\r
			     C			mov	bx, cs:log_seg	; for ie6: code & data now separate\r
			     C			mov	es, bx\r
			     C			mov	bx, ax		; stupid 808x architecture\r
			     C			shl	bx,1		; scale to ...\r
			     C			shl	bx,1		; ... doublewords\r
			     C			add	bx, cs:log_base	; now es:ax points at the tally\r
			     C			mov	ax, es:[bx]	; get low order word\r
			     C			add	ax, 1		; bump it\r
			     C			mov	es:[bx], ax	; store it\r
			     C			mov	ax, es:[bx+2]	; now the high-order word\r
			     C			adc	ax, 0		; add in any carry-out\r
			     C			mov	es:[bx+2], ax	; store it\r
			     C			pop	es		; restore\r
			     C			pop	bx		;	and\r
			     C	\r
			     C			popf\r
			     C			ret			;		exit\r
			     C	log_proc	endp\r
			     C			endm\r
			     C	;\r
			     C	log		macro	n\r
			     C		IFNDEF	log_proc\r
			     C	extrn log_proc : near\r
			     C		ENDIF\r
			     C			push	ax		; used to pass argument\r
			     C		IFDIF	<n>,<ax>\r
			     C			mov	ax, n		; pick up argument\r
			     C		ENDIF\r
			     C			call	log_proc	; log it\r
			     C			pop	ax\r
			     C			endm\r
			     C	;\r
			     C	;	The following are the entries currently defined. This table should\r
			     C	;	be updated in parallel with 'log.h', the C-language version.\r
			     C	;\r
			     C	; Remote file service routines\r
 = 0000                      C	_LOG_NULL		equ	0\r
 = 0001                      C	_LOG_GETATTR		equ	1\r
 = 0002                      C	_LOG_SETATTR		equ	2\r
 = 0003                      C	_LOG_ROOT		equ	3\r
 = 0004                      C	_LOG_LOOKUP		equ	4\r
 = 0005                      C	_LOG_READLINK		equ	5\r
 = 0006                      C	_LOG_READ		equ	6\r
 = 0007                      C	_LOG_WRITECACHE 	equ	7\r
 = 0008                      C	_LOG_WRITE		equ	8\r
 = 0009                      C	_LOG_CREATE		equ	9\r
 = 000A                      C	_LOG_REMOVE		equ	10\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-18\r
\r
\r
 = 000B                      C	_LOG_RENAME		equ	11\r
 = 000C                      C	_LOG_LINK		equ	12\r
 = 000D                      C	_LOG_SYMLINK		equ	13\r
 = 000E                      C	_LOG_MKDIR		equ	14\r
 = 000F                      C	_LOG_RMDIR		equ	15\r
 = 0010                      C	_LOG_READDIR		equ	16\r
 = 0011                      C	_LOG_STATFS		equ	17\r
			     C	;\r
			     C	; RPC events\r
 = 0012                      C	_LOG_RPC_CALL		equ	18\r
 = 0013                      C	_LOG_RPC_XMIT		equ	19\r
 = 0014                      C	_LOG_RPC_REPLY		equ	20\r
 = 0015                      C	_LOG_RPC_ACCEPTED	equ	21\r
 = 0016                      C	_LOG_RPC_DENIED 	equ	22\r
 = 0017                      C	_LOG_RPC_SUCCESS	equ	23\r
 = 0018                      C	_LOG_PROG_UNAVAIL	equ	24\r
 = 0019                      C	_LOG_PROG_MISMATCH	equ	25\r
 = 001A                      C	_LOG_PROC_UNAVAIL	equ	26\r
 = 001B                      C	_LOG_GARABAGE_ARGS	equ	27\r
 = 001C                      C	_LOG_SYSTEM_ERR 	equ	28\r
 = 001D                      C	_LOG_RPC_MISMATCH	equ	29\r
 = 001E                      C	_LOG_AUTH_ERR		equ	30\r
			     C	;\r
			     C	; ARP events\r
 = 001F                      C	_LOG_ARP_GOT_REQ	equ	31\r
 = 0020                      C	_LOG_ARP_SENT_REPLY	equ	32\r
 = 0021                      C	_LOG_ARP_SENT_REQ	equ	33\r
 = 0022                      C	_LOG_ARP_GOT_REPLY	equ	34\r
 = 0023                      C	_LOG_ARP_REQUESTS	equ	35\r
 = 0024                      C	_LOG_ARP_SUCCESS	equ	36\r
			     C	;\r
			     C	; Ethernet events\r
 = 0025                      C	_LOG_ETH_XMIT		equ	37              ; TOTAL xmitted\r
 = 0026                      C	_LOG_ETH_RCV		equ	38              ; TOTAL rcved\r
 = 0027                      C	_LOG_ETH_RCV_FOR_ME	equ	39\r
 = 0028                      C	_LOG_ETH_ARP		equ	40\r
 = 0029                      C	_LOG_ETH_ICMP		equ	41              ; snmp icmpInMsgs\r
 = 002A                      C	_LOG_ETH_UDP		equ	42\r
 = 002A                      C	_LOG_ETH_TCP_CHKSM_ERR	equ	42\r
 = 002C                      C	_LOG_ETH_UDP_NFS	equ	44\r
 = 002D                      C	_LOG_ETH_TCP		equ	45\r
 = 002E                      C	_LOG_ETH_MISC		equ	46\r
 = 002F                      C	_LOG_ETH_DROPPED	equ	47              ; snmp ifInDiscards\r
 = 0030                      C	_LOG_ETH_XMIT_ERR	equ	48              ; snmp ifOutErrors\r
 = 0031                      C	_LOG_ETH_RCV_ERR	equ	49              ; snmp ifInErrors\r
 = 0032                      C	_LOG_ETH_COLLISIONS	equ	50\r
 = 0033                      C	_LOG_ETH_IP_CHKSM_ERR	equ	51\r
			     C	; Buffer cache events\r
 = 0034                      C	_LOG_BCACHE_HITS	equ	52\r
 = 0035                      C	_LOG_BCACHE_MISSES	equ	53\r
 = 0036                      C	_LOG_BCACHE_WR_INVAL	equ	54\r
 = 0037                      C	_LOG_BCACHE_STEALS	equ	55\r
			     C	; Name mapping events\r
 = 0038                      C	_LOG_NAME_MAPS		equ	56\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-19\r
\r
\r
 = 0039                      C	_LOG_NAME_BACKMAPS	equ	57\r
 = 003A                      C	_LOG_NAME_STALE 	equ	58\r
			     C	; ICMP stuff\r
 = 003B                      C	_LOG_ICMP_NETUNREACH	equ	59              ; NOT SNMP - our count of "cannot delivers"..\r
 = 003C                      C	_LOG_ICMP_OUTMSGS   	equ	60              ; snmp icmpOutMsgs (was spare1)\r
			     C	; IP fragment stuff\r
 = 003D                      C	_LOG_IP_FRAG_DISCARD	equ	61\r
 = 003E                      C	_LOG_IP_FRAG_REASS_OK	equ	62\r
 = 003F                      C	_LOG_IP_FRAG_REASS_TRY	equ	63\r
 = 0040                      C	_LOG_IP_DUPFRAG		equ	64\r
 = 0041                      C	_LOG_IP_FRAGS		equ	65\r
			     C	;\r
 = 0042                      C	_LOG_ETH_INT		equ	66\r
 = 0043                      C	_LOG_ETH_SINT		equ	67\r
 = 0044                      C	_LOG_ETH_RINT		equ	68\r
 = 0045                      C	_LOG_ETH_SPUR		equ	69\r
 = 0046                      C	_LOG_ETH_XMIT_TMOUT	equ	70\r
			     C	;\r
 = 0047                      C	_LOG_SHARE_REQUEST	equ	71\r
 = 0048                      C	_LOG_SHARE_DENIED	equ	72\r
 = 0049                      C	_LOG_SHARE_ERROR	equ	73\r
 = 004A                      C	_LOG_UNSHARE_REQUEST	equ	74\r
 = 004B                      C	_LOG_UNSHARE_ERROR	equ	75\r
			     C	;\r
 = 004C                      C	_LOG_LOCK_REQUEST	equ	76\r
 = 004D                      C	_LOG_LOCK_FAILED	equ	77\r
 = 004E                      C	_LOG_LOCK_ERROR		equ	78\r
 = 004F                      C	_LOG_UNLOCK_REQUEST	equ	79\r
 = 0050                      C	_LOG_UNLOCK_ERROR	equ	80\r
			     C	;\r
			     C	; Extensions for minimal SNMP support\r
			     C	;\r
			     C	; Interface  (Ethernet)\r
 = 0051                      C	_LOG_ETH_INNUCAST      equ     81              ; snmp ifInNUcastPkts\r
 = 0052                      C	_LOG_ETH_OUNUCAST      equ     82              ; snmp ifOutNUcastPkts\r
 = 0053                      C	_LOG_ETH_OUTDISC       equ     83              ; snmp ifOutDiscards\r
			     C	;\r
 = 0054                      C	_LOG_IP_NOROUTE        equ     84              ; snmp ipOutNoRoutes\r
			     C	\r
			     C	;\r
 = 0055                      C	_LOG_ICMP_INMASKS      equ     85              ; snmp icmpInAddrMasks\r
 = 0056                      C	_LOG_ICMP_INMASKREP    equ     86              ; snmp icmpInAddrMaskReps\r
 = 0057                      C	_LOG_ICMP_INDSTUNRCH   equ     87              ; snmp icmpInDestUnreachs\r
			     C	\r
			     C	; maybe these will be too much !!!!!!!!!!!!\r
 = 0058                      C	_LOG_ICMP_INECHO       equ     88              ; snmp icmpInEchos\r
 = 0059                      C	_LOG_ICMP_INTIMEX      equ     89              ; snmp icmpInTimeExcds\r
 = 005A                      C	_LOG_ICMP_INPARMPR     equ     90              ; snmp icmpInParmProbs\r
 = 005B                      C	_LOG_ICMP_INQUENCH     equ     91              ; snmp icmpInSrcQuenchs\r
 = 005C                      C	_LOG_ICMP_INREDIR      equ     92              ; snmp icmpInRedirects\r
 = 005D                      C	_LOG_ICMP_INTIMEST     equ     93              ; snmp icmpInTimestamps\r
 = 005E                      C	_LOG_ICMP_OUTECHOREP   equ     94              ; snmp icmpOutEchoReps\r
 = 005F                      C	_LOG_ICMP_OUTTIMEREP   equ     95              ; snmp icmpOutTimestampReps\r
 = 0060                      C	_LOG_ICMP_OUTMASK      equ     96              ; snmp icmpOutAddrMasks\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-20\r
\r
\r
			     C	                                 \r
			     C	; This should always be updated correctly::::\r
 = 0061                      C	_LOG_MAX	equ	97 \r
			     C	;============================================================================\r
			     C	\r
			     C	\r
			     C	\r
				include select.inc\r
			     C	;	@(#)select.inc.u	8.1	3/15/89\r
			     C	;************************************************************************\r
			     C	;************************************************************************\r
			     C	;***                                                                  ***\r
			     C	;***       Sun Microsystems Incorporated    P C - N F S   Source      ***\r
			     C	;***                                                                  ***\r
			     C	;***                                                                  ***\r
			     C	;***       Copyright (c) 1986, 1987 by Sun Microsystems, Inc.         ***\r
			     C	;***                                                                  ***\r
			     C	;***               ***** All rights reserved. *****                   ***\r
			     C	;***                                                                  ***\r
			     C	;***       Source licensees should refer to their source license      ***\r
			     C	;***       agreement for the detailed terms and conditions cover-     ***\r
			     C	;***       ing the use of this code. Under no circumstances may       ***\r
			     C	;***       this notice be removed from the source code.               ***\r
			     C	;***                                                                  ***\r
			     C	;************************************************************************\r
			     C	;************************************************************************\r
			     C	;***                                                                  ***\r
			     C	;***       Module name: select.inc                                    ***\r
			     C	;***                                                                  ***\r
			     C	;***       Description: This file includes the structure definitions  ***\r
			     C	;***                    for the select table, a macro which will      ***\r
			     C	;***                    build it, and numerous macros for fiddling    ***\r
			     C	;***                    and diddling with select table fields.        ***\r
			     C	;***                                                                  ***\r
			     C	;************************************************************************\r
			     C	;************************************************************************\r
			     C	\r
			     C	;/*\r
			     C	; * The following declarations define the layout of the\r
			     C	; * select table structure. They correspond exactly to the\r
			     C	; * C language definitions in select.h, and should not be\r
			     C	; * edited without making corresponding changes therein.\r
			     C	; */\r
			     C	;\r
			     C	; The following structure defines a select table entry,\r
			     C	; corresponding to a single Service Access Point\r
			     C	\r
			     C	sel_entry	struc\r
 0000  0000                  C	sel_routine_off	dw	?		; dword ptr to ...\r
 0002  0000                  C	sel_routine_seg	dw	0		; ... receive upcall rtn\r
 0004  0000                  C	sel_addr_off	dw	?		; dword ptr to ...\r
 0006  0000                  C	sel_addr_seg	dw	0		; ... buffer\r
 0008  00                    C	sel_busy	db	?		; 0 - free, 1 - busy\r
 0009  0000                  C	sel_ds		dw	0		; if non-0, data segment for upcall\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-21\r
\r
\r
 000B  0000                  C	sel_buffsize	dw	?		; size of buffer at sel_addr\r
 000D  00                    C	sel_proto	db	?		; protocol (0 - free)\r
 000E  0000                  C	sel_localport	dw	?		; = dest port in packet\r
 0010  0000                  C	sel_rmtport	dw	?		; = remote port, or 0 (wildcard)\r
 0012  0000                  C	sel_rmt_addr_lo	dw	0		; low word of remote IP address, or 0\r
 0014  0000                  C	sel_rmt_addr_hi	dw	0		; high word of remote IP address, or 0\r
 0016  0000                  C	sel_updata	dw	0		; data supplied to upcall rtn  on stack??\r
			     C	\r
 0018                        C	sel_entry	ends\r
 = 0018                      C	se_size		equ	size sel_entry\r
			     C	; The following structure defines the select table header\r
			     C	\r
			     C	;\r
			     C	sel_hdr		struc\r
 0000  10                    C	sel_max		db	16		; number of entries\r
 0001  0006[                 C	sel_ethaddr	db	6 dup (0)	; our Ethernet address\r
	   00                C	\r
			 ]   C	\r
			     C	\r
 0007  0000                  C	sel_logtab_o	dw	0		; dword ptr to ...\r
 0009  0000                  C	sel_logtab_s	dw	0		; ... log table\r
 000B  0000                  C	sel_largest	dw	0		; MTU\r
 000D                        C	sel_hdr		ends\r
 = 000D                      C	sh_size		equ	size sel_hdr\r
			     C	\r
			     C	;\r
			     C	;	The following macro will create a select table:\r
			     C	;\r
			     C	generate_select_table	macro\r
			     C	public		sel_table\r
			     C	sel_table	sel_hdr		<,,log_buffer>\r
			     C	sel_0_arp	sel_entry	<arp_rec_notify,,arp_rec_buf,,0,,256,-1,-1,-1>\r
			     C	sel_1_ipfrag	sel_entry	<ipfrag_rec_notify,,0,,1,,1532,-1,-1,-1>\r
			     C	sel_2_icmp	sel_entry	<icmp_rec_notify,,icmp_rec_buf,,0,,256,ip_subtype_icmp,0,0>\r
			     C	sel_3_nfs	sel_entry	<nfs_rec_notify,,0,,1,,1532,ip_subtype_udp,_NFS_CLIENT_PORT,0>\r
			     C	sel_4_lvd	sel_entry	<lvd_rec_notify,,lvd_rec_buf,,0,,256,ip_subtype_udp,DISCARD_PROTOCOL\r
				_PORT,0>\r
			     C	sel_5_dynamic	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	sel_6_dynamic	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	sel_7_dynamic	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	sel_8_dynamic	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	sel_9_dynamic	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	sel_10_dynamic	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	sel_11_dynamic	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	sel_12_dynamic	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	sel_13_othertcp	sel_entry	<0,,0,,1,,1532,ip_subtype_tcp,0,0>\r
			     C	ifdef obsolete\r
			     C	sel_14_otherudp	sel_entry	<udp_rec_notify,,udp_rec_buf,,0,,1532,ip_subtype_udp,0,0>\r
			     C	else\r
			     C	sel_14_otherudp	sel_entry	<0,,0,,1,,1532,0,0,0>\r
			     C	endif\r
			     C	sel_15_trash	sel_entry	<0,,0,,1,,1532,0,0,0> \r
			     C			endm\r
			     C	;\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-22\r
\r
\r
			     C	;	the actual select table is declared\r
			     C	;	in nfsinit.asm as\r
			     C	\r
			     C	;\r
			     C	;	The following nifty equates define the select numbers more\r
			     C	;	conveniently (especialy for macros):\r
			     C	\r
 = 0000                      C	_SELECT_ARP	equ	0\r
 = 000D                      C	_SEL_OFF_ARP	equ	sh_size + (_SELECT_ARP * se_size)\r
 = 0001                      C	_SELECT_IPFRAG	equ	1\r
 = 0025                      C	_SEL_OFF_IPFRAG	equ	sh_size + (_SELECT_IPFRAG * se_size)\r
 = 0002                      C	_SELECT_ICMP	equ	2\r
 = 003D                      C	_SEL_OFF_ICMP	equ	sh_size + (_SELECT_ICMP * se_size)\r
 = 0003                      C	_SELECT_NFS	equ	3\r
 = 0055                      C	_SEL_OFF_NFS	equ	sh_size + (_SELECT_NFS * se_size)\r
 = 0004                      C	_SELECT_LVD	equ	4\r
 = 006D                      C	_SEL_OFF_LVD	equ	sh_size + (_SELECT_LVD * se_size)\r
 = 0005                      C	_SELECT_DYNAMIC	equ	5\r
 = 0085                      C	_SEL_OFF_DYNAMIC	equ	sh_size + (_SELECT_DYNAMIC * se_size)\r
 = 000D                      C	_SELECT_TCP	equ	13\r
 = 0145                      C	_SEL_OFF_TCP	equ	sh_size + (_SELECT_TCP * se_size)\r
 = 000E                      C	_SELECT_UDP	equ	14\r
 = 015D                      C	_SEL_OFF_UDP	equ	sh_size + (_SELECT_UDP * se_size)\r
 = 000F                      C	_SELECT_TRASH	equ	15\r
 = 0175                      C	_SEL_OFF_TRASH	equ	sh_size + (_SELECT_TRASH * se_size)\r
			     C	;\r
			     C	;	The next couple of macros allow you to set the value of a\r
			     C	;	particular field in a given select entry:\r
			     C	\r
			     C	smov_b	macro	snum,sentry,val\r
			     C	ifndef sel_table\r
			     C	extrn	sel_table : byte\r
			     C	endif\r
			     C		mov	byte ptr (sel_table+sh_size+(&snum*se_size)).&sentry, &val\r
			     C		endm	;smov_b\r
			     C	\r
			     C	smov_b_cs	macro	snum,sentry,val\r
			     C	ifndef sel_table\r
			     C	extrn	sel_table : byte\r
			     C	endif\r
			     C		mov	cs:byte ptr (sel_table+sh_size+(&snum*se_size)).&sentry, &val\r
			     C		endm	;smov_b_cs\r
			     C	\r
			     C	smov_w	macro	snum,sentry,val\r
			     C	ifndef sel_table\r
			     C	extrn	sel_table : byte\r
			     C	endif\r
			     C		mov	word ptr (sel_table+sh_size+(&snum*se_size)).&sentry, &val\r
			     C		endm	;smov_w\r
			     C	\r
			     C	;\r
			     C	;	The obvious variant: compare field with value\r
			     C	;\r
			     C	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-23\r
\r
\r
			     C	\r
			     C	scmp_b	macro	snum,sentry,val\r
			     C	ifndef sel_table\r
			     C	extrn	sel_table : byte\r
			     C	endif\r
			     C		cmp	byte ptr (sel_table+sh_size+(&snum*se_size)).&sentry, &val\r
			     C		endm	;scmp_b\r
			     C	\r
			     C	scmp_b_cs	macro	snum,sentry,val\r
			     C	ifndef sel_table\r
			     C	extrn	sel_table : byte\r
			     C	endif\r
			     C		cmp	cs:byte ptr (sel_table+sh_size+(&snum*se_size)).&sentry, &val\r
			     C		endm	;scmp_b_cs\r
			     C	\r
			     C	sget_w	macro	reg,snum,sentry\r
			     C	ifndef sel_table\r
			     C	extrn	sel_table : byte\r
			     C	endif\r
			     C		mov	reg, word ptr (sel_table+sh_size+(&snum*se_size)).&sentry\r
			     C		endm	;sget_w\r
			     C	\r
			     C	sget_w_cs	macro	reg,snum,sentry\r
			     C	ifndef sel_table\r
			     C	extrn	sel_table : byte\r
			     C	endif\r
			     C		mov	reg, cs:word ptr (sel_table+sh_size+(&snum*se_size)).&sentry\r
			     C		endm	;sget_w_cs\r
			     C	\r
			     C	;\r
			     C	;	A very common request: clear the buffer busy flag for a select entry\r
			     C	;\r
			     C	bufclear	macro	snum\r
			     C		smov_b	snum,sel_busy,0\r
			     C		endm	;bufclear\r
			     C	\r
			     C	bufclear_cs	macro	snum\r
			     C		smov_b_cs	snum,sel_busy,0\r
			     C		endm	;bufclear_cs\r
			     C	;\r
			     C	;	Another common request: test the buffer busy flag \r
			     C	;\r
			     C	buftest	macro	snum\r
			     C		scmp_b	snum,sel_busy,0\r
			     C		endm	;buftest\r
			     C	\r
			     C	buftest_cs	macro	snum\r
			     C		scmp_b_cs	snum,sel_busy,0\r
			     C		endm	;buftest_cs\r
			     C	\r
			     C	\r
			     C	\r
				\r
				;\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-24\r
\r
\r
				;	EXTRNS\r
				;\r
				extrn	demux:near\r
				extrn	upcall:near\r
				\r
				;	PUBLICS\r
				;\r
				\r
				public	select_table_pointer	       ; new name for universal demux routine\r
				\r
				public	log_seg\r
				public	log_base\r
				public	ethsend\r
				\r
				;	variables which live in cseg\r
				;\r
				\r
				;\r
				; Pointer to select table - used by demux.asm\r
				;\r
 03C4  0002[			select_table_pointer dw 2 dup (0)	; address of select table\r
	   0000			\r
			 ]	\r
				\r
				\r
				\r
				\r
				; the following are the segment & offset for the log table\r
 03C8  0000			log_seg 	dw	?\r
 03CA  0000			log_base	dw	?\r
				; The log routine follows:\r
					logproc\r
 03CC                        1	log_proc	proc	near \r
 03CC  9C                    1			pushf \r
 03CD  53                    1			push	bx		; save base register \r
 03CE  06                    1			push	es		; used to address log buffer \r
 03CF  2E: 8B 1E 03C8 R      1			mov	bx, cs:log_seg	; for ie6: code & data now separate \r
 03D4  8E C3                 1			mov	es, bx \r
 03D6  8B D8                 1			mov	bx, ax		; stupid 808x architecture \r
 03D8  D1 E3                 1			shl	bx,1		; scale to ... \r
 03DA  D1 E3                 1			shl	bx,1		; ... doublewords \r
 03DC  2E: 03 1E 03CA R      1			add	bx, cs:log_base	; now es:ax points at the tally \r
 03E1  26: 8B 07             1			mov	ax, es:[bx]	; get low order word \r
 03E4  05 0001               1			add	ax, 1		; bump it \r
 03E7  26: 89 07             1			mov	es:[bx], ax	; store it \r
 03EA  26: 8B 47 02          1			mov	ax, es:[bx+2]	; now the high-order word \r
 03EE  15 0000               1			adc	ax, 0		; add in any carry-out \r
 03F1  26: 89 47 02          1			mov	es:[bx+2], ax	; store it \r
 03F5  07                    1			pop	es		; restore \r
 03F6  5B                    1			pop	bx		;	and \r
 03F7  9D                    1			popf \r
 03F8  C3                    1			ret			;		exit \r
 03F9                        1	log_proc	endp \r
				;............................................................\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-25\r
\r
\r
				; see the pop_f macro in pktd.mac for why this is here\r
 03F9				iretins:\r
 03F9  CF				iret\r
				\r
				;	initialize the ethernet interface and driver\r
				;	es:di contains address of select table\r
 03FA				ethinit proc far\r
 03FA  06				push	es\r
 03FB  1E				push	ds			; save old ds and set to cs\r
 03FC  0E				push	cs\r
 03FD  1F				pop	ds\r
 03FE  2E: 89 3E 03C4 R			mov	select_table_pointer,di ; save the table address away\r
 0403  2E: 8C 06 03C6 R			mov	select_table_pointer+2,es\r
 0408  26: C7 45 0B 05EB		mov	es:sel_largest[di], largest_packet	; ret size of buffer\r
				;\r
				;	get log info\r
				;\r
 040E  26: 8B 45 09			mov	ax, es:sel_logtab_s[di]\r
 0412  2E: A3 03C8 R			mov	log_seg, ax\r
 0416  26: 8B 45 07			mov	ax, es:sel_logtab_o[di]\r
 041A  2E: A3 03CA R			mov	log_base, ax\r
				;\r
				; (we can now use the log macro)\r
				;\r
 041E  06				push	es\r
 041F  E8 113E R			call	setup\r
 0422  07				pop	es\r
 0423  0E				push	cs\r
 0424  1F				pop	ds\r
 0425  8D 7D 01				lea	di,sel_ethaddr[di]	;point to ether address entry\r
 0428  BE 0449 R			mov	si, offset pd_addr\r
 042B  A5				movsw\r
 042C  A5				movsw\r
 042D  A5				movsw\r
 042E				ethinitdone:\r
 042E  2B C0				sub	ax,ax\r
 0430  1F				pop	ds\r
 0431  07				pop	es\r
 0432  FB				sti\r
 0433  CB				ret\r
 0434				ethinit endp\r
				\r
 0434				ethsend proc	far\r
 0434  E8 1200 R			call	sender\r
 0437  CB				ret\r
 0438				ethsend endp\r
				\r
				\f

\r
				\r
				;--  The packet driver code looks like this:\r
				;--\r
				;--  setup() {\r
				;--	 if(state==UP)\r
				;--	     return; /* state starts out as DOWN */\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-26\r
\r
\r
				;--	 if(find_driver() == FALSE)\r
				;--	     return;\r
				;--	 stuff = call_driver(DRIVER_INFO);\r
				;--	 handle = call_driver(ACCESS_TYPE, IP_TYPE, 2, receiver);\r
				;--	 handle = call_driver(ACCESS_TYPE, ARP_TYPE, 2, receiver);\r
				;--	 handle = call_driver(ACCESS_TYPE, RARP_TYPE, 2, receiver);\r
				;--	 call_driver(GET_ADDRESS, handle, &my_link_addr, &my_link_addr_len);\r
				;--	 state = UP;\r
				;--  }\r
				;--\r
				;--  find_driver() {\r
				;--	 vecptr = PTR(0, 0x60*4); /* point into vectors */\r
				;--	 for(vector = 0x60; vector <= 0x80; vector++) {\r
				;--	     driverptr = *vecptr; /* deref ptr to dword ptr */\r
				;--	     if (strcmp(*(driverptr+3), "PKT DRVR") == 0)\r
				;--		 return(TRUE);\r
				;--	     vecptr += 4; /* step to next vector */\r
				;--	 }\r
				;--	 return(FALSE);\r
				;--  }\r
				;--\r
				;--  call_driver(func,args) {\r
				;--	 load args into registers;\r
				;--	 set AH = func;\r
				;--	 soft int to vector; /* ?far call to driverptr with ints off? */\r
				;--  }\r
				;--\r
				;--  sender() {\r
				;--	 if(multiple fragments) {\r
				;--	     marshal fragments into sendbuf;\r
				;--	     call_driver(SEND_PKT, sendbuf);\r
				;--	 } else {\r
				;--	     call_driver(SEND_PKT, caller_buf);\r
				;--	 }\r
				;--  }\r
				;--\r
				;--  receiver(ax) {\r
				;--	 if(ax == 0) {	     /* first call for a packet */\r
				;--	     set es:di to pint at rcvbuf; cx = sizeof(rcvbuf);\r
				;--	 } else {	     /* data copied - test and demux */\r
				;--	     demux_and_upcall(rcvbuf);\r
				;--	 }\r
				;--  }\r
				;------ The descriptions above are replicated before each routine\r
				\f

\r
				\r
 = 0001				DRIVER_INFO	equ	1\r
 = 0002				ACCESS_TYPE	equ	2\r
 = 0004				SEND_PKT	equ	4\r
 = 0006				GET_ADDRESS	equ	6\r
				\r
 = 05EE				buflen	    equ     1518\r
 0438  50 4B 54 20 44 52	pd_sig	    db	    'PKT DRVR',0\r
       56 52 00			\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-27\r
\r
\r
 = 0009				pd_sig_len  equ     $-pd_sig\r
 0441  00			pd_int	    db	    0\r
 0442  00			pd_setup    db	    0\r
 0443  00			pd_class    db	    0\r
 0444  00			pd_num      db	    0\r
 0445  0000			pd_type     dw      0\r
 0447  0006			pd_alen     dw	    6\r
 0449  0006[			pd_addr     db	    6 dup (0)\r
	   00			\r
			 ]	\r
				\r
 044F  0000			pd_handle   dw	    0\r
 0451  05EE[			pd_rbuf     db	    buflen dup (?)\r
	   ??			\r
			 ]	\r
				\r
 0A3F  05EE[			pd_sbuf     db	    buflen dup (?)\r
	   ??			\r
			 ]	\r
				\r
 102D  0000			pd_rlen     dw	    0\r
				;\r
 102F  08 00			ip_type     db      8,0\r
 1031  08 06			arp_type    db      8,6\r
 1033  80 35			rarp_type   db      80h,35h\r
				;\r
				\r
 1035  0000			pd_stklev   dw	    0\r
 1037  0100[			pd_stack    db	    256 dup ('x')\r
	   78			\r
			 ]	\r
				\r
 1137  0000			pd_stktop   dw	    0\r
				; Save the SI returned by demux() in the following locations ***KAA\r
 1139  0000			si_save	    dw	    0					    ;***KAA\r
				\f

\r
				;--\r
				;--  call_driver(func,args) {\r
				;--	 load args into registers;\r
				;--	 set AH = func;\r
				;--	 soft int to vector; /* ?far call to driverptr with ints off? */\r
				;--  }\r
				public call_driver\r
 113B				call_driver proc    near\r
 113B  CD 00				int	0\r
 113D  C3				ret\r
 113E				call_driver endp\r
				\r
 = 113C				pd_patch    equ     call_driver+1\r
				\r
				\f

\r
				;--\r
				;--  setup() {\r
				;--	 if(state==UP)\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-28\r
\r
\r
				;--	     return; /* state starts out as DOWN */\r
				;--	 if(find_driver() == FALSE)\r
				;--	     return;\r
				;--	 stuff = call_driver(DRIVER_INFO);\r
				;--	 handle = call_driver(ACCESS_TYPE, IP_TYPE, 2, receiver);\r
				;--	 handle = call_driver(ACCESS_TYPE, ARP_TYPE, 2, receiver);\r
				;--	 handle = call_driver(ACCESS_TYPE, RARP_TYPE, 2, receiver);\r
				;;--	 call_driver(GET_ADDRESS, handle, &my_link_addr, &my_link_addr_len);\r
				;--	 state = UP;\r
				;--  }\r
				public setup\r
 113E				setup	    proc    near\r
 113E  50				    push    ax\r
 113F  53				    push    bx\r
 1140  51				    push    cx\r
 1141  52				    push    dx\r
 1142  06				    push    es\r
 1143  57				    push    di\r
 1144  56				    push    si\r
 1145  2E: 80 3E 0442 R 00		    cmp     pd_setup, 0\r
 114B  75 55				    jne     se_900\r
 114D  2E: FE 06 0442 R			    inc     pd_setup\r
 1152  E8 11CD R			    call    find_driver\r
 1155  72 4B				    jc	    se_900\r
 1157  B4 01				    mov     ah, DRIVER_INFO\r
 1159  E8 113B R			    call    call_driver\r
 115C  0E				    push    cs\r
 115D  1F				    pop     ds		    ; deliberately ignoring the name\r
 115E  72 42				    jc	    se_900\r
 1160  2E: 88 2E 0443 R			    mov     pd_class, ch\r
 1165  2E: 88 0E 0444 R		            mov     pd_num, cl\r
 116A  2E: 89 16 0445 R		            mov     pd_type, dx\r
				;\r
 116F  BE 102F R		            mov     si, offset ip_type\r
 1172  E8 11AA R		            call    register_type\r
 1175  72 2B			            jc      se_900\r
 1177  BE 1031 R		            mov     si, offset arp_type\r
 117A  E8 11AA R		            call    register_type\r
 117D  72 23			            jc      se_900\r
 117F  BE 1033 R		            mov     si, offset rarp_type\r
 1182  E8 11AA R		            call    register_type\r
 1185  72 1B			            jc      se_900\r
				\r
 1187  2E: 8B 1E 044F R			    mov     bx, pd_handle\r
 118C  B4 06				    mov     ah, GET_ADDRESS\r
 118E  0E				    push    cs\r
 118F  07				    pop     es\r
 1190  BF 0449 R			    mov     di, offset pd_addr\r
 1193  2E: 8B 0E 0447 R			    mov     cx, pd_alen\r
 1198  E8 113B R			    call    call_driver\r
 119B  72 05				    jc	    se_900\r
 119D  2E: 89 0E 0447 R			    mov     pd_alen, cx\r
 11A2				se_900:\r
 11A2  5E				    pop     si\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-29\r
\r
\r
 11A3  5F				    pop     di\r
 11A4  07				    pop     es\r
 11A5  5A				    pop     dx\r
 11A6  59				    pop     cx\r
 11A7  5B				    pop     bx\r
 11A8  58				    pop     ax\r
 11A9  C3				    ret\r
 11AA				setup	    endp\r
				\r
				;\r
				; register_type, entered with ds:si pointing at the packet type code\r
				;\r
				public register_type\r
 11AA				register_type proc near\r
 11AA  B4 02				    mov     ah, ACCESS_TYPE\r
 11AC  2E: A0 0443 R			    mov     al, pd_class\r
 11B0  2E: 8B 1E 0445 R			    mov     bx, pd_type\r
 11B5  2E: 8A 16 0444 R			    mov     dl, pd_num\r
 11BA  B9 0002				    mov     cx, 2		; 2 bytes of filter\r
 11BD  0E				    push    cs\r
 11BE  07				    pop     es\r
 11BF  BF 125A R			    mov     di, offset receiver\r
 11C2  E8 113B R			    call    call_driver\r
 11C5  72 05				    jc	    rt_900\r
 11C7  2E: A3 044F R			    mov     pd_handle, ax\r
 11CB  C3			            ret\r
 11CC				rt_900:	\r
				;		int 3\r
 11CC  C3					ret\r
 11CD				register_type endp\r
				\f

\r
				;--\r
				;--  find_driver() {\r
				;--	 vecptr = PTR(0, 0x60*4); /* point into vectors */\r
				;--	 for(vector = 0x60; vector <= 0x80; vector++) {\r
				;--	     driverptr = *vecptr; /* deref ptr to dword ptr */\r
				;--	     if (strcmp(*(driverptr+3), "PKT DRVR") == 0)\r
				;--		 return(TRUE);\r
				;--	     vecptr += 4; /* step to next vector */\r
				;--	 }\r
				;--	 return(FALSE);\r
				;--  }\r
				public find_driver\r
 11CD				find_driver proc    near\r
 11CD  BB 0180				    mov     bx, 60h*4\r
 11D0  BA 0060				    mov     dx, 60h\r
 11D3  33 C0				    xor     ax, ax\r
 11D5  FC				    cld\r
 11D6				fd_010:\r
 11D6  8E C0				    mov     es, ax\r
 11D8  26: C4 3F			    les     di, es:[bx] 	; get vector in ES:BX\r
 11DB  8D 7D 03				    lea     di, 3[di]		; point at signature\r
 11DE  BE 0438 R			    mov     si, offset pd_sig\r
 11E1  B9 0009				    mov     cx, pd_sig_len\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-30\r
\r
\r
 11E4  F3/ A6				    repe    cmpsb\r
 11E6  74 0C				    je	    fd_100		; found it\r
 11E8  83 C3 04				    add     bx, 4\r
 11EB  42				    inc     dx\r
 11EC  81 FA 0080			    cmp     dx, 80h\r
 11F0  7E E4				    jle     fd_010\r
 11F2  F9				    stc\r
 11F3  C3				    ret\r
 11F4				fd_100:\r
 11F4  2E: 88 16 0441 R			    mov     pd_int, dl\r
 11F9  2E: 88 16 113C R			    mov     byte ptr cs:pd_patch, dl\r
 11FE  F8				    clc\r
 11FF  C3				    ret\r
 1200				find_driver endp\r
				\r
				\f

\r
				;--\r
				;--  sender() {\r
				;--	 if(multiple fragments) {\r
				;--	     marshal fragments into sendbuf;\r
				;--	     call_driver(SEND_PKT, sendbuf);\r
				;--	 } else {\r
				;--	     call_driver(SEND_PKT, caller_buf);\r
				;--	 }\r
				;--  }\r
				public sender\r
 1200				sender	    proc    near\r
					    log     _LOG_ETH_XMIT\r
 1200  50                    1			push	ax		; used to pass argument \r
 1201  B8 0025               1			mov	ax, _LOG_ETH_XMIT		; pick up argument \r
 1204  E8 03CC R             1			call	log_proc	; log it \r
 1207  58                    1			pop	ax \r
 1208  53				    push    bx\r
 1209  51				    push    cx\r
 120A  52				    push    dx\r
 120B  56				    push    si\r
 120C  1E				    push    ds\r
 120D  06				    push    es\r
 120E  B4 04				    mov     ah, SEND_PKT\r
 1210  83 C7 02				    add     di, 2		    ; step over status\r
 1213  26: 8B 0D			    mov     cx, word ptr es:[di]\r
 1216  26: C5 75 02			    lds     si, dword ptr es:[di+2]\r
 121A  83 C7 06				    add     di, 6\r
 121D  26: 83 3D 00			    cmp     word ptr es:[di], 0     ; any more?\r
 1221  75 06				    jne     send_010		    ; if so, go do multiple...\r
 1223  E8 113B R			    call    call_driver\r
 1226  EB 23 90				    jmp     send_090\r
..\src\pktd.asm(374): warning A5104: Jump within short distance\r
 1229				send_010:\r
				;  we must copy the data into a local buffer first\r
 1229  06				    push    es\r
 122A  57				    push    di\r
 122B  8B D1				    mov     dx, cx		    ; save count\r
 122D  0E				    push    cs\r
 122E  07				    pop     es\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-31\r
\r
\r
 122F  BF 0A3F R			    mov     di, offset pd_sbuf\r
 1232  E8 1254 R			    call    copydata\r
 1235  5E				    pop     si\r
 1236  1F				    pop     ds\r
 1237  8B 0C				    mov     cx, word ptr [si]\r
 1239  C5 74 02				    lds     si, dword ptr [si+2]\r
 123C  03 D1				    add     dx, cx\r
 123E  E8 1254 R			    call    copydata\r
 1241  0E				    push    cs\r
 1242  1F				    pop     ds\r
 1243  BE 0A3F R			    mov     si, offset pd_sbuf\r
 1246  8B CA				    mov     cx, dx\r
 1248  E8 113B R			    call    call_driver\r
 124B				send_090:\r
 124B  07				    pop     es\r
 124C  1F				    pop     ds\r
 124D  5E				    pop     si\r
 124E  5A				    pop     dx\r
 124F  59				    pop     cx\r
 1250  5B				    pop     bx\r
 1251  2B C0				    sub     ax, ax	    ; no error\r
 1253  C3				    ret\r
 1254				sender	    endp\r
				\r
				public copydata\r
 1254				copydata    proc    near\r
 1254  41				    inc     cx		    ; if odd (illegal?) ...\r
 1255  D1 E9				    shr     cx, 1	    ; ... round up (otherwise inc is benign)\r
 1257  F3/ A5				    rep     movsw\r
 1259  C3				    ret\r
 125A				copydata    endp\r
				\f

\r
				;--\r
				;--  receiver(ax) {\r
				;--	 if(ax == 0) {	     /* first call for a packet */\r
				;--	     set es:di to pint at rcvbuf; cx = sizeof(rcvbuf);\r
				;--	 } else {	     /* data copied - test and demux */\r
				;--	     demux_and_upcall(rcvbuf);\r
				;--	 }\r
				;--  }\r
				public receiver\r
 125A				receiver    proc    far\r
 125A  3D 0000				cmp	ax, 0\r
 125D  75 0B				jne	rcv_010\r
 125F  0E				push	cs\r
 1260  07				pop	es\r
 1261  BF 0451 R			mov	di, offset pd_rbuf\r
 1264  2E: 89 0E 102D R			mov	cs:pd_rlen, cx\r
 1269  CB				ret\r
 126A				rcv_010:\r
				;	we first switch to our stack. we can trash ax/bx/dx, per spec\r
 126A  9C				pushf\r
 126B  5A				pop	dx\r
 126C  FA				cli\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-32\r
\r
\r
 126D  2E: 83 3E 1035 R 00		cmp	cs:pd_stklev, 0\r
 1273  75 10				jne	rcv_015\r
 1275  2E: FF 06 1035 R			inc	cs:pd_stklev\r
 127A  8C D0				mov	ax, ss\r
 127C  8B DC				mov	bx, sp\r
 127E  0E				push	cs\r
 127F  17				pop	ss\r
 1280  BC 1137 R			mov	sp, offset pd_stktop\r
 1283  50				push	ax\r
 1284  53				push	bx\r
 1285				rcv_015:\r
 1285  52				push	dx		    ; saved flags\r
 1286  9D				popf\r
				\r
 1287  1E				push	ds		    ; general save\r
				\r
 1288  1E				push	ds		    ; save...\r
 1289  56				push	si		    ; ... over ...\r
 128A  51				push	cx		    ;	 ... demux\r
				\r
 128B  1E				push	ds\r
 128C  07				pop	es\r
				\r
 128D  56				push	si\r
 128E  5F				pop	di\r
				\r
 128F  B9 0040				mov	cx,64	            ; Limit demux's view (why ???) ***KAA\r
 1292  E8 0000 E			call	demux		    ; and remember to preserve BX cookie\r
 1295  2E: 89 36 1139 R			mov	si_save,si	    ; It is necessary to save the SI returned\r
								    ; from demux and pass it to upcall ***KAA\r
				\r
 129A  58				pop	ax		    ; original len\r
 129B  5E				pop	si\r
 129C  1F				pop	ds\r
				\r
 129D  72 1C				jc	rcv_800 	    ; carry from demux call\r
					log	_LOG_ETH_RCV\r
 129F  50                    1			push	ax		; used to pass argument \r
 12A0  B8 0026               1			mov	ax, _LOG_ETH_RCV		; pick up argument \r
 12A3  E8 03CC R             1			call	log_proc	; log it \r
 12A6  58                    1			pop	ax \r
 12A7  3B C1				cmp	ax, cx\r
 12A9  7D 02				jge	rcv_200\r
 12AB  8B C8				mov	cx, ax\r
 12AD				rcv_200:\r
 12AD  E8 1254 R			call	copydata\r
 12B0  2E: 8B 36 1139 R			mov	si,si_save	    ;***KAA\r
 12B5  E8 0000 E			call	upcall\r
 12B8  EB 09 90				jmp	rcv_900\r
..\src\pktd.asm(480): warning A5104: Jump within short distance\r
 12BB				rcv_800:\r
					log	_LOG_ETH_DROPPED\r
 12BB  50                    1			push	ax		; used to pass argument \r
 12BC  B8 002F               1			mov	ax, _LOG_ETH_DROPPED		; pick up argument \r
 12BF  E8 03CC R             1			call	log_proc	; log it \r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Page     1-33\r
\r
\r
 12C2  58                    1			pop	ax \r
 12C3				rcv_900:\r
 12C3  1F				pop	ds\r
 12C4  9C				pushf\r
 12C5  5A				pop	dx		; save those flags\r
 12C6  FA				cli\r
 12C7  2E: FF 0E 1035 R			dec	cs:pd_stklev\r
 12CC  75 06				jne	rcv_990\r
 12CE  5B				pop	bx\r
 12CF  58				pop	ax\r
 12D0  8E D0				mov	ss, ax\r
 12D2  8B E3				mov	sp, bx\r
 12D4				rcv_990:\r
 12D4  52				push	dx		; the flags, the flags....\r
 12D5  9D				popf\r
 12D6  CB				ret\r
 12D7				receiver    endp\r
				\r
 12D7				cseg	ends\r
				end	begin\r
\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Symbols-1\r
\r
\r
Macros:\r
\r
		N a m e			Lines\r
\r
BUFCLEAR . . . . . . . . . . . .  	   1\r
BUFCLEAR_CS  . . . . . . . . . .  	   1\r
BUFTEST  . . . . . . . . . . . .  	   1\r
BUFTEST_CS . . . . . . . . . . .  	   1\r
DISABLE_OTHERS . . . . . . . . .  	  11\r
GENERATE_SELECT_TABLE  . . . . .  	  22\r
LOG  . . . . . . . . . . . . . .  	   9\r
LOGBUFFER  . . . . . . . . . . .  	   1\r
LOGPROC  . . . . . . . . . . . .  	  22\r
POP_F  . . . . . . . . . . . . .  	   6\r
PUSH_F . . . . . . . . . . . . .  	   1\r
RESTORE_AX . . . . . . . . . . .  	   1\r
RESTORE_ES_AX  . . . . . . . . .  	   2\r
RESTORE_INT  . . . . . . . . . .  	   8\r
RESTORE_REGS . . . . . . . . . .  	  10\r
SAVE_AX  . . . . . . . . . . . .  	   1\r
SAVE_ES_AX . . . . . . . . . . .  	   2\r
SAVE_REGS  . . . . . . . . . . .  	  10\r
SCMP_B . . . . . . . . . . . . .  	   4\r
SCMP_B_CS  . . . . . . . . . . .  	   4\r
SGET_W . . . . . . . . . . . . .  	   4\r
SGET_W_CS  . . . . . . . . . . .  	   4\r
SMOV_B . . . . . . . . . . . . .  	   4\r
SMOV_B_CS  . . . . . . . . . . .  	   4\r
SMOV_W . . . . . . . . . . . . .  	   4\r
STATUS . . . . . . . . . . . . .  	  12\r
\r
Structures and Records:\r
\r
                N a m e                 Width   # fields\r
                                        Shift   Width   Mask    Initial\r
\r
ETHER_ICMP . . . . . . . . . . .  	0036	000A\r
  ICMP_ETH_DUMMY . . . . . . . .  	0000\r
  ICMP_IP_DUMMY  . . . . . . . .  	000E\r
  ICMP_TYPE  . . . . . . . . . .  	0022\r
  ICMP_CODE  . . . . . . . . . .  	0023\r
  ICMP_CHKSUM  . . . . . . . . .  	0024\r
  ICMP_IDENT . . . . . . . . . .  	0026\r
  ICMP_SEQ . . . . . . . . . . .  	0028\r
  ICMP_AMASK . . . . . . . . . .  	002A\r
  ICMP_RCV_TSTAMP  . . . . . . .  	002E\r
  ICMP_XMIT_TSTAMP . . . . . . .  	0032\r
IOC_REQ  . . . . . . . . . . . .  	0016	0005\r
  IOC_RES  . . . . . . . . . . .  	0000\r
  IOC_MEDIA_B  . . . . . . . . .  	000D\r
  IOC_ADDR . . . . . . . . . . .  	000E\r
  IOC_COUNT  . . . . . . . . . .  	0012\r
  IOC_SECTOR . . . . . . . . . .  	0014\r
PROBLEM_ICMP . . . . . . . . . .  	003E	0013\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Symbols-2\r
\r
\r
  P_ICMP_ETH_DUMMY . . . . . . .  	0000\r
  P_ICMP_IP_DUMMY  . . . . . . .  	000E\r
  P_ICMP_TYPE  . . . . . . . . .  	0022\r
  P_ICMP_CODE  . . . . . . . . .  	0023\r
  P_ICMP_CHKSUM  . . . . . . . .  	0024\r
  P_ICMP_GW_L  . . . . . . . . .  	0026\r
  P_ICMP_GW_H  . . . . . . . . .  	0028\r
  P_ICMP_IP_HL_V . . . . . . . .  	002A\r
  P_ICMP_IP_TOS  . . . . . . . .  	002B\r
  P_ICMP_IP_LEN  . . . . . . . .  	002C\r
  P_ICMP_IP_ID . . . . . . . . .  	002E\r
  P_ICMP_IP_OFFSET . . . . . . .  	0030\r
  P_ICMP_IP_TTL  . . . . . . . .  	0032\r
  P_ICMP_IP_P  . . . . . . . . .  	0033\r
  P_ICMP_IP_SUM  . . . . . . . .  	0034\r
  P_ICMP_IP_SRC_L  . . . . . . .  	0036\r
  P_ICMP_IP_SRC_H  . . . . . . .  	0038\r
  P_ICMP_IP_DEST_L . . . . . . .  	003A\r
  P_ICMP_IP_DEST_H . . . . . . .  	003C\r
SEL_ENTRY  . . . . . . . . . . .  	0018	000D\r
  SEL_ROUTINE_OFF  . . . . . . .  	0000\r
  SEL_ROUTINE_SEG  . . . . . . .  	0002\r
  SEL_ADDR_OFF . . . . . . . . .  	0004\r
  SEL_ADDR_SEG . . . . . . . . .  	0006\r
  SEL_BUSY . . . . . . . . . . .  	0008\r
  SEL_DS . . . . . . . . . . . .  	0009\r
  SEL_BUFFSIZE . . . . . . . . .  	000B\r
  SEL_PROTO  . . . . . . . . . .  	000D\r
  SEL_LOCALPORT  . . . . . . . .  	000E\r
  SEL_RMTPORT  . . . . . . . . .  	0010\r
  SEL_RMT_ADDR_LO  . . . . . . .  	0012\r
  SEL_RMT_ADDR_HI  . . . . . . .  	0014\r
  SEL_UPDATA . . . . . . . . . .  	0016\r
SEL_HDR  . . . . . . . . . . . .  	000D	0005\r
  SEL_MAX  . . . . . . . . . . .  	0000\r
  SEL_ETHADDR  . . . . . . . . .  	0001\r
  SEL_LOGTAB_O . . . . . . . . .  	0007\r
  SEL_LOGTAB_S . . . . . . . . .  	0009\r
  SEL_LARGEST  . . . . . . . . .  	000B\r
\r
Segments and Groups:\r
\r
                N a m e         	Length	 Align	Combine Class\r
\r
CSEG . . . . . . . . . . . . . .  	12D7	PARA	PUBLIC	'CODE'\r
\r
Symbols:            \r
\r
                N a m e         	Type	 Value	 Attr\r
\r
ACCESS_TYPE  . . . . . . . . . .  	NUMBER	0002	\r
ARP_ETHER_TYPE . . . . . . . . .  	NUMBER	0608	\r
ARP_TYPE . . . . . . . . . . . .  	L BYTE	1031	CSEG\r
ATTRIBUTE  . . . . . . . . . . .  	L WORD	0004	CSEG\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Symbols-3\r
\r
\r
\r
BEGIN  . . . . . . . . . . . . .  	L NEAR	0000	CSEG\r
BLANK  . . . . . . . . . . . . .  	L NEAR	033C	CSEG\r
BPB_PTR_OFF  . . . . . . . . . .  	NUMBER	0012	\r
BPB_PTR_SEG  . . . . . . . . . .  	NUMBER	0014	\r
BR_ADDR_0  . . . . . . . . . . .  	NUMBER	000E	\r
BR_ADDR_1  . . . . . . . . . . .  	NUMBER	0010	\r
BR_ADDR_LEN  . . . . . . . . . .  	NUMBER	0004	\r
BUFLEN . . . . . . . . . . . . .  	NUMBER	05EE	\r
BUILD_BPB  . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
\r
call_driver  . . . . . . . . . .  	N PROC	113B	CSEG	Global	Length = 0003\r
copydata . . . . . . . . . . . .  	N PROC	1254	CSEG	Global	Length = 0006\r
\r
demux  . . . . . . . . . . . . .  	L NEAR	0000	CSEG	External\r
DEV_INT  . . . . . . . . . . . .  	L NEAR	024C	CSEG\r
DEV_NAME . . . . . . . . . . . .  	L BYTE	000A	CSEG\r
DEV_STRATEGY . . . . . . . . . .  	L NEAR	0241	CSEG\r
DISCARD_PROTOCOL_PORT  . . . . .  	NUMBER	0009	\r
DRIVER_INFO  . . . . . . . . . .  	NUMBER	0001	\r
\r
END_ADDR_OFF . . . . . . . . . .  	NUMBER	000E	\r
END_ADDR_SEG . . . . . . . . . .  	NUMBER	0010	\r
END_GHN  . . . . . . . . . . . .  	L NEAR	03A6	CSEG\r
END_GN . . . . . . . . . . . . .  	L NEAR	0368	CSEG\r
ETHINIT  . . . . . . . . . . . .  	F PROC	03FA	CSEG	Length = 003A\r
ETHINITDONE  . . . . . . . . . .  	L NEAR	042E	CSEG\r
ethinit_offset . . . . . . . . .  	L WORD	0012	CSEG	Global\r
ETHINIT_SEGMENT  . . . . . . . .  	L WORD	0014	CSEG\r
ethsend  . . . . . . . . . . . .  	F PROC	0434	CSEG	Global	Length = 0004\r
ETHSEND_OFFSET . . . . . . . . .  	L WORD	0016	CSEG\r
ETHSEND_SEGMENT  . . . . . . . .  	L WORD	0018	CSEG\r
EXIT . . . . . . . . . . . . . .  	L NEAR	02BF	CSEG\r
\r
FD_010 . . . . . . . . . . . . .  	L NEAR	11D6	CSEG\r
FD_100 . . . . . . . . . . . . .  	L NEAR	11F4	CSEG\r
find_driver  . . . . . . . . . .  	N PROC	11CD	CSEG	Global	Length = 0033\r
FOUNDSLASH . . . . . . . . . . .  	L NEAR	02E9	CSEG\r
FUNTAB . . . . . . . . . . . . .  	L BYTE	0024	CSEG\r
\r
GETCHARACTER . . . . . . . . . .  	N PROC	031F	CSEG	Length = 0023\r
GETHNUMBER . . . . . . . . . . .  	N PROC	036E	CSEG	Length = 003A\r
GETNEXTITEM  . . . . . . . . . .  	L NEAR	02CF	CSEG\r
GETNUMBER  . . . . . . . . . . .  	N PROC	0342	CSEG	Length = 0028\r
GET_ADDRESS  . . . . . . . . . .  	NUMBER	0006	\r
GHN0 . . . . . . . . . . . . . .  	L NEAR	0373	CSEG\r
GHN1 . . . . . . . . . . . . . .  	L NEAR	0379	CSEG\r
GN0  . . . . . . . . . . . . . .  	L NEAR	0347	CSEG\r
GN1  . . . . . . . . . . . . . .  	L NEAR	034D	CSEG\r
GOTCHAR  . . . . . . . . . . . .  	L NEAR	02F1	CSEG\r
\r
ICMP_AM_REQ  . . . . . . . . . .  	NUMBER	0011	\r
ICMP_AM_RESP . . . . . . . . . .  	NUMBER	0012	\r
ICMP_DEST_UNREACH  . . . . . . .  	NUMBER	0003	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Symbols-4\r
\r
\r
ICMP_ECHO_MESSAGE  . . . . . . .  	NUMBER	0008	\r
ICMP_ECHO_REPLY  . . . . . . . .  	NUMBER	0000	\r
ICMP_INFO_REPLY  . . . . . . . .  	NUMBER	0010	\r
ICMP_INFO_REQUEST  . . . . . . .  	NUMBER	000F	\r
ICMP_PARAM_PROBLEM . . . . . . .  	NUMBER	000C	\r
ICMP_REDIRECT  . . . . . . . . .  	NUMBER	0005	\r
ICMP_SOURCE_QUENCH . . . . . . .  	NUMBER	0004	\r
ICMP_TIMESTAMP . . . . . . . . .  	NUMBER	000D	\r
ICMP_TIMESTAMP_REPLY . . . . . .  	NUMBER	000E	\r
ICMP_TIME_EXCEEDED . . . . . . .  	NUMBER	000B	\r
INIT . . . . . . . . . . . . . .  	L NEAR	026F	CSEG\r
INIT_MSG . . . . . . . . . . . .  	L BYTE	003E	CSEG\r
INPUT  . . . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
INTERNET_ETHER_TYPE  . . . . . .  	NUMBER	0008	\r
INTERRUPT  . . . . . . . . . . .  	L 0002	0008	CSEG\r
INTNUMCHANGE . . . . . . . . . .  	N PROC	036A	CSEG	Length = 0002\r
IN_FLUSH . . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
IN_STAT  . . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
IOCTL_IN . . . . . . . . . . . .  	L NEAR	03B6	CSEG\r
IOCTL_OUT  . . . . . . . . . . .  	L NEAR	03A8	CSEG\r
IP_FLAG_DF . . . . . . . . . . .  	NUMBER	4000	\r
IP_FLAG_MF . . . . . . . . . . .  	NUMBER	2000	\r
IP_FLAG_OFF  . . . . . . . . . .  	NUMBER	1FFF	\r
IP_HEADER_SIZE . . . . . . . . .  	NUMBER	0014	\r
IP_SUBTYPE_ICMP  . . . . . . . .  	NUMBER	0001	\r
IP_SUBTYPE_TCP . . . . . . . . .  	NUMBER	0006	\r
IP_SUBTYPE_UDP . . . . . . . . .  	NUMBER	0011	\r
IP_TYPE  . . . . . . . . . . . .  	L BYTE	102F	CSEG\r
IRETINS  . . . . . . . . . . . .  	L NEAR	03F9	CSEG\r
\r
LARGEST_PACKET . . . . . . . . .  	NUMBER	05EB	\r
last_statement . . . . . . . . .  	L NEAR	0000	CSEG	External\r
log_base . . . . . . . . . . . .  	L WORD	03CA	CSEG	Global\r
log_proc . . . . . . . . . . . .  	N PROC	03CC	CSEG	Global	Length = 002D\r
log_seg  . . . . . . . . . . . .  	L WORD	03C8	CSEG	Global\r
LOWER  . . . . . . . . . . . . .  	L NEAR	02FB	CSEG\r
\r
MATCHNUM . . . . . . . . . . . .  	NUMBER	0002	\r
MATCHTABLE . . . . . . . . . . .  	L BYTE	001E	CSEG\r
MAXPACKET  . . . . . . . . . . .  	NUMBER	05EA	\r
MEDIA_CHECK  . . . . . . . . . .  	L NEAR	02AB	CSEG\r
MEMOFFCHANGE . . . . . . . . . .  	N PROC	036C	CSEG	Length = 0002\r
MINPACKET  . . . . . . . . . . .  	NUMBER	0040	\r
\r
ND_INPUT . . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
NEXT_DEV . . . . . . . . . . . .  	L DWORD	0000	CSEG\r
NOSLASH  . . . . . . . . . . . .  	L NEAR	031C	CSEG\r
NUMBERERR  . . . . . . . . . . .  	L NEAR	03A2	CSEG\r
NUMERROR . . . . . . . . . . . .  	L NEAR	0367	CSEG\r
\r
OK_LETTER  . . . . . . . . . . .  	L NEAR	0396	CSEG\r
OK_NUM . . . . . . . . . . . . .  	L NEAR	0394	CSEG\r
OUTPUT . . . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
OUT_FLUSH  . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Symbols-5\r
\r
\r
OUT_STAT . . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
OUT_VERIFY . . . . . . . . . . .  	L NEAR	02AB	CSEG\r
\r
PARSECMDLINE . . . . . . . . . .  	N PROC	02C8	CSEG	Length = 0057\r
PD_ADDR  . . . . . . . . . . . .  	L BYTE	0449	CSEG	Length = 0006\r
PD_ALEN  . . . . . . . . . . . .  	L WORD	0447	CSEG\r
PD_CLASS . . . . . . . . . . . .  	L BYTE	0443	CSEG\r
PD_HANDLE  . . . . . . . . . . .  	L WORD	044F	CSEG\r
PD_INT . . . . . . . . . . . . .  	L BYTE	0441	CSEG\r
PD_NUM . . . . . . . . . . . . .  	L BYTE	0444	CSEG\r
PD_PATCH . . . . . . . . . . . .  	NEAR	113C	CSEG\r
PD_RBUF  . . . . . . . . . . . .  	L BYTE	0451	CSEG	Length = 05EE\r
PD_RLEN  . . . . . . . . . . . .  	L WORD	102D	CSEG\r
PD_SBUF  . . . . . . . . . . . .  	L BYTE	0A3F	CSEG	Length = 05EE\r
PD_SETUP . . . . . . . . . . . .  	L BYTE	0442	CSEG\r
PD_SIG . . . . . . . . . . . . .  	L BYTE	0438	CSEG\r
PD_SIG_LEN . . . . . . . . . . .  	NUMBER	0009	\r
PD_STACK . . . . . . . . . . . .  	L BYTE	1037	CSEG	Length = 0100\r
PD_STKLEV  . . . . . . . . . . .  	L WORD	1035	CSEG\r
PD_STKTOP  . . . . . . . . . . .  	L WORD	1137	CSEG\r
PD_TYPE  . . . . . . . . . . . .  	L WORD	0445	CSEG\r
PKTD_DRIVER  . . . . . . . . . .  	F PROC	0000	CSEG	Length = 03C4\r
PKT_DEST . . . . . . . . . . . .  	NUMBER	0000	\r
PKT_IP_FRAG  . . . . . . . . . .  	NUMBER	0014	\r
PKT_IP_SUBTYPE . . . . . . . . .  	NUMBER	0017	\r
PKT_SELECT . . . . . . . . . . .  	NUMBER	002A	\r
PKT_TYPE . . . . . . . . . . . .  	NUMBER	000C	\r
PKT_UDP_DPORT  . . . . . . . . .  	NUMBER	0024	\r
PKT_VER_IHL  . . . . . . . . . .  	NUMBER	000E	\r
\r
RARP_TYPE  . . . . . . . . . . .  	L BYTE	1033	CSEG\r
RCV_010  . . . . . . . . . . . .  	L NEAR	126A	CSEG\r
RCV_015  . . . . . . . . . . . .  	L NEAR	1285	CSEG\r
RCV_200  . . . . . . . . . . . .  	L NEAR	12AD	CSEG\r
RCV_800  . . . . . . . . . . . .  	L NEAR	12BB	CSEG\r
RCV_900  . . . . . . . . . . . .  	L NEAR	12C3	CSEG\r
RCV_990  . . . . . . . . . . . .  	L NEAR	12D4	CSEG\r
receiver . . . . . . . . . . . .  	F PROC	125A	CSEG	Global	Length = 007D\r
register_type  . . . . . . . . .  	N PROC	11AA	CSEG	Global	Length = 0023\r
REVARP_ETHER_TYPE  . . . . . . .  	NUMBER	3580	\r
RH_OFF . . . . . . . . . . . . .  	L WORD	001A	CSEG\r
RH_SEG . . . . . . . . . . . . .  	L WORD	001C	CSEG\r
ROUTINETABLE . . . . . . . . . .  	L 0002	0020	CSEG\r
RT_900 . . . . . . . . . . . . .  	L NEAR	11CC	CSEG\r
\r
select_table_pointer . . . . . .  	L WORD	03C4	CSEG	Global	Length = 0002\r
sender . . . . . . . . . . . . .  	N PROC	1200	CSEG	Global	Length = 0054\r
SEND_010 . . . . . . . . . . . .  	L NEAR	1229	CSEG\r
SEND_090 . . . . . . . . . . . .  	L NEAR	124B	CSEG\r
SEND_PKT . . . . . . . . . . . .  	NUMBER	0004	\r
setup  . . . . . . . . . . . . .  	N PROC	113E	CSEG	Global	Length = 006C\r
SE_900 . . . . . . . . . . . . .  	L NEAR	11A2	CSEG\r
SE_SIZE  . . . . . . . . . . . .  	NUMBER	0018	\r
SH_SIZE  . . . . . . . . . . . .  	NUMBER	000D	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Symbols-6\r
\r
\r
SI_SAVE  . . . . . . . . . . . .  	L WORD	1139	CSEG\r
SMALL  . . . . . . . . . . . . .  	TEXT  		\r
SRH  . . . . . . . . . . . . . .  	NUMBER	0000	\r
SRH_CCD_FLD  . . . . . . . . . .  	NUMBER	0002	\r
SRH_LEN  . . . . . . . . . . . .  	NUMBER	000D	\r
SRH_LEN_FLD  . . . . . . . . . .  	ALIAS	 SRH		\r
SRH_RES_FLD  . . . . . . . . . .  	NUMBER	0005	\r
SRH_STA_FLD  . . . . . . . . . .  	NUMBER	0003	\r
SRH_UCD_FLD  . . . . . . . . . .  	NUMBER	0001	\r
START  . . . . . . . . . . . . .  	NEAR	0000	CSEG\r
STRATEGY . . . . . . . . . . . .  	L 0002	0006	CSEG\r
S_LOOP . . . . . . . . . . . . .  	L NEAR	02D4	CSEG\r
\r
TERM . . . . . . . . . . . . . .  	L NEAR	0340	CSEG\r
\r
UNITS  . . . . . . . . . . . . .  	NUMBER	000D	\r
UNITS_LEN  . . . . . . . . . . .  	NUMBER	0001	\r
upcall . . . . . . . . . . . . .  	L NEAR	0000	CSEG	External\r
\r
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		\r
@FILENAME  . . . . . . . . . . .  	TEXT  pktd		\r
@VERSION . . . . . . . . . . . .  	TEXT  510		\r
_LOG_ARP_GOT_REPLY . . . . . . .  	NUMBER	0022	\r
_LOG_ARP_GOT_REQ . . . . . . . .  	NUMBER	001F	\r
_LOG_ARP_REQUESTS  . . . . . . .  	NUMBER	0023	\r
_LOG_ARP_SENT_REPLY  . . . . . .  	NUMBER	0020	\r
_LOG_ARP_SENT_REQ  . . . . . . .  	NUMBER	0021	\r
_LOG_ARP_SUCCESS . . . . . . . .  	NUMBER	0024	\r
_LOG_AUTH_ERR  . . . . . . . . .  	NUMBER	001E	\r
_LOG_BCACHE_HITS . . . . . . . .  	NUMBER	0034	\r
_LOG_BCACHE_MISSES . . . . . . .  	NUMBER	0035	\r
_LOG_BCACHE_STEALS . . . . . . .  	NUMBER	0037	\r
_LOG_BCACHE_WR_INVAL . . . . . .  	NUMBER	0036	\r
_LOG_CREATE  . . . . . . . . . .  	NUMBER	0009	\r
_LOG_ETH_ARP . . . . . . . . . .  	NUMBER	0028	\r
_LOG_ETH_COLLISIONS  . . . . . .  	NUMBER	0032	\r
_LOG_ETH_DROPPED . . . . . . . .  	NUMBER	002F	\r
_LOG_ETH_ICMP  . . . . . . . . .  	NUMBER	0029	\r
_LOG_ETH_INNUCAST  . . . . . . .  	NUMBER	0051	\r
_LOG_ETH_INT . . . . . . . . . .  	NUMBER	0042	\r
_LOG_ETH_IP_CHKSM_ERR  . . . . .  	NUMBER	0033	\r
_LOG_ETH_MISC  . . . . . . . . .  	NUMBER	002E	\r
_LOG_ETH_OUNUCAST  . . . . . . .  	NUMBER	0052	\r
_LOG_ETH_OUTDISC . . . . . . . .  	NUMBER	0053	\r
_LOG_ETH_RCV . . . . . . . . . .  	NUMBER	0026	\r
_LOG_ETH_RCV_ERR . . . . . . . .  	NUMBER	0031	\r
_LOG_ETH_RCV_FOR_ME  . . . . . .  	NUMBER	0027	\r
_LOG_ETH_RINT  . . . . . . . . .  	NUMBER	0044	\r
_LOG_ETH_SINT  . . . . . . . . .  	NUMBER	0043	\r
_LOG_ETH_SPUR  . . . . . . . . .  	NUMBER	0045	\r
_LOG_ETH_TCP . . . . . . . . . .  	NUMBER	002D	\r
_LOG_ETH_TCP_CHKSM_ERR . . . . .  	NUMBER	002A	\r
_LOG_ETH_UDP . . . . . . . . . .  	NUMBER	002A	\r
_LOG_ETH_UDP_NFS . . . . . . . .  	NUMBER	002C	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Symbols-7\r
\r
\r
_LOG_ETH_XMIT  . . . . . . . . .  	NUMBER	0025	\r
_LOG_ETH_XMIT_ERR  . . . . . . .  	NUMBER	0030	\r
_LOG_ETH_XMIT_TMOUT  . . . . . .  	NUMBER	0046	\r
_LOG_GARABAGE_ARGS . . . . . . .  	NUMBER	001B	\r
_LOG_GETATTR . . . . . . . . . .  	NUMBER	0001	\r
_LOG_ICMP_INDSTUNRCH . . . . . .  	NUMBER	0057	\r
_LOG_ICMP_INECHO . . . . . . . .  	NUMBER	0058	\r
_LOG_ICMP_INMASKREP  . . . . . .  	NUMBER	0056	\r
_LOG_ICMP_INMASKS  . . . . . . .  	NUMBER	0055	\r
_LOG_ICMP_INPARMPR . . . . . . .  	NUMBER	005A	\r
_LOG_ICMP_INQUENCH . . . . . . .  	NUMBER	005B	\r
_LOG_ICMP_INREDIR  . . . . . . .  	NUMBER	005C	\r
_LOG_ICMP_INTIMEST . . . . . . .  	NUMBER	005D	\r
_LOG_ICMP_INTIMEX  . . . . . . .  	NUMBER	0059	\r
_LOG_ICMP_NETUNREACH . . . . . .  	NUMBER	003B	\r
_LOG_ICMP_OUTECHOREP . . . . . .  	NUMBER	005E	\r
_LOG_ICMP_OUTMASK  . . . . . . .  	NUMBER	0060	\r
_LOG_ICMP_OUTMSGS  . . . . . . .  	NUMBER	003C	\r
_LOG_ICMP_OUTTIMEREP . . . . . .  	NUMBER	005F	\r
_LOG_IP_DUPFRAG  . . . . . . . .  	NUMBER	0040	\r
_LOG_IP_FRAGS  . . . . . . . . .  	NUMBER	0041	\r
_LOG_IP_FRAG_DISCARD . . . . . .  	NUMBER	003D	\r
_LOG_IP_FRAG_REASS_OK  . . . . .  	NUMBER	003E	\r
_LOG_IP_FRAG_REASS_TRY . . . . .  	NUMBER	003F	\r
_LOG_IP_NOROUTE  . . . . . . . .  	NUMBER	0054	\r
_LOG_LINK  . . . . . . . . . . .  	NUMBER	000C	\r
_LOG_LOCK_ERROR  . . . . . . . .  	NUMBER	004E	\r
_LOG_LOCK_FAILED . . . . . . . .  	NUMBER	004D	\r
_LOG_LOCK_REQUEST  . . . . . . .  	NUMBER	004C	\r
_LOG_LOOKUP  . . . . . . . . . .  	NUMBER	0004	\r
_LOG_MAX . . . . . . . . . . . .  	NUMBER	0061	\r
_LOG_MKDIR . . . . . . . . . . .  	NUMBER	000E	\r
_LOG_NAME_BACKMAPS . . . . . . .  	NUMBER	0039	\r
_LOG_NAME_MAPS . . . . . . . . .  	NUMBER	0038	\r
_LOG_NAME_STALE  . . . . . . . .  	NUMBER	003A	\r
_LOG_NULL  . . . . . . . . . . .  	NUMBER	0000	\r
_LOG_PROC_UNAVAIL  . . . . . . .  	NUMBER	001A	\r
_LOG_PROG_MISMATCH . . . . . . .  	NUMBER	0019	\r
_LOG_PROG_UNAVAIL  . . . . . . .  	NUMBER	0018	\r
_LOG_READ  . . . . . . . . . . .  	NUMBER	0006	\r
_LOG_READDIR . . . . . . . . . .  	NUMBER	0010	\r
_LOG_READLINK  . . . . . . . . .  	NUMBER	0005	\r
_LOG_REMOVE  . . . . . . . . . .  	NUMBER	000A	\r
_LOG_RENAME  . . . . . . . . . .  	NUMBER	000B	\r
_LOG_RMDIR . . . . . . . . . . .  	NUMBER	000F	\r
_LOG_ROOT  . . . . . . . . . . .  	NUMBER	0003	\r
_LOG_RPC_ACCEPTED  . . . . . . .  	NUMBER	0015	\r
_LOG_RPC_CALL  . . . . . . . . .  	NUMBER	0012	\r
_LOG_RPC_DENIED  . . . . . . . .  	NUMBER	0016	\r
_LOG_RPC_MISMATCH  . . . . . . .  	NUMBER	001D	\r
_LOG_RPC_REPLY . . . . . . . . .  	NUMBER	0014	\r
_LOG_RPC_SUCCESS . . . . . . . .  	NUMBER	0017	\r
_LOG_RPC_XMIT  . . . . . . . . .  	NUMBER	0013	\r
_LOG_SETATTR . . . . . . . . . .  	NUMBER	0002	\r
\f

▶08◀Microsoft (R) Macro Assembler Version 5.10                  2/21/90 19:58:00\r
Sun Packet Driver Interface Driver                          Symbols-8\r
\r
\r
_LOG_SHARE_DENIED  . . . . . . .  	NUMBER	0048	\r
_LOG_SHARE_ERROR . . . . . . . .  	NUMBER	0049	\r
_LOG_SHARE_REQUEST . . . . . . .  	NUMBER	0047	\r
_LOG_STATFS  . . . . . . . . . .  	NUMBER	0011	\r
_LOG_SYMLINK . . . . . . . . . .  	NUMBER	000D	\r
_LOG_SYSTEM_ERR  . . . . . . . .  	NUMBER	001C	\r
_LOG_UNLOCK_ERROR  . . . . . . .  	NUMBER	0050	\r
_LOG_UNLOCK_REQUEST  . . . . . .  	NUMBER	004F	\r
_LOG_UNSHARE_ERROR . . . . . . .  	NUMBER	004B	\r
_LOG_UNSHARE_REQUEST . . . . . .  	NUMBER	004A	\r
_LOG_WRITE . . . . . . . . . . .  	NUMBER	0008	\r
_LOG_WRITECACHE  . . . . . . . .  	NUMBER	0007	\r
_OPERATING_STATISTICS  . . . . .  	NUMBER	0001	\r
_SELECT_ARP  . . . . . . . . . .  	NUMBER	0000	\r
_SELECT_DYNAMIC  . . . . . . . .  	NUMBER	0005	\r
_SELECT_ICMP . . . . . . . . . .  	NUMBER	0002	\r
_SELECT_IPFRAG . . . . . . . . .  	NUMBER	0001	\r
_SELECT_LVD  . . . . . . . . . .  	NUMBER	0004	\r
_SELECT_NFS  . . . . . . . . . .  	NUMBER	0003	\r
_SELECT_TCP  . . . . . . . . . .  	NUMBER	000D	\r
_SELECT_TRASH  . . . . . . . . .  	NUMBER	000F	\r
_SELECT_UDP  . . . . . . . . . .  	NUMBER	000E	\r
_SEL_OFF_ARP . . . . . . . . . .  	NUMBER	000D	\r
_SEL_OFF_DYNAMIC . . . . . . . .  	NUMBER	0085	\r
_SEL_OFF_ICMP  . . . . . . . . .  	NUMBER	003D	\r
_SEL_OFF_IPFRAG  . . . . . . . .  	NUMBER	0025	\r
_SEL_OFF_LVD . . . . . . . . . .  	NUMBER	006D	\r
_SEL_OFF_NFS . . . . . . . . . .  	NUMBER	0055	\r
_SEL_OFF_TCP . . . . . . . . . .  	NUMBER	0145	\r
_SEL_OFF_TRASH . . . . . . . . .  	NUMBER	0175	\r
_SEL_OFF_UDP . . . . . . . . . .  	NUMBER	015D	\r
\r
\r
   1571 Source  Lines\r
   1668 Total   Lines\r
    375 Symbols\r
\r
  46334 + 238433 Bytes symbol space free\r
\r
      6 Warning Errors\r
      0 Severe  Errors\r