forked from KolibriOS/kolibrios
Renamed icmp.asm to ping.asm and added parameter support
git-svn-id: svn://kolibrios.org@2872 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
95db71b240
commit
986cee8866
@ -127,7 +127,7 @@ FASM_PROGRAMS:=\
|
|||||||
media/midamp:MEDIA/MIDAMP:$(PROGS)/media/midamp/trunk/midamp.asm \
|
media/midamp:MEDIA/MIDAMP:$(PROGS)/media/midamp/trunk/midamp.asm \
|
||||||
media/startmus:MEDIA/STARTMUS:$(PROGS)/media/startmus/trunk/STARTMUS.ASM \
|
media/startmus:MEDIA/STARTMUS:$(PROGS)/media/startmus/trunk/STARTMUS.ASM \
|
||||||
network/arpcfg:NETWORK/ARPCFG:$(NETPROGS)/arpcfg/arpcfg.asm \
|
network/arpcfg:NETWORK/ARPCFG:$(NETPROGS)/arpcfg/arpcfg.asm \
|
||||||
network/icmp:NETWORK/ICMP:$(NETPROGS)/icmp/icmp.asm \
|
network/ping:NETWORK/PING:$(NETPROGS)/icmp/ping.asm \
|
||||||
network/netcfg:NETWORK/NETCFG:$(NETPROGS)/netcfg/netcfg.asm \
|
network/netcfg:NETWORK/NETCFG:$(NETPROGS)/netcfg/netcfg.asm \
|
||||||
network/netstat:NETWORK/NETSTAT:$(NETPROGS)/netstat/netstat.asm \
|
network/netstat:NETWORK/NETSTAT:$(NETPROGS)/netstat/netstat.asm \
|
||||||
network/nslookup:NETWORK/NSLOOKUP:$(NETPROGS)/nslookup/nslookup.asm \
|
network/nslookup:NETWORK/NSLOOKUP:$(NETPROGS)/nslookup/nslookup.asm \
|
||||||
|
77
kernel/branches/net/applications/icmp/icmp.inc
Normal file
77
kernel/branches/net/applications/icmp/icmp.inc
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
; ICMP types & codes
|
||||||
|
|
||||||
|
ICMP_ECHOREPLY equ 0 ; echo reply message
|
||||||
|
|
||||||
|
ICMP_UNREACH equ 3
|
||||||
|
ICMP_UNREACH_NET equ 0 ; bad net
|
||||||
|
ICMP_UNREACH_HOST equ 1 ; bad host
|
||||||
|
ICMP_UNREACH_PROTOCOL equ 2 ; bad protocol
|
||||||
|
ICMP_UNREACH_PORT equ 3 ; bad port
|
||||||
|
ICMP_UNREACH_NEEDFRAG equ 4 ; IP_DF caused drop
|
||||||
|
ICMP_UNREACH_SRCFAIL equ 5 ; src route failed
|
||||||
|
ICMP_UNREACH_NET_UNKNOWN equ 6 ; unknown net
|
||||||
|
ICMP_UNREACH_HOST_UNKNOWN equ 7 ; unknown host
|
||||||
|
ICMP_UNREACH_ISOLATED equ 8 ; src host isolated
|
||||||
|
ICMP_UNREACH_NET_PROHIB equ 9 ; prohibited access
|
||||||
|
ICMP_UNREACH_HOST_PROHIB equ 10 ; ditto
|
||||||
|
ICMP_UNREACH_TOSNET equ 11 ; bad tos for net
|
||||||
|
ICMP_UNREACH_TOSHOST equ 12 ; bad tos for host
|
||||||
|
ICMP_UNREACH_FILTER_PROHIB equ 13 ; admin prohib
|
||||||
|
ICMP_UNREACH_HOST_PRECEDENCE equ 14 ; host prec vio.
|
||||||
|
ICMP_UNREACH_PRECEDENCE_CUTOFF equ 15 ; prec cutoff
|
||||||
|
|
||||||
|
ICMP_SOURCEQUENCH equ 4 ; Packet lost, slow down
|
||||||
|
|
||||||
|
ICMP_REDIRECT equ 5 ; shorter route, codes:
|
||||||
|
ICMP_REDIRECT_NET equ 0 ; for network
|
||||||
|
ICMP_REDIRECT_HOST equ 1 ; for host
|
||||||
|
ICMP_REDIRECT_TOSNET equ 2 ; for tos and net
|
||||||
|
ICMP_REDIRECT_TOSHOST equ 3 ; for tos and host
|
||||||
|
|
||||||
|
ICMP_ALTHOSTADDR equ 6 ; alternate host address
|
||||||
|
ICMP_ECHO equ 8 ; echo service
|
||||||
|
ICMP_ROUTERADVERT equ 9 ; router advertisement
|
||||||
|
ICMP_ROUTERADVERT_NORMAL equ 0 ; normal advertisement
|
||||||
|
ICMP_ROUTERADVERT_NOROUTE_COMMON equ 16 ; selective routing
|
||||||
|
|
||||||
|
ICMP_ROUTERSOLICIT equ 10 ; router solicitation
|
||||||
|
ICMP_TIMXCEED equ 11 ; time exceeded, code:
|
||||||
|
ICMP_TIMXCEED_INTRANS equ 0 ; ttl==0 in transit
|
||||||
|
ICMP_TIMXCEED_REASS equ 1 ; ttl==0 in reass
|
||||||
|
|
||||||
|
ICMP_PARAMPROB equ 12 ; ip header bad
|
||||||
|
ICMP_PARAMPROB_ERRATPTR equ 0 ; error at param ptr
|
||||||
|
ICMP_PARAMPROB_OPTABSENT equ 1 ; req. opt. absent
|
||||||
|
ICMP_PARAMPROB_LENGTH equ 2 ; bad length
|
||||||
|
|
||||||
|
ICMP_TSTAMP equ 13 ; timestamp request
|
||||||
|
ICMP_TSTAMPREPLY equ 14 ; timestamp reply
|
||||||
|
ICMP_IREQ equ 15 ; information request
|
||||||
|
ICMP_IREQREPLY equ 16 ; information reply
|
||||||
|
ICMP_MASKREQ equ 17 ; address mask request
|
||||||
|
ICMP_MASKREPLY equ 18 ; address mask reply
|
||||||
|
ICMP_TRACEROUTE equ 30 ; traceroute
|
||||||
|
ICMP_DATACONVERR equ 31 ; data conversion error
|
||||||
|
ICMP_MOBILE_REDIRECT equ 32 ; mobile host redirect
|
||||||
|
ICMP_IPV6_WHEREAREYOU equ 33 ; IPv6 where-are-you
|
||||||
|
ICMP_IPV6_IAMHERE equ 34 ; IPv6 i-am-here
|
||||||
|
ICMP_MOBILE_REGREQUEST equ 35 ; mobile registration req
|
||||||
|
ICMP_MOBILE_REGREPLY equ 36 ; mobile registreation reply
|
||||||
|
ICMP_SKIP equ 39 ; SKIP
|
||||||
|
|
||||||
|
ICMP_PHOTURIS equ 40 ; Photuris
|
||||||
|
ICMP_PHOTURIS_UNKNOWN_INDEX equ 1 ; unknown sec index
|
||||||
|
ICMP_PHOTURIS_AUTH_FAILED equ 2 ; auth failed
|
||||||
|
ICMP_PHOTURIS_DECRYPT_FAILED equ 3 ; decrypt failed
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
virtual at 0
|
||||||
|
ICMP_Packet:
|
||||||
|
.Type db ?
|
||||||
|
.Code db ?
|
||||||
|
.Checksum dw ?
|
||||||
|
.Identifier dw ?
|
||||||
|
.SequenceNumber dw ?
|
||||||
|
.Data:
|
||||||
|
end virtual
|
@ -1,16 +1,30 @@
|
|||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; ;;
|
||||||
|
;; Copyright (C) KolibriOS team 2010-2012. All rights reserved. ;;
|
||||||
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
|
;; ;;
|
||||||
|
;; ping.asm - ICMP echo client for KolibriOS ;;
|
||||||
|
;; ;;
|
||||||
|
;; Written by hidnplayr@kolibrios.org ;;
|
||||||
|
;; ;;
|
||||||
|
;; GNU GENERAL PUBLIC LICENSE ;;
|
||||||
|
;; Version 2, June 1991 ;;
|
||||||
|
;; ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
format binary as ""
|
format binary as ""
|
||||||
|
|
||||||
use32
|
use32
|
||||||
org 0x0
|
org 0x0
|
||||||
; standard header
|
|
||||||
db 'MENUET01' ; signature
|
db 'MENUET01' ; signature
|
||||||
dd 1 ; header version
|
dd 1 ; header version
|
||||||
dd start ; entry point
|
dd start ; entry point
|
||||||
dd I_END ; initialized size
|
dd I_END ; initialized size
|
||||||
dd mem ; required memory
|
dd mem ; required memory
|
||||||
dd mem ; stack pointer
|
dd mem ; stack pointer
|
||||||
dd 0 ; parameters
|
dd s ; parameters
|
||||||
dd 0 ; path
|
dd 0 ; path
|
||||||
|
|
||||||
|
|
||||||
@ -20,91 +34,11 @@ include '../macros.inc'
|
|||||||
purge mov,add,sub
|
purge mov,add,sub
|
||||||
include '../proc32.inc'
|
include '../proc32.inc'
|
||||||
include '../dll.inc'
|
include '../dll.inc'
|
||||||
|
|
||||||
include '../network.inc'
|
include '../network.inc'
|
||||||
|
|
||||||
|
include 'icmp.inc'
|
||||||
|
|
||||||
|
|
||||||
; ICMP types & codes
|
|
||||||
|
|
||||||
ICMP_ECHOREPLY equ 0 ; echo reply message
|
|
||||||
|
|
||||||
ICMP_UNREACH equ 3
|
|
||||||
ICMP_UNREACH_NET equ 0 ; bad net
|
|
||||||
ICMP_UNREACH_HOST equ 1 ; bad host
|
|
||||||
ICMP_UNREACH_PROTOCOL equ 2 ; bad protocol
|
|
||||||
ICMP_UNREACH_PORT equ 3 ; bad port
|
|
||||||
ICMP_UNREACH_NEEDFRAG equ 4 ; IP_DF caused drop
|
|
||||||
ICMP_UNREACH_SRCFAIL equ 5 ; src route failed
|
|
||||||
ICMP_UNREACH_NET_UNKNOWN equ 6 ; unknown net
|
|
||||||
ICMP_UNREACH_HOST_UNKNOWN equ 7 ; unknown host
|
|
||||||
ICMP_UNREACH_ISOLATED equ 8 ; src host isolated
|
|
||||||
ICMP_UNREACH_NET_PROHIB equ 9 ; prohibited access
|
|
||||||
ICMP_UNREACH_HOST_PROHIB equ 10 ; ditto
|
|
||||||
ICMP_UNREACH_TOSNET equ 11 ; bad tos for net
|
|
||||||
ICMP_UNREACH_TOSHOST equ 12 ; bad tos for host
|
|
||||||
ICMP_UNREACH_FILTER_PROHIB equ 13 ; admin prohib
|
|
||||||
ICMP_UNREACH_HOST_PRECEDENCE equ 14 ; host prec vio.
|
|
||||||
ICMP_UNREACH_PRECEDENCE_CUTOFF equ 15 ; prec cutoff
|
|
||||||
|
|
||||||
ICMP_SOURCEQUENCH equ 4 ; Packet lost, slow down
|
|
||||||
|
|
||||||
ICMP_REDIRECT equ 5 ; shorter route, codes:
|
|
||||||
ICMP_REDIRECT_NET equ 0 ; for network
|
|
||||||
ICMP_REDIRECT_HOST equ 1 ; for host
|
|
||||||
ICMP_REDIRECT_TOSNET equ 2 ; for tos and net
|
|
||||||
ICMP_REDIRECT_TOSHOST equ 3 ; for tos and host
|
|
||||||
|
|
||||||
ICMP_ALTHOSTADDR equ 6 ; alternate host address
|
|
||||||
ICMP_ECHO equ 8 ; echo service
|
|
||||||
ICMP_ROUTERADVERT equ 9 ; router advertisement
|
|
||||||
ICMP_ROUTERADVERT_NORMAL equ 0 ; normal advertisement
|
|
||||||
ICMP_ROUTERADVERT_NOROUTE_COMMON equ 16 ; selective routing
|
|
||||||
|
|
||||||
ICMP_ROUTERSOLICIT equ 10 ; router solicitation
|
|
||||||
ICMP_TIMXCEED equ 11 ; time exceeded, code:
|
|
||||||
ICMP_TIMXCEED_INTRANS equ 0 ; ttl==0 in transit
|
|
||||||
ICMP_TIMXCEED_REASS equ 1 ; ttl==0 in reass
|
|
||||||
|
|
||||||
ICMP_PARAMPROB equ 12 ; ip header bad
|
|
||||||
ICMP_PARAMPROB_ERRATPTR equ 0 ; error at param ptr
|
|
||||||
ICMP_PARAMPROB_OPTABSENT equ 1 ; req. opt. absent
|
|
||||||
ICMP_PARAMPROB_LENGTH equ 2 ; bad length
|
|
||||||
|
|
||||||
ICMP_TSTAMP equ 13 ; timestamp request
|
|
||||||
ICMP_TSTAMPREPLY equ 14 ; timestamp reply
|
|
||||||
ICMP_IREQ equ 15 ; information request
|
|
||||||
ICMP_IREQREPLY equ 16 ; information reply
|
|
||||||
ICMP_MASKREQ equ 17 ; address mask request
|
|
||||||
ICMP_MASKREPLY equ 18 ; address mask reply
|
|
||||||
ICMP_TRACEROUTE equ 30 ; traceroute
|
|
||||||
ICMP_DATACONVERR equ 31 ; data conversion error
|
|
||||||
ICMP_MOBILE_REDIRECT equ 32 ; mobile host redirect
|
|
||||||
ICMP_IPV6_WHEREAREYOU equ 33 ; IPv6 where-are-you
|
|
||||||
ICMP_IPV6_IAMHERE equ 34 ; IPv6 i-am-here
|
|
||||||
ICMP_MOBILE_REGREQUEST equ 35 ; mobile registration req
|
|
||||||
ICMP_MOBILE_REGREPLY equ 36 ; mobile registreation reply
|
|
||||||
ICMP_SKIP equ 39 ; SKIP
|
|
||||||
|
|
||||||
ICMP_PHOTURIS equ 40 ; Photuris
|
|
||||||
ICMP_PHOTURIS_UNKNOWN_INDEX equ 1 ; unknown sec index
|
|
||||||
ICMP_PHOTURIS_AUTH_FAILED equ 2 ; auth failed
|
|
||||||
ICMP_PHOTURIS_DECRYPT_FAILED equ 3 ; decrypt failed
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
virtual at 0
|
|
||||||
ICMP_Packet:
|
|
||||||
.Type db ?
|
|
||||||
.Code db ?
|
|
||||||
.Checksum dw ?
|
|
||||||
.Identifier dw ?
|
|
||||||
.SequenceNumber dw ?
|
|
||||||
.Data:
|
|
||||||
end virtual
|
|
||||||
|
|
||||||
|
|
||||||
; entry point
|
|
||||||
start:
|
start:
|
||||||
; load libraries
|
; load libraries
|
||||||
stdcall dll.Load, @IMPORT
|
stdcall dll.Load, @IMPORT
|
||||||
@ -120,8 +54,8 @@ start:
|
|||||||
push 80
|
push 80
|
||||||
call [con_init]
|
call [con_init]
|
||||||
; main loop
|
; main loop
|
||||||
push str1
|
cmp byte[s], 0
|
||||||
call [con_write_asciiz]
|
jne resolve
|
||||||
main:
|
main:
|
||||||
; write prompt
|
; write prompt
|
||||||
push str2
|
push str2
|
||||||
@ -144,12 +78,14 @@ main:
|
|||||||
jnz @b
|
jnz @b
|
||||||
mov byte [esi-2], al
|
mov byte [esi-2], al
|
||||||
pop esi
|
pop esi
|
||||||
|
|
||||||
|
resolve:
|
||||||
; resolve name
|
; resolve name
|
||||||
push esp ; reserve stack place
|
push esp ; reserve stack place
|
||||||
push esp ; fourth parameter
|
push esp ; fourth parameter
|
||||||
push 0 ; third parameter
|
push 0 ; third parameter
|
||||||
push 0 ; second parameter
|
push 0 ; second parameter
|
||||||
push esi ; first parameter
|
push s ; first parameter
|
||||||
call [getaddrinfo]
|
call [getaddrinfo]
|
||||||
pop esi
|
pop esi
|
||||||
; test for error
|
; test for error
|
||||||
@ -258,17 +194,16 @@ fail2:
|
|||||||
|
|
||||||
|
|
||||||
; data
|
; data
|
||||||
title db 'ICMP - test application',0
|
title db 'ICMP - echo client',0
|
||||||
str1 db 'ICMP test application v0.1',10,' for KolibriOS # 1540 or later. ',10,10,0
|
|
||||||
str2 db '> ',0
|
str2 db '> ',0
|
||||||
str3 db 'Ping to: ',0
|
str3 db 'Ping to ',0
|
||||||
str4 db 10,0
|
str4 db 10,0
|
||||||
str5 db 'Name resolution failed.',10,10,0
|
str5 db 'Name resolution failed.',10,0
|
||||||
str6 db 'Could not open socket',10,10,0
|
str6 db 'Could not open socket',10,0
|
||||||
str7 db ' time= %u0ms',10,0
|
str7 db ' time= %u0ms',10,0
|
||||||
str8 db ' timeout!',10,0
|
str8 db ' timeout!',10,0
|
||||||
str9 db ' miscompare at offset %u',10,0
|
str9 db ' miscompare at offset %u',10,0
|
||||||
str10 db 10,10,'Press any key to exit',0
|
str10 db 10,'Press any key to exit',0
|
||||||
|
|
||||||
sockaddr1:
|
sockaddr1:
|
||||||
dw AF_INET4
|
dw AF_INET4
|
||||||
@ -316,7 +251,6 @@ I_END:
|
|||||||
|
|
||||||
buffer_ptr rb BUFFERSIZE
|
buffer_ptr rb BUFFERSIZE
|
||||||
|
|
||||||
s rb 256
|
s rb 1024
|
||||||
align 4
|
rb 4096 ; stack
|
||||||
rb 4096 ; stack
|
|
||||||
mem:
|
mem:
|
@ -2,12 +2,6 @@
|
|||||||
/rd/1=/sys
|
/rd/1=/sys
|
||||||
/rd/1/dll=/sys/lib
|
/rd/1/dll=/sys/lib
|
||||||
|
|
||||||
[net]
|
|
||||||
active=1
|
|
||||||
addr=192.168.1.2
|
|
||||||
mask=255.255.255.0
|
|
||||||
gate=192.168.1.1
|
|
||||||
|
|
||||||
[gui]
|
[gui]
|
||||||
mouse_speed=1
|
mouse_speed=1
|
||||||
mouse_delay=0x00A
|
mouse_delay=0x00A
|
||||||
|
Loading…
Reference in New Issue
Block a user