[so2] [Tema 5] Pasi pentru sendmsg
Vlad Dogaru
ddvlad at herebedragons.ro
Tue May 14 15:33:16 EEST 2013
On Tue, May 14, 2013 at 03:12:17PM +0300, Dan Filimon wrote:
> 2013/5/14 Vlad Dogaru <ddvlad at herebedragons.ro>
>
> > On Tue, May 14, 2013 at 01:45:21PM +0300, Dan Filimon wrote:
> > > Un ultim lucru, dimensiunea header-ului Ethernet o pun 14 octeți și ignor
> > > strategic trailer-ul?
> > > Sau, fac ca în af_packet și iau headerul cu LL_RESERVED_SPACE și
> > trailerul
> > > cu dev->needed_tailroom.
> >
> > Varianta a doua sună mai bine. Tailroom-ul oricum nu e nevoie să îl iei
> > în calcul decât la alocarea skb-ului.
> >
>
> Am făcut așa și observ că LL_RESERVED_SPACE întoarce 16 octeți dar după ce
> scriu efectiv offset-ul întors de dev_hard_header e 14 octeți.
> N-ar fi asta o tragedie, dar acum, deși testul îmi trece, aș vrea să afișez
> mesajul copiat. Am făcut:
> printk(KERN_ALERT "%s\n", skb->data + ehlen + shlen);
>
> Unde ehlen e lungimea headerului Ethernet (14 octeți) și shlen e lungimea
> header-ului STP (8 octeți). Dar, asta-mi afișează garbage.
Cu riscul de a fi Captain Obvious: poate se trimit octeți random, și nu
text? Sau ai greșit offsetul și apare întâi vreo bucată de header?
> Doar nu poate fi o chestie de endianness, fiindcă ăștia sunt octeți.
Corect, din ce îmi dau eu seama.
Pentru printat buffere (și headere) eu folosesc funcțiile print_hex_dump
și print_hex_dump_bytes. Acesta din urmă e fratele mai politicos, cu
mai puțini parametri).
Vlad
More information about the so2
mailing list