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] |