From 685987e90de1b45459432b2ecd3c721cb46c723e Mon Sep 17 00:00:00 2001 From: hidnplayr Date: Thu, 23 Jul 2015 17:40:09 +0000 Subject: [PATCH] Netstat: Save dns address correctly, added optionbox to disabled IPv4. Zeroconfig: Dont give up too soon when network.ini is malformed. git-svn-id: svn://kolibrios.org@5610 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/network/netstat/ipcfg.inc | 117 ++++++++++++++++--------- programs/network/zeroconf/zeroconf.asm | 19 ++-- 2 files changed, 86 insertions(+), 50 deletions(-) diff --git a/programs/network/netstat/ipcfg.inc b/programs/network/netstat/ipcfg.inc index 8b9723619e..ed7ec3ab7d 100644 --- a/programs/network/netstat/ipcfg.inc +++ b/programs/network/netstat/ipcfg.inc @@ -10,8 +10,6 @@ ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -enum_callback: - ipcfg: mcall 40, EVM_MOUSE + EVM_MOUSE_FILTER + EVM_REDRAW + EVM_BUTTON + EVM_KEY + EVM_STACK @@ -28,25 +26,51 @@ ipcfg: @@: ; Read ip/subnet/gateway type - mov [option_ip], op_ip_static + mov [option_ip], op_ip_disabled invoke ini.get_str, net_ini, str_ini_int, str_ini_ip_type, ini_buf, 16, sz_0 -; test eax, eax -; jz .disabled + test eax, eax + jnz .ip_type_loaded mov eax, dword[ini_buf] or eax, 0x20202020 - cmp eax, 'stat' - je @f + cmp eax, 'auto' + jne @f +; cmp byte[ini_buf+4], 0 +; jne @f mov [option_ip], op_ip_auto + jmp .ip_type_loaded @@: + cmp eax, 'dhcp' + jne @f +; cmp byte[ini_buf+4], 0 +; jne @f + mov [option_ip], op_ip_auto + jmp .ip_type_loaded + @@: + cmp eax, 'stat' + jne @f +; mov eax, dword[ini_buf+3] +; or eax, 0x202020 +; cmp eax, 'tic' +; jne @f + mov [option_ip], op_ip_static +; jmp .ip_type_loaded + @@: + .ip_type_loaded: ; Read DNS type - mov [option_dns], op_dns_static + mov [option_dns], op_dns_auto invoke ini.get_str, net_ini, str_ini_int, str_ini_dns_type, ini_buf, 16, sz_0 + test eax, eax + jnz @f mov eax, dword[ini_buf] or eax, 0x20202020 cmp eax, 'stat' - je @f - mov [option_dns], op_dns_auto + jne @f +; mov eax, dword[ini_buf+3] +; or eax, 0x202020 +; cmp eax, 'tic' +; jne @f + mov [option_dns], op_dns_static @@: ; Read all IP addresses @@ -82,22 +106,22 @@ ipcfg: mov ecx, 0x80000000 or ecx, [sc.work_text] -; mov ebx, 47 shl 16 + 10 +; mov ebx, 47 shl 16 + 25 ; mov edx, str_mode ; mcall - mov ebx, 59 shl 16 + 35 + mov ebx, 59 shl 16 + 50 mov edx, sz_ip mcall 4 - mov ebx, 5 shl 16 + 55 + mov ebx, 5 shl 16 + 70 mov edx, sz_subnet mcall - mov ebx, 29 shl 16 + 75 + mov ebx, 29 shl 16 + 90 mov edx, sz_gateway mcall -; mov ebx, 47 shl 16 + 80 +; mov ebx, 47 shl 16 + 95 ; mov edx, str_mode ; mcall - mov ebx, 53 shl 16 + 120 + mov ebx, 53 shl 16 + 135 mov edx, sz_dns mcall @@ -109,11 +133,11 @@ ipcfg: invoke option_box_draw, Option_boxs1 invoke option_box_draw, Option_boxs2 - mcall 8, 80 shl 16 + 100, 150 shl 16 + 16, 2, [sc.work_button] + mcall 8, 80 shl 16 + 100, 155 shl 16 + 16, 2, [sc.work_button] mov ecx, 0x80000000 or ecx, [sc.work_button_text] - mov ebx, 112 shl 16 + 155 + mov ebx, 112 shl 16 + 160 mov edx, sz_apply mcall 4 @@ -215,18 +239,26 @@ ipcfg: call create_str_ini_int cmp [option_ip], op_ip_auto - jne .ip_static - invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_dhcp, 4 - jmp @f - .ip_static: - invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_static2, 6 + jne @f + invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_auto, 4 + jmp .ip_type_ok @@: + cmp [option_ip], op_ip_static + jne @f + invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_static, 6 + jmp .ip_type_ok + @@: +; cmp [option_ip], op_ip_disabled +; jne @f + invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_disabled, 8 +; @@: + .ip_type_ok: cmp [option_dns], op_dns_auto - invoke ini.set_str, net_ini, str_ini_int, str_ini_dns_type, sz_dhcp, 4 + invoke ini.set_str, net_ini, str_ini_int, str_ini_dns_type, sz_auto, 4 jmp @f .dns_static: - invoke ini.set_str, net_ini, str_ini_int, str_ini_dns_type, sz_static2, 6 + invoke ini.set_str, net_ini, str_ini_int, str_ini_dns_type, sz_static, 6 @@: invoke ini.set_str, net_ini, str_ini_int, str_ini_ip, str_edit_ip, [edit_ip.size] @@ -278,10 +310,12 @@ toggle_editboxes: mov [edit_gateway.color], 0xcacaca @@: - mov [edit_dns.color], 0xffffff - cmp [option_dns], op_dns_static - je @f mov [edit_dns.color], 0xcacaca + cmp [option_ip], op_ip_disabled + je @f + cmp [option_dns], op_dns_static + jne @f + mov [edit_dns.color], 0xffffff @@: ret @@ -350,21 +384,22 @@ create_str_ini_int: ;------------------------- ; DATA -edit_ip edit_box 100, 80, 30, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_ip, mouse_dd, 0, 0, 1 -edit_subnet edit_box 100, 80, 50, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_subnet, mouse_dd, 0, 0, 1 -edit_gateway edit_box 100, 80, 70, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_gateway, mouse_dd, 0, 0, 1 +edit_ip edit_box 100, 80, 45, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_ip, mouse_dd, 0, 0, 1 +edit_subnet edit_box 100, 80, 65, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_subnet, mouse_dd, 0, 0, 1 +edit_gateway edit_box 100, 80, 85, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_gateway, mouse_dd, 0, 0, 1 -edit_dns edit_box 100, 80, 115, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_dns, mouse_dd, 0, 0, 1 +edit_dns edit_box 100, 80, 130, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_dns, mouse_dd, 0, 0, 1 -op_ip_auto option_box option_ip, 15, 10, 6, 12, 0xffffff, 0, 0, sz_auto, 5 -op_ip_static option_box option_ip, 80, 10, 6, 12, 0xffffff, 0, 0, sz_static, 7 +op_ip_disabled option_box option_ip, 15, 5, 6, 12, 0xffffff, 0, 0, sz_disabled, 9 +op_ip_auto option_box option_ip, 15, 25, 6, 12, 0xffffff, 0, 0, sz_auto, 5 +op_ip_static option_box option_ip, 80, 25, 6, 12, 0xffffff, 0, 0, sz_static, 7 -op_dns_auto option_box option_dns, 15, 95, 6, 12, 0xffffff, 0, 0, sz_auto, 5 -op_dns_static option_box option_dns, 80, 95, 6, 12, 0xffffff, 0, 0, sz_static, 7 +op_dns_auto option_box option_dns, 15, 110, 6, 12, 0xffffff, 0, 0, sz_auto, 5 +op_dns_static option_box option_dns, 80, 110, 6, 12, 0xffffff, 0, 0, sz_static, 7 option_ip dd op_ip_auto option_dns dd op_dns_auto -Option_boxs1 dd op_ip_auto, op_ip_static, 0 +Option_boxs1 dd op_ip_disabled, op_ip_auto, op_ip_static, 0 Option_boxs2 dd op_dns_auto, op_dns_static, 0 net_ini db '/sys/settings/network.ini', 0 @@ -374,21 +409,19 @@ str_ini_int db 'ip1', 0 str_ini_ip db 'ip', 0 str_ini_subnet db 'subnet', 0 str_ini_gateway db 'gateway', 0 -str_ini_dns db 'dns1', 0 +str_ini_dns db 'dns', 0 str_ini_ip_type db 'ip_type', 0 str_ini_dns_type db 'dns_type', 0 -sz_0 db 0 -sz_dhcp db 'dhcp', 0 -sz_static2 db 'static', 0 - str_title db 'IP settings', 0 +sz_0 db 0 sz_ip db 'IP:', 0 sz_subnet db 'Subnet mask:', 0 sz_gateway db 'Gateway:', 0 sz_dns db 'DNS:', 0 sz_auto db 'Auto', 0 sz_static db 'Static', 0 +sz_disabled db 'Disabled', 0 sz_apply db 'Apply', 0 str_edit_ip rb 16 diff --git a/programs/network/zeroconf/zeroconf.asm b/programs/network/zeroconf/zeroconf.asm index 9a626ab5dd..92fe31ec09 100644 --- a/programs/network/zeroconf/zeroconf.asm +++ b/programs/network/zeroconf/zeroconf.asm @@ -86,7 +86,7 @@ ends struct interface number dd ? state dd ? ; 0 - disconnected, 1 - connected - mode dd ? ; 0 - static, 1 - dhcp, 2 - auto (zero config) + mode dd ? ; 0 - disabled, 1 - static, 2 - dhcp, 3 - auto (zero config) tries dd ? lease dd ? ServerIP dd ? @@ -175,22 +175,25 @@ mainloop: invoke ini.get_str, ini_path, str_ini_int, str_ip_type, inibuf, 16, str_null test eax, eax - jnz .fail + jnz .invalid mov eax, dword[inibuf] or eax, 0x20202020 mov [ebp + interface.mode], 0 + cmp eax, 'disa' + je .next + mov [ebp + interface.mode], 1 cmp eax, 'stat' je static - mov [ebp + interface.mode], 1 + mov [ebp + interface.mode], 2 cmp eax, 'dhcp' je dhcp - mov [ebp + interface.mode], 2 + mov [ebp + interface.mode], 3 cmp eax, 'auto' je dhcp - .fail: - DEBUGF 2, "Invalid network.ini settings\n" - mcall -1 ; Give up + .invalid: + DEBUGF 2, "Invalid settings for interface: %s.\n", str_ini_int + jmp .next .maintain_link: @@ -593,7 +596,7 @@ dhcp_fail: dhcp_error: DEBUGF 1, "DHCP failed\n" - cmp [ebp + interface.mode], 2 ; zero config mode? + cmp [ebp + interface.mode], 3 ; zero config mode? jne link_up link_local: