This shows you the differences between two versions of the page.
so2:laboratoare:lab10 [2018/05/02 10:21] silvia.pripoae [Noțiuni teoretice] |
so2:laboratoare:lab10 [2019/05/06 10:20] (current) liza_elena.babu [Structura socket] |
||
---|---|---|---|
Line 258: | Line 258: | ||
int (*getname) (struct socket *sock, | int (*getname) (struct socket *sock, | ||
struct sockaddr *addr, | struct sockaddr *addr, | ||
- | int *sockaddr_len, int peer); | + | int peer); |
//... | //... | ||
</code> | </code> | ||
Line 271: | Line 271: | ||
</code> | </code> | ||
- | Se va realiza astfel instanțierea pointerilor de funcții cu apeluri specifice tipului de protocol asociat socket-ului. Apelurile [[https://elixir.bootlin.com/linux/v4.15/source/net/socket.c#L2512|sock_register]] și [https://elixir.bootlin.com/linux/v4.15/source/net/socket.c#L2545|sock_unregister]] sunt folosite pentru completarea vectorului [[https://elixir.bootlin.com/linux/v4.15/source/net/socket.c#L158|net_families]]. | + | Se va realiza astfel instanțierea pointerilor de funcții cu apeluri specifice tipului de protocol asociat socket-ului. Apelurile [[https://elixir.bootlin.com/linux/v4.15/source/net/socket.c#L2512|sock_register]] și [[https://elixir.bootlin.com/linux/v4.15/source/net/socket.c#L2545|sock_unregister]] sunt folosite pentru completarea vectorului [[https://elixir.bootlin.com/linux/v4.15/source/net/socket.c#L158|net_families]]. |
Pentru restul operațiilor cu socketi (în afară de creare, închidere și transmitere/recepție mesaj, prezentate mai sus, în secțiunea [[#Operații asupra structurii socket|Operații asupra structurii socket]]), se vor apela funcțiile date de pointerii din această structură. Spre exemplu, pentru operația ''bind'', care asociază unui socket un port pe mașina locală, vom avea următoarea secvență de cod: | Pentru restul operațiilor cu socketi (în afară de creare, închidere și transmitere/recepție mesaj, prezentate mai sus, în secțiunea [[#Operații asupra structurii socket|Operații asupra structurii socket]]), se vor apela funcțiile date de pointerii din această structură. Spre exemplu, pentru operația ''bind'', care asociază unui socket un port pe mașina locală, vom avea următoarea secvență de cod: | ||
Line 364: | Line 364: | ||
Structura [[https://elixir.bootlin.com/linux/v4.15/source/include/linux/skbuff.h#L585|struct sk_buff]] (//socket buffer//) descrie un pachet de rețea. Câmpurile structurii conțin informații atât despre antetele și conținutul pachetelor cât și protocoalele utilizate, dispozitivul de rețea utilizat, pointeri către celelalte structuri ''struct sk_buff''. O descriere sumară a conținutului structurii este prezentată mai jos: | Structura [[https://elixir.bootlin.com/linux/v4.15/source/include/linux/skbuff.h#L585|struct sk_buff]] (//socket buffer//) descrie un pachet de rețea. Câmpurile structurii conțin informații atât despre antetele și conținutul pachetelor cât și protocoalele utilizate, dispozitivul de rețea utilizat, pointeri către celelalte structuri ''struct sk_buff''. O descriere sumară a conținutului structurii este prezentată mai jos: | ||
<code c> | <code c> | ||
- | struct sk_buff { | ||
struct sk_buff { | struct sk_buff { | ||
union { | union { |