Bugfixes for ZeroConf

git-svn-id: svn://kolibrios.org@2859 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
hidnplayr 2012-07-12 13:57:34 +00:00
parent 80ecf0f5ee
commit bd062d9661

View File

@ -262,7 +262,7 @@ buildRequest: ; Creates a DHCP request packet.
mov eax, [dhcpLease] mov eax, [dhcpLease]
mov [edx+240+5], eax mov [edx+240+5], eax
mov [edx+240+9], word 0x0432 ; option requested IP address mov [edx+240+9], word 0x0432 ; option requested IP address
mov eax, [dhcpClientIP] mov eax, [dhcp.ip]
mov [edx+240+11], eax mov [edx+240+11], eax
mov [edx+240+15], word 0x0437 ; option request list mov [edx+240+15], word 0x0437 ; option request list
mov [edx+240+17], dword 0x0f060301 mov [edx+240+17], dword 0x0f060301
@ -333,6 +333,11 @@ request:
cmp [dhcpMsgType], byte 0x05 ; Was the response an ACK? It should be cmp [dhcpMsgType], byte 0x05 ; Was the response an ACK? It should be
jne apipa ; NO - so we do zeroconf jne apipa ; NO - so we do zeroconf
mcall 76, API_IPv4 + 3, [dhcp.ip] ; ip
mcall 76, API_IPv4 + 5, [dhcp.dns] ; dns
mcall 76, API_IPv4 + 7, [dhcp.subnet] ; subnet
mcall 76, API_IPv4 + 9, [dhcp.gateway] ; gateway
jmp exit jmp exit
;*************************************************************************** ;***************************************************************************
@ -352,12 +357,9 @@ parseResponse:
DEBUGF 1,"Data received, parsing response\n" DEBUGF 1,"Data received, parsing response\n"
mov edx, [dhcpMsg] mov edx, [dhcpMsg]
pusha push dword [edx+16]
mcall 76, API_IPv4 + 3, [edx+16] pop [dhcp.ip]
mov eax,[edx]
mov [dhcpClientIP],eax
DEBUGF 1,"Client: %u.%u.%u.%u\n",[edx+16]:1,[edx+17]:1,[edx+18]:1,[edx+19]:1 DEBUGF 1,"Client: %u.%u.%u.%u\n",[edx+16]:1,[edx+17]:1,[edx+18]:1,[edx+19]:1
popa
add edx, 240 ; Point to first option add edx, 240 ; Point to first option
xor ecx, ecx xor ecx, ecx
@ -374,6 +376,9 @@ pr001:
mov al, [edx+2] mov al, [edx+2]
mov [dhcpMsgType], al mov [dhcpMsgType], al
DEBUGF 1,"DHCP Msg type: %u\n", al
add edx, 3 add edx, 3
jmp pr001 ; Get next option jmp pr001 ; Get next option
@ -406,22 +411,18 @@ pr001:
cmp al, dhcp_subnet_mask cmp al, dhcp_subnet_mask
jne @f jne @f
pusha push dword [edx]
mcall 76, API_IPv4 + 7, [edx] pop [dhcp.subnet]
DEBUGF 1,"Subnet: %u.%u.%u.%u\n",[edx]:1,[edx+1]:1,[edx+2]:1,[edx+3]:1 DEBUGF 1,"Subnet: %u.%u.%u.%u\n",[edx]:1,[edx+1]:1,[edx+2]:1,[edx+3]:1
popa
jmp next_option jmp next_option
@@: @@:
cmp al, dhcp_router cmp al, dhcp_router
jne @f jne @f
pusha push dword [edx]
mcall 76, API_IPv4 + 9, [edx] pop [dhcp.gateway]
DEBUGF 1,"Gateway: %u.%u.%u.%u\n",[edx]:1,[edx+1]:1,[edx+2]:1,[edx+3]:1 DEBUGF 1,"Gateway: %u.%u.%u.%u\n",[edx]:1,[edx+1]:1,[edx+2]:1,[edx+3]:1
popa
jmp next_option jmp next_option
@ -429,11 +430,9 @@ pr001:
cmp al, dhcp_domain_server cmp al, dhcp_domain_server
jne next_option jne next_option
pusha push dword [edx]
mcall 76, API_IPv4 + 5, [edx] pop [dhcp.dns]
DEBUGF 1,"DNS: %u.%u.%u.%u\n",[edx]:1,[edx+1]:1,[edx+2]:1,[edx+3]:1 DEBUGF 1,"DNS: %u.%u.%u.%u\n",[edx]:1,[edx+1]:1,[edx+2]:1,[edx+3]:1
popa
jmp next_option jmp next_option
pr_exit: pr_exit:
@ -568,11 +567,17 @@ IM_END:
inibuf rb 16 inibuf rb 16
dhcpClientIP dd ?
dhcpMsgType db ? dhcpMsgType db ?
dhcpLease dd ? dhcpLease dd ?
dhcpServerIP dd ? dhcpServerIP dd ?
dhcp:
.ip dd ?
.subnet dd ?
.dns dd ?
.gateway dd ?
dhcpMsgLen dd ? dhcpMsgLen dd ?
socketNum dd ? socketNum dd ?