[so2] [Tema 5] Pasi pentru sendmsg

Vlad Dogaru ddvlad at herebedragons.ro
Tue May 14 13:41:24 EEST 2013


On Tue, May 14, 2013 at 12:51:54PM +0300, Dan Filimon wrote:
> 2013/5/14 Vlad Dogaru <ddvlad at herebedragons.ro>
> 
> > On Tue, May 14, 2013 at 12:05:39PM +0300, Dan Filimon wrote:
> > > > > 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().
> > > >
> > > > Poți folosi secvența reserve + reset_network_header din af_packet.
> > >
> > >
> > > 1. reset_network_header() face ca offset-ul pentru network_header să fie
> > > data - head. Dar, dacă fac asta practic network_header va arăta la
> > > începutul pachetului, unde e header-ul STP.
> >
> > Da, dar înainte de reset_network_header() faci reserve(), care are grijă
> > să păstreze spațiu "înaintea" headerului STP.  Acest spațiu va fi
> > folosit de dev_hard_header, care apelează eth_header, care face skb_push
> > ca primă acțiune.
> >
> 
> Hmm, deci atunci pachetul pe care-l aloc are dimensiune len +
> sizeof(stp_hdr) + sizeof(ethernet header)?

Da.

> Sau, mai degrabă zis, headerul STP există deja în mesajul pe care-l trimit
> sau eu îl construiesc?

Headerul STP trebuie să îl construiești tu.

Dar înainte de a îl construi trebuie să rezervi spațiu pentru headerul
Ethernet.  Acesta din urmă e construit pentru tine, când apelezi
dev_hard_header.

> Iar reserve() e de fapt, skb_reserve(skb, hlen), unde hlen e lungimea
> headerului pe care vreau să o rezerv, right?

Da.  Adică lungimea headerului Ethernet.

> În plus, când apelez dev_hard_header(), tipul pe care-l trimit ca al 3-lea
> argument ar trebui să fie ETH_P_STP? Sau, ca aici [1], ETH_P_IP?

STP.  There is no IP in this homework.  Parametrul ăla e câmpul
Ethertype din figura de la [1].

[1] http://en.wikipedia.org/wiki/Ethernet_header#Structure

Vlad.


More information about the so2 mailing list