This shows you the differences between two versions of the page.
so2:teme:tema4 [2019/05/11 22:43] daniel.baluta |
so2:teme:tema4 [2020/05/03 22:28] (current) constantin.ghioc [Tema 4 - Transport protocol] |
||
---|---|---|---|
Line 4: | Line 4: | ||
====== Tema 4 - Transport protocol ====== | ====== Tema 4 - Transport protocol ====== | ||
- | * Termen de predare: **Miercuri, 22 Mai 2019, ora 23:00 ** | + | * Termen de predare: **Duminică, 17 Mai 2020, ora 23:00 ** |
===== Obiectivele temei ===== | ===== Obiectivele temei ===== | ||
Line 63: | Line 63: | ||
* pentru restul operațiilor vor trebui folosite stub-urile predefinite în kernel (''sock_no_*'') | * pentru restul operațiilor vor trebui folosite stub-urile predefinite în kernel (''sock_no_*'') | ||
+ | <code> | ||
+ | |||
+ | static const struct proto_ops stp_ops = { | ||
+ | .family = PF_STP, | ||
+ | .owner = THIS_MODULE, | ||
+ | .release = stp_release, | ||
+ | .bind = stp_bind, | ||
+ | .connect = stp_connect, | ||
+ | .socketpair = sock_no_socketpair, | ||
+ | .accept = sock_no_accept, | ||
+ | .getname = sock_no_getname, | ||
+ | .poll = datagram_poll, | ||
+ | .ioctl = sock_no_ioctl, | ||
+ | .listen = sock_no_listen, | ||
+ | .shutdown = sock_no_shutdown, | ||
+ | .setsockopt = sock_no_setsockopt, | ||
+ | .getsockopt = sock_no_getsockopt, | ||
+ | .sendmsg = stp_sendmsg, | ||
+ | .recvmsg = stp_recvmsg, | ||
+ | .mmap = sock_no_mmap, | ||
+ | .sendpage = sock_no_sendpage, | ||
+ | }; | ||
+ | |||
+ | </code> | ||
Operațiile pe sockeți folosesc un tip de adrese numit ''sockaddr_stp'', tip definit în [[http://elf.cs.pub.ro/so2/res/teme/stp.h | header-ul temei]]. Pentru operația de //bind// se vor lua în considerare doar portul și indexul interfeței pe care se bind-uiește socketul. Pentru operația de //receive// se vor completa doar câmpurile ''addr'' și ''port'' din structură cu adresa MAC a host-ului care a trimis pachetul și cu portul de pe care a fost trimis. De asemenea, la trimiterea unui pachet, host-ul destinație se va obține din câmpurile ''addr'' și ''port'' ale acestei structuri. | Operațiile pe sockeți folosesc un tip de adrese numit ''sockaddr_stp'', tip definit în [[http://elf.cs.pub.ro/so2/res/teme/stp.h | header-ul temei]]. Pentru operația de //bind// se vor lua în considerare doar portul și indexul interfeței pe care se bind-uiește socketul. Pentru operația de //receive// se vor completa doar câmpurile ''addr'' și ''port'' din structură cu adresa MAC a host-ului care a trimis pachetul și cu portul de pe care a fost trimis. De asemenea, la trimiterea unui pachet, host-ul destinație se va obține din câmpurile ''addr'' și ''port'' ale acestei structuri. | ||