Subversion Repositories Kolibri OS

Rev

Rev 3556 | Rev 3601 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3556 Rev 3600
Line 56... Line 56...
56
 
56
 
57
 
57
 
Line 58... Line 58...
58
align 4
58
align 4
59
uglobal
59
uglobal
60
 
60
 
61
        IP_LIST         rd MAX_NET_DEVICES
61
        IP_LIST                 rd NET_DEVICES_MAX
62
        SUBNET_LIST     rd MAX_NET_DEVICES
62
        SUBNET_LIST             rd NET_DEVICES_MAX
63
        DNS_LIST        rd MAX_NET_DEVICES
63
        DNS_LIST                rd NET_DEVICES_MAX
64
        GATEWAY_LIST    rd MAX_NET_DEVICES
64
        GATEWAY_LIST            rd NET_DEVICES_MAX
65
        BROADCAST_LIST  rd MAX_NET_DEVICES
65
        BROADCAST_LIST          rd NET_DEVICES_MAX
66
 
66
 
Line 67... Line 67...
67
        IP_packets_tx   rd MAX_NET_DEVICES
67
        IP_packets_tx           rd NET_DEVICES_MAX
68
        IP_packets_rx   rd MAX_NET_DEVICES
68
        IP_packets_rx           rd NET_DEVICES_MAX
Line 81... Line 81...
81
;-----------------------------------------------------------------
81
;-----------------------------------------------------------------
82
macro   IPv4_init {
82
macro   IPv4_init {
Line 83... Line 83...
83
 
83
 
84
        xor     eax, eax
84
        xor     eax, eax
85
        mov     edi, IP_LIST
85
        mov     edi, IP_LIST
86
        mov     ecx, 7*MAX_NET_DEVICES + (sizeof.FRAGMENT_slot*MAX_FRAGMENTS)/4
86
        mov     ecx, 7*NET_DEVICES_MAX + (sizeof.FRAGMENT_slot*MAX_FRAGMENTS)/4
Line 87... Line 87...
87
        rep     stosd
87
        rep     stosd
Line 590... Line 590...
590
        mov     ebx, [NET_DRV_LIST + edi]
590
        mov     ebx, [NET_DRV_LIST + edi]
591
        lea     eax, [ebx + ETH_DEVICE.mac]
591
        lea     eax, [ebx + ETH_DEVICE.mac]
592
        mov     edx, esp
592
        mov     edx, esp
593
        mov     ecx, [esp + 10 + 6]
593
        mov     ecx, [esp + 10 + 6]
594
        add     ecx, sizeof.IPv4_header
594
        add     ecx, sizeof.IPv4_header
595
        mov     di, ETHER_IPv4
595
        mov     di, ETHER_PROTO_IPv4
596
        call    ETH_output
596
        call    ETH_output
597
        jz      .eth_error
597
        jz      .eth_error
598
        add     esp, 6                  ; pop the mac out of the stack
598
        add     esp, 6                  ; pop the mac out of the stack
Line 599... Line 599...
599
 
599
 
Line 635... Line 635...
635
        ret
635
        ret
Line 636... Line 636...
636
 
636
 
637
  .loopback:
637
  .loopback:
638
        mov     dword [esp + 2], eax
638
        mov     dword [esp + 2], eax
639
        add     ecx, sizeof.IPv4_header
639
        add     ecx, sizeof.IPv4_header
640
        mov     di, ETHER_IPv4
640
        mov     edi, AF_INET4
641
        call    LOOP_output
641
        call    LOOP_output
Line 679... Line 679...
679
        mov     ebx, [NET_DRV_LIST + edi]
679
        mov     ebx, [NET_DRV_LIST + edi]
680
        lea     eax, [ebx + ETH_DEVICE.mac]
680
        lea     eax, [ebx + ETH_DEVICE.mac]
681
        mov     edx, esp
681
        mov     edx, esp
682
        mov     ecx, [esp + 6 + 4]
682
        mov     ecx, [esp + 6 + 4]
683
        add     ecx, sizeof.IPv4_header
683
        add     ecx, sizeof.IPv4_header
684
        mov     di, ETHER_IPv4
684
        mov     di, ETHER_PROTO_IPv4
685
        call    ETH_output
685
        call    ETH_output
686
        jz      .error
686
        jz      .error
Line 687... Line 687...
687
 
687
 
Line 773... Line 773...
773
        DEBUGF  DEBUG_NETWORK_VERBOSE, "Ipv4_fragment: new fragment"
773
        DEBUGF  DEBUG_NETWORK_VERBOSE, "Ipv4_fragment: new fragment"
Line 774... Line 774...
774
 
774
 
775
 
775
 
776
        mov     eax, [esp + 3*4]
776
        mov     eax, [esp + 3*4]
777
        lea     ebx, [esp + 4*4]
777
        lea     ebx, [esp + 4*4]
Line 778... Line 778...
778
        mov     di , ETHER_IPv4
778
        mov     di , ETHER_PROTO_IPv4
779
        call    ETH_output
779
        call    ETH_output
Line 864... Line 864...
864
 
864
 
865
        cmp     eax, 0xffffffff
865
        cmp     eax, 0xffffffff
Line 866... Line 866...
866
        je      .broadcast
866
        je      .broadcast
867
 
867
 
868
        xor     edi, edi
868
        xor     edi, edi
869
        mov     ecx, MAX_NET_DEVICES
869
        mov     ecx, NET_DEVICES_MAX
870
  .loop:
870
  .loop:
871
        mov     ebx, [IP_LIST+edi]
871
        mov     ebx, [IP_LIST+edi]
872
        and     ebx, [SUBNET_LIST+edi]
872
        and     ebx, [SUBNET_LIST+edi]