Dokumentacja przestrzeni nazw Net
[Networking]


Komponenty

struct  netbuf
struct  ethernet_address
struct  ip_address
struct  netmask_t
struct  outbound_packet
struct  netif
struct  packet_t

Przestrzenie nazw

namespace  Arp
namespace  ICMP
namespace  IP
namespace  TCP

Funkcje

uint16 htons (uint16 hostshort)
uint16 ntohs (uint16 netshort)
uint32 htonl (uint32 hostlong)
uint32 ntohl (uint32 netlong)
void init ()
 proste operacje na sieci porozumiewa sie z pci32 by znalezc karte sieciowa 3c556
int init_3c556 ()
struct netbufnetbuf_alloc (uint32 datasize)
void netbuf_free (struct netbuf *nb)
void netbuf_push_front (struct netbuf *chain, struct netbuf *nb)
void netbuf_push_back (struct netbuf *chain, struct netbuf *nb)
struct netbufonFramesReceived (struct netif *nif)
 uzywana przez irq handler karty sieciowej; przenosi bufor na ramke do listy otrzymanych ramek i tworzy nomwy pusty
void onFramesTransmitted (struct netif *nif)
int eth_poll (struct netbuf **nb)
void eth_transmit (struct netif *nif, struct ethernet_address eth_addr, unsigned int t, struct netbuf *nb)
 exported function that transmits a packet.
void ip_transmit (struct ip_address addr, struct netbuf *nb)
void ip_onNewArpEntry (struct ethernet_address eth_addr, struct ip_address ip_addr)
uint16 count_checksum16 (uint16 *data, uint32 len)
void EthernetFrameReceptionThread ()
 ten watek zbiera ramki ethernetowe od karty sieciowej e3c556
void EthernetFrameDemultiplexingThread ()
struct packet_tpbuf_alloc (uint32 capacity)
void pbuf_free (struct packet_t *&p)

Zmienne

struct Net::ethernet_address packed
struct stack_t frame_stack
struct Collection::List
< struct netif
netif_list
class IPC::Lock::lock_t frame_stack_lock
struct Memory::Heap::heapbox pbuf_heapbox


Opis szczegółowy


Dokumentacja funkcji

uint16 Net::count_checksum16 ( uint16 data,
uint32  len 
)

len : ile uint8 sie miesci

Definicja w linii 542 pliku net.cpp.

Odwołuje się do prin i println.

Odwołania w Net::ICMP::count_checksum16_icmph(), Net::IP::count_checksum_iph() i Net::IP::ip_transmit().

int Net::eth_poll ( struct netbuf **  nb  ) 

Zwraca:
1 jesli udalo sie zdjac wczesniej otrzymana z sieci ramke ethernetowa, 0 jesli nie
Side Effects:
(*packet) wskazuje na dane ramki ethernetowej, *packetlen rowne jest dlugosci ramki

Definicja w linii 438 pliku net.cpp.

Odwołuje się do frame_stack, frame_stack_lock, stack_t::lgth(), IPC::Lock::lock_t::lock2(), stack_t::pop() i IPC::Lock::lock_t::ulock().

Odwołania w EthernetFrameDemultiplexingThread().

void Net::eth_transmit ( struct netif *  nif,
struct ethernet_address  eth_addr,
unsigned int  t,
struct netbuf *  nb 
)

exported function that transmits a packet.

Zwraca:
Does not return any particular status.
Parametry:
t protocol type (ARP, IP, etc);
p the pointer to the packet data itself.

Błąd:
tu musimy sprawdzac, czy nb jest ciaglym buforem ****

Błąd:
nie mozemy zmieniac nb->len jesli nie wiemy co siedzi za nb->data bo mozemy wyslac tajne dane

Definicja w linii 488 pliku net.cpp.

Odwołuje się do Net::ethernet_address::d, Net::netbuf::data, DUMP_OUTBOUND_ETHERNET_FRAMES_BYTES, Thread::i, kprintf(), Net::netbuf::len, IPC::Lock::lock_t::lock(), MAX, MIN, Net::netif::outbound, Net::netif::outbound_lock, Net::netif::transmit i IPC::Lock::lock_t::ulock().

Odwołania w Net::Arp::arp_transmit(), Net::Arp::arp_transmit_request(), Net::IP::ip_onNewArpEntry() i Net::IP::ip_transmit().

void Net::EthernetFrameDemultiplexingThread (  ) 

void Net::EthernetFrameReceptionThread (  ) 

ten watek zbiera ramki ethernetowe od karty sieciowej e3c556

Warunek wstępny:
karta sieciowa e3c556 zostala zainicjalizowana
Nota:
inferior solution, miec przerwanie ktore sprawdza czy ramki nie doszly. niestety przy testach zdawalo sie, ze wywolanie e3c556_poll() ktore ma na celu przekazac bufor na ramke karcie sieciowej kiedy zadnego pakietu karta sieciowa zbuforowanego nie ma, nie skutkuje wpisania tam pakietu ktory nadejdzie chwile pozniej.

Definicja w linii 133 pliku net.cpp.

Odwołuje się do current_thread, e3c556_poll(), frame_stack, frame_stack_lock, Thread::i, kmalloc, kprintf(), IPC::Lock::lock_t::lock2(), stack_t::push(), Thread::sleep(), Thread::ThreadKill() i IPC::Lock::lock_t::ulock().

uint32 Net::htonl ( uint32  hostlong  ) 

Definicja w linii 119 pliku net.cpp.

Odwołania w Net::ip_address::ip_address().

uint16 Net::htons ( uint16  hostshort  )  [inline]

void Net::init (  ) 

proste operacje na sieci porozumiewa sie z pci32 by znalezc karte sieciowa 3c556

ustawienie timera ktory seeduje linear congruential generator DEF_SECOND/32 na sekunde i czeka na pierwsze seedowanie. w momencie gdy rtc timer pracuje, malo mozliwe jest by parzystosc rdtsc() zmieniala sie miedzy wywolaniami rdtsc_runner() w przewidywalny sposob

Definicja w linii 38 pliku cpuid.cpp.

Odwołuje się do _Pf, Thread::ABCThread(), Arch::x86::RTC::ack_rtc(), Arch::x86::RTC::add_proc(), Mboot::mboot_sht::addr, align_up(), Memory::zone::alloc(), alloc4k(), Memory::Heap::allocate_heapbox(), Memory::Pager::allocate_memtree(), Net::Arp::arp_cache, Net::Arp::arp_heapbox, Memory::Physical::ballocate(), Arch::x86::check_cpuid(), Arch::x86::GDT::code_sel_kernel, Arch::x86::GDT::code_sel_user, Collection::collection_heapbox, complain, Syms::core_syms, Syms::core_syms_str, cout(), Arch::x86::cpu_flags, Arch::x86::CPU_SEP, Arch::x86::cpu_signature, Arch::x86::CPU_TCS, Arch::x86::cpu_vendor_name, Arch::x86::cpuid(), Arch::x86::cpuid_success, Memory::Pager::memtree::cr3, create_ehdr(), Thread::process_t::create_thread(), CRT_STACK, Arch::x86::GDT::data_sel_kernel, Arch::x86::GDT::data_sel_user, Arch::x86::Interr::DEF_INTERRUPT_COUNT, DEF_RTC_IRQ, Memory::Physical::disable_balloc(), elf_t::done(), Arch::x86::Interr::double_fault(), Elf32_ehdr::e_shnum, elf_t::ehdr, Arch::x86::RTC::enable_rtc(), Mboot::mboot_sht::entry_size, ESUCCESS, ET_EXEC, FAC_IDT, FAC_INTERR, FAC_SYMS, FAC_SYMTAB, FAC_THREAD, FAC_THRLIST, FAC_THRSLEEP, Memory::Physical::first_free_page, Memory::Physical::free_pages_high, Memory::Physical::free_pages_low, Memory::Physical::get_high_memory_size(), Memory::Physical::get_memory_size(), Thread::heap, Thread::process_t::heap, Memory::Heap::heap0, Memory::Physical::heap_area_addend, Memory::Heap::HEAP_STACK_GRAN, Memory::Heap::HeapList, Thread::i, Thread::IdleThread(), Thread::IdleThreadHandle, Arch::x86::Interr::idt_service::idt, Arch::x86::Interr::idt_service::idtr, elf_t::image, Thread::process_t::init(), elf_t::init(), mmap_t::init(), Memory::Pager::memtree::init(), blist_t::init(), Memory::zone::init(), Arch::x86::GDT::gdt_t::init(), Arch::x86::Interr::init_int_chains(), Arch::x86::Interr::init_pic(), Thread::process_t::InitKeepHeap(), string::inval(), Net::IP::ip_outbound, Net::IP::ip_outbound_cmp(), Arch::x86::GDT::kernel_gdt, Arch::x86::Interr::kernel_idt, Arch::x86::Interr::kernel_pic, Thread::kernel_process, Arch::x86::GDT::kernel_tss, Arch::x86::GDT::kernel_tss_df, Arch::x86::GDT::kernel_tss_sf, kmalloc, Memory::Pager::kmem, Arch::x86::Interr::idt_service::lidt(), LMA2VIRT, Thread::lock_queues, Thread::Scheduler::lock_scheduler, Thread::m3, Memory::Heap::heapbox::malloc(), MAX, Mboot::mboot_syms(), mem_exec, mem_heap_end, mem_heap_start, mem_kernel_start, mem_ksize, mem_low_end, mem_low_start, mem_physical, mem_space_krnend, mem_space_start, mem_user_end, memmove(), Memory::Pager::memmove2(), Memory::Pager::memtree::memory_map, memset(), Thread::MemsetThread(), Thread::MemsetThreadHandle, Mboot::mod_info::mod_end, Mboot::mod_info::mod_start, Mboot::mods_count(), Mboot::mods_info(), NO_ALIGN, NULL, Mboot::mboot_sht::num, PAGE_ALIGN, PAGE_SIZE, Memory::Physical::PAGESCLEANMAX, Preturn, preturn, Thread::prior_thread(), PRNG::prng_seeded, Thread::proc3, Thread::Processes, Thread::ProcessRegister(), Memory::Pager::memtree::pte_map(), PTE_PRESENT, PTE_STACKGUARD, PTE_USER, Memory::Pager::memtree::pte_val(), PTE_WRITEABLE, qsort(), PRNG::rdtsc_runner(), Arch::x86::RTC::rtc_funcs, Arch::x86::RTC::rtc_handler(), Arch::x86::RTC::rtc_id, Arch::x86::RTC::rtc_lock, elf_t::sect_addr(), elf_t::section(), string::set(), elf_t::set_ehdr(), Memory::zone::set_length(), Elf32_shdr::sh_addr, Elf32_shdr::sh_entsize, Elf32_shdr::sh_offset, Elf32_shdr::sh_size, Elf32_shdr::sh_type, Mboot::mboot_sht::shndx, SHT_NOBITS, SHT_PROGBITS, SHT_SYMTAB, Arch::x86::Interr::stack_fault(), Thread::thread_t::state, string::strcmp(), Syms::syms_count, Syms::syms_size, Syms::symscompar(), Arch::x86::SYSENTER_CS_MSR, Arch::x86::SYSENTER_EIP_MSR, Arch::x86::SYSENTER_ESP_MSR, Arch::x86::Sysenter::SysenterTempBuf, Arch::x86::Sysenter::sysentry(), Arch::x86::Sysenter::SYSENTTEMPBUF, sysfail, Arch::x86::GDT::temp_tss_stack, Thread::TH_IDLE, Thread::THREAD_QUEUES, Thread::threads_dead, Thread::threads_queue, Thread::threads_sleep, Arch::x86::GDT::tss_sel_kernel, Arch::x86::GDT::tss_sel_kernel_df, Arch::x86::GDT::tss_sel_kernel_sf, IPC::Lock::lock_t::ulock(), Arch::x86::RTC::up_time, Memory::Pager::virtual_frame, Memory::Heap::virtual_pages, Thread::thread_t::work_time, Arch::x86::wrmsr(), PRNG::x, Memory::Physical::zero_pages_high, Memory::Physical::zero_pages_low, Memory::Physical::ZeroVirtFrame i Thread::ZombieSlayerThread().

Odwołania w main().

int Net::init_3c556 (  ) 

void Net::ip_onNewArpEntry ( struct ethernet_address  eth_addr,
struct ip_address  ip_addr 
)

void Net::ip_transmit ( struct ip_address  addr,
struct netbuf *  nb 
)

struct netbuf * Net::netbuf_alloc ( uint32  datasize  )  [read]

void Net::netbuf_free ( struct netbuf *  nb  ) 

void Net::netbuf_push_back ( struct netbuf *  chain,
struct netbuf *  nb 
)

void Net::netbuf_push_front ( struct netbuf *  chain,
struct netbuf *  nb 
)

uint32 Net::ntohl ( uint32  netlong  ) 

Definicja w linii 123 pliku net.cpp.

uint16 Net::ntohs ( uint16  netshort  )  [inline]

Definicja w linii 115 pliku net.cpp.

Odwołania w Net::IP::onIpReception(), print() i Net::ICMP::processDatagram().

struct netbuf * Net::onFramesReceived ( struct netif *  nif  )  [read]

uzywana przez irq handler karty sieciowej; przenosi bufor na ramke do listy otrzymanych ramek i tworzy nomwy pusty

Nota:
zaklada, ze tylko 1 bufor jest w obiegu
Zwraca:
wskaznik do jednego bufora, ktory irq handler poda karcie sieciowej (gdyby wiecej buforow mialo byc na raz to nalezalo by zwracac wiecej danych)

Definicja w linii 404 pliku net.cpp.

Odwołuje się do Net::netbuf::data, DUMP_INBOUND_ETHERNET_FRAMES_BYTES, eth_dbg_write, frame_stack, frame_stack_lock, Thread::i, kmalloc, kprintf(), Net::netbuf::len, IPC::Lock::lock_t::lock2(), MIN, netbuf_alloc(), Net::netif::netbuf_curr, Net::netbuf::nif, stack_t::push() i IPC::Lock::lock_t::ulock().

Odwołania w e3c556_irq().

void Net::onFramesTransmitted ( struct netif *  nif  ) 

struct packet_t * Net::pbuf_alloc ( uint32  capacity  )  [read]

Zwraca:
capacity 1500, dt = 0, len=0 alokuja na wlasnej stercie

Definicja w linii 280 pliku net.cpp.

Odwołuje się do Net::packet_t::buf, Net::packet_t::capacity, Net::packet_t::end, Memory::Heap::heapbox::malloc(), null, Net::packet_t::off i pbuf_heapbox.

Odwołania w Net::ICMP::processDatagram().

void Net::pbuf_free ( struct packet_t *&  p  ) 

Definicja w linii 291 pliku net.cpp.

Odwołuje się do Net::packet_t::buf, Memory::Heap::heapbox::free(), null, pbuf_heapbox i testif.


Dokumentacja zmiennych

Definicja w linii 106 pliku net.cpp.

Odwołania w eth_poll(), EthernetFrameReceptionThread() i onFramesReceived().

Definicja w linii 110 pliku net.cpp.

Odwołania w eth_poll(), EthernetFrameReceptionThread() i onFramesReceived().

Definicja w linii 108 pliku net.cpp.

Odwołania w init_3c556().

Definicja w linii 259 pliku net.cpp.

Odwołania w pbuf_alloc() i pbuf_free().


Wygenerowano Sat Jul 19 02:21:28 2008 dla panaLiX programem  doxygen 1.5.6