mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-28 14:29:20 +00:00
DNS:code rewrite
This commit is contained in:
parent
5a3891650f
commit
bb490f0347
BIN
A2OSX.BOOT.DSK
BIN
A2OSX.BOOT.DSK
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -5,6 +5,79 @@ INC 1
|
|||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
ARP.IN ldy #S.ARP.TPA+3
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.1 lda (ZPFrameBase1),y
|
||||||
|
cmp IPCFG+S.IPCFG.IP,x
|
||||||
|
bne .9
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
ldy #S.ARP.OPERATION+1 HI byte
|
||||||
|
lda (ZPFrameBase1),y
|
||||||
|
cmp #S.ARP.OPERATION.REQ
|
||||||
|
beq ARP.IN.REQ
|
||||||
|
|
||||||
|
cmp #S.ARP.OPERATION.REP
|
||||||
|
beq ARP.IN.REP
|
||||||
|
|
||||||
|
.9 clc Discard any other ARP frames
|
||||||
|
rts
|
||||||
|
|
||||||
|
ARP.IN.REQ ldy #S.ARP.SPA+3
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.1 lda (ZPFrameBase1),y
|
||||||
|
sta ARP.REP.TPA,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
ldy #S.ARP.SHA+5
|
||||||
|
ldx #5
|
||||||
|
|
||||||
|
.2 lda (ZPFrameBase1),y
|
||||||
|
sta ARP.REP.DSTMAC,x
|
||||||
|
sta ARP.REP.THA,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
>PUSHW L.ARP.REP
|
||||||
|
ldx #DEVMGR.NET.SEND
|
||||||
|
jsr NetDevJmp
|
||||||
|
|
||||||
|
ARP.IN.REP lda #K.ARP.TTL
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.TTL
|
||||||
|
lda /K.ARP.TTL
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.TTL+1
|
||||||
|
|
||||||
|
ldy #S.ARP.SPA+3
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.1 lda (ZPFrameBase1),y
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.IP,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
ldy #S.ARP.SHA+5
|
||||||
|
ldx #5
|
||||||
|
|
||||||
|
.2 lda (ZPFrameBase1),y
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.MAC,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
lda #S.ARPCACHE.STATUS.RESOLVED
|
||||||
|
|
||||||
|
jsr ARP.ADD.I
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
ARP.CLEAR ldx #K.ARPCACHE.SIZE*S.ARPCACHE
|
ARP.CLEAR ldx #K.ARPCACHE.SIZE*S.ARPCACHE
|
||||||
.1 dex
|
.1 dex
|
||||||
stz ARP.CACHE,x
|
stz ARP.CACHE,x
|
||||||
@ -25,7 +98,7 @@ ARP.QUERY >PULLW ZPPtrIP IP
|
|||||||
>PULLW ZPPtrMAC MAC
|
>PULLW ZPPtrMAC MAC
|
||||||
|
|
||||||
ARP.QUERY.I jsr ARP.FIND.BY.IP
|
ARP.QUERY.I jsr ARP.FIND.BY.IP
|
||||||
bcs ARP.REQUEST
|
bcs .3 send an ARP request
|
||||||
|
|
||||||
lda (ZPCachePtr) get status...
|
lda (ZPCachePtr) get status...
|
||||||
bpl .9 Pending...
|
bpl .9 Pending...
|
||||||
@ -38,6 +111,7 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP
|
|||||||
inc ZPCachePtr+1
|
inc ZPCachePtr+1
|
||||||
|
|
||||||
.1 ldy #5
|
.1 ldy #5
|
||||||
|
|
||||||
.2 lda (ZPCachePtr),y
|
.2 lda (ZPCachePtr),y
|
||||||
sta (ZPPtrMAC),y
|
sta (ZPPtrMAC),y
|
||||||
dey
|
dey
|
||||||
@ -45,29 +119,30 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.ARPPENDING
|
.3 ldy #3
|
||||||
sec
|
|
||||||
rts
|
.4 lda (ZPPtrIP),y
|
||||||
*--------------------------------------
|
|
||||||
ARP.REQUEST ldy #3
|
|
||||||
.1 lda (ZPPtrIP),y
|
|
||||||
sta ARP.REQ.TPA,y
|
sta ARP.REQ.TPA,y
|
||||||
sta ARP.TmpCache+S.ARPCACHE.IP,y
|
sta ARP.TmpCache+S.ARPCACHE.IP,y
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .4
|
||||||
|
|
||||||
>PUSHW L.ARP.REQ
|
>PUSHW L.ARP.REQ
|
||||||
ldx #DEVMGR.NET.SEND
|
ldx #DEVMGR.NET.SEND
|
||||||
jsr NetDevJmp
|
jsr NetDevJmp
|
||||||
|
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
|
lda #5
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.TTL
|
||||||
|
stz ARP.TmpCache+S.ARPCACHE.TTL+1
|
||||||
|
|
||||||
lda #S.ARPCACHE.STATUS.PENDING
|
lda #S.ARPCACHE.STATUS.PENDING
|
||||||
jsr ARP.ADD.I ZPPtrIP still pointing IP
|
jsr ARP.ADD.I
|
||||||
|
|
||||||
lda #ERR.ARPPENDING
|
.9 lda #ERR.ARPPENDING
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ARP.ADD
|
* ARP.ADD
|
||||||
* In:
|
* In:
|
||||||
@ -76,77 +151,37 @@ ARP.REQUEST ldy #3
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARP.ADD >PULLW ZPPtrIP IP
|
ARP.ADD >PULLW ZPPtrIP IP
|
||||||
>PULLW ZPPtrMAC MAC
|
>PULLW ZPPtrMAC MAC
|
||||||
|
|
||||||
|
stz ARP.TmpCache+S.ARPCACHE.TTL
|
||||||
|
stz ARP.TmpCache+S.ARPCACHE.TTL+1
|
||||||
|
|
||||||
|
ldy #3
|
||||||
|
.1 lda (ZPPtrIP),y
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.IP,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
ldy #5
|
||||||
|
.2 lda (ZPPtrMAC),y
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.MAC,y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
|
||||||
lda #S.ARPCACHE.STATUS.RESOLVED+S.ARPCACHE.STATUS.STATIC
|
lda #S.ARPCACHE.STATUS.RESOLVED+S.ARPCACHE.STATUS.STATIC
|
||||||
|
|
||||||
ARP.ADD.I sta ARP.TmpCache
|
ARP.ADD.I sta ARP.TmpCache
|
||||||
|
|
||||||
jsr ARP.FIND.BY.IP
|
jsr ARP.FIND.BY.IP
|
||||||
bcc .5
|
bcc .1
|
||||||
jsr DNS.FIND.FREE
|
jsr ARP.FIND.FREE
|
||||||
|
|
||||||
.1 lda ARP.CACHE,x get status
|
.1 ldy #S.ARPCACHE-1
|
||||||
beq .7 empty ARP cache entry
|
.2 lda ARP.TmpCache,y
|
||||||
|
sta (ZPCachePtr),y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
|
||||||
phx
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
.2 lda (ZPPtrIP),y
|
|
||||||
cmp ARP.CACHE+S.ARPCACHE.IP,x
|
|
||||||
bne .4
|
|
||||||
inx
|
|
||||||
iny
|
|
||||||
cpy #4
|
|
||||||
bne .2
|
|
||||||
plx
|
|
||||||
bra .7 same IP,update MAC
|
|
||||||
|
|
||||||
.4 pla get back index in ARP.CACHE
|
|
||||||
clc
|
clc
|
||||||
adc #S.ARPCACHE
|
|
||||||
cmp #K.ARPCACHE.SIZE*S.ARPCACHE
|
|
||||||
beq .5 Cache is full ?
|
|
||||||
tax
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.5 bra *
|
|
||||||
|
|
||||||
ldx #K.ARPCACHE.SIZE*S.ARPCACHE-S.ARPCACHE
|
|
||||||
.6 lda ARP.CACHE+S.ARPCACHE-1,x
|
|
||||||
sta ARP.CACHE-1,x
|
|
||||||
dex
|
|
||||||
bne .6
|
|
||||||
|
|
||||||
ldx #K.ARPCACHE.SIZE*S.ARPCACHE-S.ARPCACHE
|
|
||||||
|
|
||||||
.7 lda Status
|
|
||||||
sta ARP.CACHE,x mark ARP entry Status
|
|
||||||
|
|
||||||
lda #K.ARP.TTL
|
|
||||||
sta ARP.CACHE+S.ARPCACHE.TTL,x
|
|
||||||
lda /K.ARP.TTL
|
|
||||||
sta ARP.CACHE+S.ARPCACHE.TTL+1,x
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
phx
|
|
||||||
.8 lda (ZPPtrIP),y store IP in cache
|
|
||||||
sta ARP.CACHE+S.ARPCACHE.IP,x
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpy #4
|
|
||||||
bne .8
|
|
||||||
plx
|
|
||||||
lda Status
|
|
||||||
bpl .82 no MAC if "pending"
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
.81 lda (ZPPtrMAC),y store MAC in cache
|
|
||||||
sta ARP.CACHE+S.ARPCACHE.MAC,x
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpy #6
|
|
||||||
bne .81
|
|
||||||
|
|
||||||
.82 clc
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ARP.GETCACHE
|
* ARP.GETCACHE
|
||||||
@ -212,72 +247,99 @@ ARP.RESOLVE ldy #S.IP.DST
|
|||||||
adc /S.ETH.DSTMAC
|
adc /S.ETH.DSTMAC
|
||||||
sta ZPPtrMAC+1
|
sta ZPPtrMAC+1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*--------------------------------------
|
ARP.FIND.BY.IP >LDYA L.ARP.CACHE
|
||||||
*--------------------------------------
|
>STYA ZPCachePtr
|
||||||
ARP.IN ldy #S.ARP.TPA
|
|
||||||
ldx #S.IPCFG.IP
|
|
||||||
|
|
||||||
.1 lda (ZPFrameBase1),y
|
lda #K.ARPCACHE.SIZE
|
||||||
cmp IPCFG,x
|
sta TmpOffset
|
||||||
bne .9
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #S.IPCFG.IP+4
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
ldy #S.ARP.OPERATION+1 HI byte
|
.1 lda (ZPCachePtr)
|
||||||
lda (ZPFrameBase1),y
|
beq .7
|
||||||
cmp #S.ARP.OPERATION.REQ
|
|
||||||
beq ARP.IN.REQ
|
|
||||||
|
|
||||||
cmp #S.ARP.OPERATION.REP
|
ldy #S.ARPCACHE.IP+3
|
||||||
beq ARP.IN.REP
|
ldx #3
|
||||||
|
lda (ZPCachePtr),y
|
||||||
|
cmp (ZPPtrIP)
|
||||||
|
bne .7
|
||||||
|
ldy #S.ARPCACHE.IP+1
|
||||||
|
lda (ZPCachePtr),y
|
||||||
|
ldy #1
|
||||||
|
cmp (ZPPtrIP),y
|
||||||
|
bne .7
|
||||||
|
|
||||||
.9 clc Discard any other ARP frames
|
ldy #S.ARPCACHE.IP+2
|
||||||
|
lda (ZPCachePtr),y
|
||||||
|
ldy #2
|
||||||
|
cmp (ZPPtrIP),y
|
||||||
|
bne .7
|
||||||
|
|
||||||
|
ldy #S.ARPCACHE.IP+3
|
||||||
|
lda (ZPCachePtr),y
|
||||||
|
ldy #3
|
||||||
|
cmp (ZPPtrIP),y
|
||||||
|
bne .7
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
ARP.IN.REQ ldy #S.ETH.SRCMAC+5
|
.7 lda ZPCachePtr
|
||||||
ldx #5
|
clc
|
||||||
|
adc #S.ARPCACHE
|
||||||
|
sta ZPCachePtr
|
||||||
|
bcc .8
|
||||||
|
inc ZPCachePtr+1
|
||||||
|
|
||||||
.1 lda (ZPFrameBase1),y
|
.8 dec TmpOffset
|
||||||
sta ARP.REP.DSTMAC,x
|
bne .1
|
||||||
sta ARP.REP.THA,x
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
ARP.FIND.FREE >LDYA L.ARP.CACHE
|
||||||
|
>STYA ZPCachePtr
|
||||||
|
|
||||||
|
lda #$ff
|
||||||
|
sta TmpDWord
|
||||||
|
sta TmpDWord+1
|
||||||
|
|
||||||
|
ldx #K.ARPCACHE.SIZE
|
||||||
|
|
||||||
|
.1 lda (ZPCachePtr)
|
||||||
|
beq .8
|
||||||
|
bpl .6
|
||||||
|
|
||||||
|
ldy #S.ARPCACHE.TTL
|
||||||
|
lda (ZPCachePtr),y
|
||||||
|
sec
|
||||||
|
sbc TmpDWord
|
||||||
|
iny
|
||||||
|
lda (ZPCachePtr),y
|
||||||
|
sbc TmpDWord+1
|
||||||
|
bcc .6
|
||||||
|
|
||||||
|
lda (ZPCachePtr),y
|
||||||
|
sta TmpDWord+1
|
||||||
dey
|
dey
|
||||||
dex
|
lda (ZPCachePtr),y
|
||||||
bpl .1
|
sta TmpDWord
|
||||||
|
|
||||||
ldy #S.ARP.SPA+3
|
>LDYA ZPCachePtr
|
||||||
ldx #3
|
>STYA ZPTmpPtr1 save lowest TTL slot ...
|
||||||
|
|
||||||
.2 lda (ZPFrameBase1),y
|
.6 lda ZPCachePtr
|
||||||
sta ARP.REP.TPA,x
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
>PUSHW L.ARP.REP
|
|
||||||
ldx #DEVMGR.NET.SEND
|
|
||||||
jsr NetDevJmp
|
|
||||||
|
|
||||||
ARP.IN.REP lda #S.ARP.SHA
|
|
||||||
clc
|
clc
|
||||||
adc ZPFrameBase1
|
adc #S.ARPCACHE
|
||||||
sta ZPPtrMAC
|
sta ZPCachePtr
|
||||||
lda ZPFrameBase1+1
|
bcc .7
|
||||||
adc /S.ARP.SHA
|
inc ZPCachePtr+1
|
||||||
sta ZPPtrMAC+1
|
|
||||||
|
|
||||||
lda #S.ARP.SPA
|
.7 dex
|
||||||
clc
|
bne .1
|
||||||
adc ZPFrameBase1
|
|
||||||
sta ZPPtrIP
|
|
||||||
lda ZPFrameBase1+1
|
|
||||||
adc /S.ARP.SPA
|
|
||||||
sta ZPPtrIP+1
|
|
||||||
|
|
||||||
lda #S.ARPCACHE.STATUS.RESOLVED
|
>LDYA ZPTmpPtr1
|
||||||
jsr ARP.ADD.I
|
>STYA ZPCachePtr
|
||||||
clc
|
lda #0
|
||||||
|
sta (ZPCachePtr)
|
||||||
|
|
||||||
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARP.EXPIRE >LDYA L.ARP.CACHE
|
ARP.EXPIRE >LDYA L.ARP.CACHE
|
||||||
@ -286,7 +348,7 @@ ARP.EXPIRE >LDYA L.ARP.CACHE
|
|||||||
ldx #K.ARPCACHE.SIZE
|
ldx #K.ARPCACHE.SIZE
|
||||||
|
|
||||||
.1 lda (ZPCachePtr)
|
.1 lda (ZPCachePtr)
|
||||||
beq .7
|
beq .3
|
||||||
|
|
||||||
ldy #S.ARPCACHE.TTL
|
ldy #S.ARPCACHE.TTL
|
||||||
sec
|
sec
|
||||||
@ -313,36 +375,6 @@ ARP.EXPIRE >LDYA L.ARP.CACHE
|
|||||||
bne .1
|
bne .1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARP.FIND.BY.IP >LDYA L.ARP.CACHE
|
|
||||||
>STYA ZPCachePtr
|
|
||||||
|
|
||||||
lda #K.ARPCACHE.SIZE
|
|
||||||
sta TmpOffset
|
|
||||||
|
|
||||||
.1 lda (ZPCachePtr)
|
|
||||||
beq .7
|
|
||||||
|
|
||||||
ldy #S.ARPCACHE.IP
|
|
||||||
lda (ZPCachePtr),y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.7 lda ZPCachePtr
|
|
||||||
clc
|
|
||||||
adc #S.ARPCACHE
|
|
||||||
sta ZPCachePtr
|
|
||||||
bcc .8
|
|
||||||
inc ZPCachePtr+1
|
|
||||||
|
|
||||||
.8 dec TmpOffset
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
ARP.FIND.FREE
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE LIB/LIBTCPIP.S.ARP
|
SAVE LIB/LIBTCPIP.S.ARP
|
||||||
LOAD LIB/LIBTCPIP.S
|
LOAD LIB/LIBTCPIP.S
|
||||||
|
@ -87,8 +87,12 @@ DNS.REQUEST jsr HST.PSTR2DNS.I
|
|||||||
>STYA DNS.MSG.ID
|
>STYA DNS.MSG.ID
|
||||||
|
|
||||||
>STYA DNS.TmpCache+S.DNSCACHE.ID
|
>STYA DNS.TmpCache+S.DNSCACHE.ID
|
||||||
|
|
||||||
lda #5
|
lda #5
|
||||||
sta DNS.TmpCache+S.DNSCACHE.TTL
|
sta DNS.TmpCache+S.DNSCACHE.TTL
|
||||||
|
stz DNS.TmpCache+S.DNSCACHE.TTL+1
|
||||||
|
stz DNS.TmpCache+S.DNSCACHE.TTL+2
|
||||||
|
stz DNS.TmpCache+S.DNSCACHE.TTL+3
|
||||||
|
|
||||||
lda #S.DNSCACHE.STATUS.PENDING
|
lda #S.DNSCACHE.STATUS.PENDING
|
||||||
jsr DNS.ADD.I
|
jsr DNS.ADD.I
|
||||||
@ -119,14 +123,31 @@ DNS.REQUEST jsr HST.PSTR2DNS.I
|
|||||||
DNS.ADD >PULLW ZPPtrDNS Get host string
|
DNS.ADD >PULLW ZPPtrDNS Get host string
|
||||||
>PULLW ZPPtrIP Get host IP address
|
>PULLW ZPPtrIP Get host IP address
|
||||||
|
|
||||||
|
ldy #3
|
||||||
|
|
||||||
|
.1 lda (ZPPtrIP),y
|
||||||
|
sta DNS.TmpCache+S.DNSCACHE.IP,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
stz DNS.TmpCache+S.DNSCACHE.TTL
|
||||||
|
stz DNS.TmpCache+S.DNSCACHE.TTL+1
|
||||||
|
stz DNS.TmpCache+S.DNSCACHE.TTL+2
|
||||||
|
stz DNS.TmpCache+S.DNSCACHE.TTL+3
|
||||||
|
|
||||||
lda #S.DNSCACHE.STATUS.RESOLVED+S.DNSCACHE.STATUS.STATIC
|
lda #S.DNSCACHE.STATUS.RESOLVED+S.DNSCACHE.STATUS.STATIC
|
||||||
|
|
||||||
DNS.ADD.I sta DNS.TmpCache
|
DNS.ADD.I sta DNS.TmpCache
|
||||||
|
|
||||||
jsr DNS.FIND.BY.NAME
|
jsr DNS.FIND.BY.NAME
|
||||||
bcc .5 Found!!! update this entry
|
bcs .1 not found, go create new
|
||||||
|
|
||||||
jsr DNS.FIND.FREE
|
ldy #S.DNSCACHE.hNAME
|
||||||
|
lda (ZPCachePtr),y
|
||||||
|
sta DNS.TmpCache,y
|
||||||
|
bra .20
|
||||||
|
|
||||||
|
.1 jsr DNS.FIND.FREE
|
||||||
|
|
||||||
lda (ZPPtrDNS)
|
lda (ZPPtrDNS)
|
||||||
iny add 1 for len byte
|
iny add 1 for len byte
|
||||||
@ -143,24 +164,20 @@ DNS.ADD.I sta DNS.TmpCache
|
|||||||
sta (ZPTmpPtr1)
|
sta (ZPTmpPtr1)
|
||||||
tay
|
tay
|
||||||
|
|
||||||
.1 lda (ZPPtrDNS),y
|
.2 lda (ZPPtrDNS),y
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPTmpPtr1),y
|
||||||
dey
|
dey
|
||||||
bne .1
|
bne .2
|
||||||
|
|
||||||
ldy #S.DNSCACHE-1
|
.20 ldy #S.DNSCACHE-1
|
||||||
.2 lda DNS.TmpCache,y
|
.3 lda DNS.TmpCache,y
|
||||||
sta (ZPCachePtr),y
|
sta (ZPCachePtr),y
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .3
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.5
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -226,24 +243,22 @@ DNS.FIND.FREE >LDYA L.DNS.CACHE
|
|||||||
bpl .6 pending.....skip
|
bpl .6 pending.....skip
|
||||||
|
|
||||||
ldy #S.DNSCACHE.TTL
|
ldy #S.DNSCACHE.TTL
|
||||||
ldx #0
|
ldx #3
|
||||||
sec
|
sec
|
||||||
.2 lda TmpDWord,x is save TTL greater then actual TTL?
|
.2 lda TmpDWord,x is save TTL greater then actual TTL?
|
||||||
sbc (ZPCachePtr),y
|
sbc (ZPCachePtr),y
|
||||||
inx
|
|
||||||
iny
|
iny
|
||||||
cpy #S.DNSCACHE.TTL+4
|
dex
|
||||||
bne .2
|
bpl .2
|
||||||
bcc .6 no,
|
bcc .6 no,
|
||||||
|
|
||||||
ldy #S.DNSCACHE.TTL
|
ldy #S.DNSCACHE.TTL
|
||||||
ldx #0
|
ldx #3
|
||||||
.3 lda (ZPCachePtr),y Save new lowest TTL
|
.3 lda (ZPCachePtr),y Save new lowest TTL
|
||||||
sta TmpDWord,x
|
sta TmpDWord,x
|
||||||
inx
|
|
||||||
iny
|
iny
|
||||||
cpy #S.DNSCACHE.TTL+4
|
dex
|
||||||
bne .3
|
bpl .3
|
||||||
|
|
||||||
>LDYA ZPCachePtr
|
>LDYA ZPCachePtr
|
||||||
>STYA ZPTmpPtr1 save lowest TTL slot ...
|
>STYA ZPTmpPtr1 save lowest TTL slot ...
|
||||||
@ -260,7 +275,7 @@ DNS.FIND.FREE >LDYA L.DNS.CACHE
|
|||||||
|
|
||||||
>LDYA ZPTmpPtr1
|
>LDYA ZPTmpPtr1
|
||||||
>STYA ZPCachePtr
|
>STYA ZPCachePtr
|
||||||
jmp DNS.FREE
|
jsr DNS.FREE
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
@ -305,21 +320,25 @@ DNS.FREE ldy #S.DNSCACHE.hNAME
|
|||||||
sta (ZPCachePtr)
|
sta (ZPCachePtr)
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DNS.SKTPOLL lda hDNSSocket1
|
DNS.POLL lda hDNSSocket1
|
||||||
beq .8
|
beq .8
|
||||||
jsr SKT.RCVDA
|
jsr SKT.RCVDA
|
||||||
bcs .8
|
bcs .8
|
||||||
|
jsr DNS.DecodeMsg
|
||||||
|
|
||||||
bra *
|
lda hDNSSocket2
|
||||||
|
beq .8
|
||||||
|
jsr SKT.RCVDA
|
||||||
|
bcs .8
|
||||||
|
jsr DNS.DecodeMsg
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DNS.DecodeMsg sta hFrame1
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>STYA ZPFrameBase1
|
||||||
|
|
||||||
ldy #S.DNS.F+1
|
ldy #S.DNS.F+1
|
||||||
lda (ZPFrameBase1),y
|
lda (ZPFrameBase1),y
|
||||||
and /S.DNS.F.QR
|
and /S.DNS.F.QR
|
||||||
@ -349,6 +368,10 @@ DNS.SKTPOLL lda hDNSSocket1
|
|||||||
|
|
||||||
.3 iny skip high byte of offset
|
.3 iny skip high byte of offset
|
||||||
iny skip lo byte of offset
|
iny skip lo byte of offset
|
||||||
|
|
||||||
|
.9 lda hFrame1
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE LIB/LIBTCPIP.S.DNS
|
SAVE LIB/LIBTCPIP.S.DNS
|
||||||
|
@ -287,9 +287,8 @@ RCVD.FRAMEA sta hFrame1
|
|||||||
cpx /S.ETH.ETHERTYPE.IP
|
cpx /S.ETH.ETHERTYPE.IP
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr IP.IN
|
jmp IP.IN
|
||||||
bcs .9
|
|
||||||
jmp DNS.SKTPOLL
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -11,7 +11,9 @@ HST.GETBYNAME >PULLW ZPPtrDNS
|
|||||||
bcc .1
|
bcc .1
|
||||||
jsr DNS.QUERY.I
|
jsr DNS.QUERY.I
|
||||||
bcs .9
|
bcs .9
|
||||||
.1 jmp ARP.REQUEST.I
|
>LDYA TmpBuffer256
|
||||||
|
>STYA ZPPtrMAC
|
||||||
|
.1 jmp ARP.QUERY.I
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HST.GETBYADDR >PULLW ZPPtrIP
|
HST.GETBYADDR >PULLW ZPPtrIP
|
||||||
|
@ -51,6 +51,11 @@ ICMP.IN ldy #S.ICMP.TYPE
|
|||||||
dex
|
dex
|
||||||
bpl .4
|
bpl .4
|
||||||
|
|
||||||
|
lda #K.ARP.TTL
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.TTL
|
||||||
|
lda /K.ARP.TTL
|
||||||
|
sta ARP.TmpCache+S.ARPCACHE.TTL+1
|
||||||
|
|
||||||
lda #S.ARPCACHE.STATUS.RESOLVED
|
lda #S.ARPCACHE.STATUS.RESOLVED
|
||||||
jsr ARP.ADD.I
|
jsr ARP.ADD.I
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user