[so2] [Tema 5] Pasi pentru sendmsg

Dan Filimon dangeorge.filimon at gmail.com
Mon May 13 23:45:09 EEST 2013


Codul din af_packet.c pentru packet_sendmsg e destul de complicat și
presupun că are multe părți care nu sunt necesare.

Din ce am înțeles pașii de făcut sunt:

1. obținerea datelor despre dispozitivul și portul către care trebuie
trimis pachetul (din structura noastră sock dacă există, sau alternativ din
sockaddr_stp)

2. alocarea unui skb pentru pachetul de trimis, cu sock_alloc_send_pskb
care să aibă spațiu rezervat pentru header (apropo, aici modul îl luăm din
msg->msg_flags ca în exemplu sau presupunem o variantă?)
Asta ar fi de dimensiune len + sizeof(struct sockaddr_stp).

3. scrierea headerului și a corpului; aici sunt nelămurit cum anume merge
asta. Aș zice că la început scriem headerul stp_hdr și apoi corpul în
câmpul skb->data... Dar în af_packet sunt tot felul de apeluri
skb_set_network_header() sau skb_reset_mac_header().
Ar trebui să facem ceva cu push/pull ca în curs?
Cred că putem scrie direct la offset-urile corecte headerul și datele...
Deși, mă întreb dacă skb-ul poate fi fragmentat?

4. dev_queue_xmit() ca să fie adăugat în coada de transmisie

Bănuiesc că putem ignora alte lucruri mai complicate.

Mulțumesc! :)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so2/attachments/20130513/8ccc9e25/attachment.html>


More information about the so2 mailing list