|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 97180 (0x17b9c) Types: TextFile Names: »pktd.lst«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦349c9a24c⟧ »EurOpenD3/network/ka9q/pktd.tar.Z« └─⟦613ecc654⟧ └─⟦this⟧ »./build/pktd.lst«
\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