Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5585 → Rev 5586

/programs/network/netstat/netstat.asm
1,6 → 1,6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2010-2014. All rights reserved. ;;
;; Copyright (C) KolibriOS team 2010-2015. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;; netstat.asm - Network Status Tool for KolibriOS ;;
29,13 → 29,30
dd (I_END+0x1000) ; esp
dd 0, 0 ; I_Param, I_Path
 
include '../../proc32.inc'
include '../../macros.inc'
include '../../dll.inc'
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
 
include '../../network.inc'
 
include 'ipcfg.inc'
 
START:
 
mcall 68, 11
 
stdcall dll.Load, @IMPORT
or eax, eax
jnz exit
 
mcall 40, EVM_REDRAW + EVM_BUTTON + EVM_STACK2 + EVM_KEY
 
window_redraw:
 
; get system colors
mcall 48, 3, sc, 40
 
; Notify kernel of start of window draw
mcall 12, 1
 
134,6 → 151,12
mov edx, str_bytes_rx
mcall
add ebx, 18
mov edx, str_speed_tx
mcall
add ebx, 18
mov edx, str_speed_rx
mcall
add ebx, 18
mov edx, str_link
mcall
 
150,7 → 173,7
push eax
push bx
 
mov edx, 134 shl 16 + 35 + 5*18
mov edx, 134 shl 16 + 35 + 7*18
call draw_mac
jmp end_of_draw
 
209,6 → 232,12
add edx, 18
call draw_ip
 
cmp [device], 0
je end_of_draw
 
mcall 8, 128 shl 16 + 100, 150 shl 16 + 20, 2, [sc.work_button]
mcall 4, 150 shl 16 + 157, [sc.work_button_text], str_ip_cfg, str_ip_cfg.len
 
jmp end_of_draw
 
.no_ip:
275,38 → 304,65
cmp bl, 10
jbe @r
 
pop eax
test al, al
pop ecx
 
push [time]
pop [delta_time]
mcall 26, 9
mov [time], eax
sub eax, [delta_time]
jnz @f
inc eax ; Zero time units? Lets make it at least one.
@@:
mov [delta_time], eax
 
mov eax, [esp+4] ; bytes received
push eax
sub eax, [prev_rx]
pop [prev_rx]
xor edx, edx
div [delta_time]
push eax
 
mov eax, [esp+4] ; bytes sent
push eax
sub eax, [prev_tx]
pop [prev_tx]
xor edx, edx
div [delta_time]
push eax
 
test cl, cl
jnz @f
mov edx, str_down
jmp .print_link
@@:
cmp al, 100b
cmp cl, 100b
jnz @f
mov edx, str_10m
jmp .print_link
@@:
cmp al, 110b
cmp cl, 110b
jnz @f
mov edx, str_10mfd
jmp .print_link
@@:
cmp al, 1000b
cmp cl, 1000b
jnz @f
mov edx, str_100m
jmp .print_link
@@:
cmp al, 1010b
cmp cl, 1010b
jnz @f
mov edx, str_100mfd
jmp .print_link
@@:
cmp al, 1100b
cmp cl, 1100b
jnz @f
mov edx, str_1g
jmp .print_link
@@:
cmp al, 1110b
cmp cl, 1110b
jnz @f
mov edx, str_1gfd
jmp .print_link
314,29 → 370,43
mov edx, str_unknown
 
.print_link:
mov ebx, 134 shl 16 + 35 + 4*18
mov ebx, 134 shl 16 + 35 + 6*18
mov ecx, 0xc0000000
mov edi, 0x00f3f3f3
mcall 4
 
; speed tx
mov ebx, 0x000a0000
pop ecx
mov edx, 134 shl 16 + 35 + 3*18
mov edx, 134 shl 16 + 35 + 5*18
mov esi, 0x40000000
mcall 47
 
; speed rx
sub edx, 18
pop ecx
mcall
 
; bytes received
sub edx, 18
pop ecx
mcall
 
; bytes sent
sub edx, 18
pop ecx
mcall
 
; packets received
sub edx, 18
pop ecx
mcall
 
; packets sent
sub edx, 18
pop ecx
mcall
 
jmp mainloop
 
 
646,6 → 716,8
mcall 17 ; get id
cmp ah, 1
je exit
cmp ah, 2
je .ipcfg
cmp ah, 0
je .interface
shr ax, 8
652,6 → 724,10
mov [mode], ax
jmp redraw
 
.ipcfg:
mcall 51, 1, ipcfg, I_END+0x1000
jmp mainloop
 
.interface:
shr eax, 16
mov [device], al
818,6 → 894,31
 
; DATA AREA
 
align 16
@IMPORT:
 
library box_lib , 'box_lib.obj', \
libini , 'libini.obj'
 
import libini, \
ini.get_str , 'ini_get_str' ,\
ini.set_str , 'ini_set_str' ,\
ini.enum_sections, 'ini_enum_sections'
 
import box_lib ,\
edit_box_draw , 'edit_box' ,\
edit_box_key , 'edit_box_key' ,\
edit_box_mouse , 'edit_box_mouse' ,\
edit_set_text , 'edit_box_set_text' ,\
version_ed , 'version_ed' ,\
init_checkbox , 'init_checkbox2' ,\
check_box_draw , 'check_box_draw2' ,\
check_box_mouse , 'check_box_mouse2' ,\
version_ch , 'version_ch2' ,\
option_box_draw , 'option_box_draw' ,\
option_box_mouse, 'option_box_mouse' ,\
version_op , 'version_op'
 
name db 'Network status', 0
mode dw 101 ; currently selected protocol
device db 1 ; currently selected device
841,6 → 942,10
str_dumped db 'Packets dumped:',0
str_queued db 'Packets queued:',0
str_link db 'Link state:',0
str_speed_tx db 'Upload (kb/s):', 0
str_speed_rx db 'Download (kb/s):', 0
str_ip_cfg db 'Configure'
.len = $ - str_ip_cfg
 
str_down db 'disconnected ', 0
str_unknown db 'unknown ', 0
854,7 → 959,14
str_ARP_legend db 'IP-address MAC-address Status TTL', 0
str_ARP_entry db ' . . . - - - - -', 0
 
prev_rx dd ?
prev_tx dd ?
time dd ?
delta_time dd ?
 
namebuf rb 64
arp_buf ARP_entry
 
sc system_colors
 
I_END: