[so2] [Tema 5] stp_packet_type.func nu se apeleaza

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Sun May 15 17:03:51 EEST 2016


Madalina Hristache <madalina.hristache at gmail.com> writes:
> Madalina Hristache <madalina.hristache at gmail.com>:
>> Razvan Deaconescu via so2 <so2 at cursuri.cs.pub.ro>:
>>> Madalina Hristache via so2 <so2 at cursuri.cs.pub.ro> writes:
>>>> Salut,
>>>>
>>>> Am văzut pe listele trecute că trebuie să pui htons(ETH_P_STP) în
>>>> .type ca să se apeleze .func, dar nu merge și nu îmi dau seama ce
>>>> altceva fac prost de nu se apelează. De curiozitate, ETH_P_STP trebuie
>>>> să îl mai folosim și altundeva în cod? Că nu îi văd locul.
>>>
>>> Nu ar trebui să vreo problemă cu apelarea funcției.
>>>
>>> Simpla definiție a structurii stp_packet_type și a inițializării celor
>>> două câmpuri ale ei (.type și .func) ar trebui să fie OK și să apeleze
>>> funcția. Ai apelat dev_add_pack în funcția de inițializare a modulului,
>>> da?
>>>
>>> Vei mai folosi constructul ETH_P_STP în fucția de tipul sendmsg atunci
>>> când construiești pachetul pentru a-l trimite.
>>
>> Da, apelez dev_add_pack în init. Mai lucrez să văd ce are.

Iar funcția de recvmsg ai definit-o în structura de tip proto_ops? Poate
că nu primești pentru că nu trimiți cum trebuie :-) Poate implementarea
recepției este bună dar nu este bună implementarea transmiterii

>> Altă chestie. Nu îmi e prea clar... cât spațiu trebuie dat ca al
>> doilea parametru la skb_reserve (parametrul hlen)?

Cel mai bine folosești macro-ul LL_RESERVED_SPACE, așa cum se întâmplă
și în af_packet.c[1].

> De asemenea, tot în zona aia, de reserve, dev_hard_header, tot apare
> un dev în codul model. Ce e cu el?

Păi este o încapsulare a unei interfețe de rețea. Poți obține folosind
apelul dev_get_by_index așa cum este indicat și în diferite locuri din
af_packet.c.

[1] http://lxr.free-electrons.com/source/net/packet/af_packet.c?v=3.13#L1540

Răzvan


More information about the so2 mailing list