[LiSA-Devel] Intrebari

Nicu Ioan Petru-B06965 ionut.nicu at freescale.com
Mon Apr 13 15:09:38 EEST 2009


Salut, 

> -----Original Message-----
> From: Andrei Faur [mailto:da3drus at gmail.com] 
> Sent: Monday, April 13, 2009 2:24 PM
> To: Nicu Ioan Petru-B06965
> Cc: lisa-devel at lisa.ines.ro
> Subject: RE: [LiSA-Devel] Intrebari
> 
> Ok, atunci inseamna ca eu din userspace o sa imi creez intreg 
> frameul de la 0 so to speak. Asta inseamna ca trebuie sa 
> completez toate campurile unui Ethernet Snap Frame, pentru ca 
> in final in campul Data sa pun efectiv ce ma intereseaza pe 
> mine (partea de STP)? Exista undeva in codul sursa o 
> structura deja definita pentru un frame?
> 

Right ...

Pana acum nu am folosit switch socketii decat pentru CDP (vezi cdpd) iar
partea de generare de frame-uri CDP se gaseste in implementarea
cdpd-ului (userspace/cdpd).
Ceea ce vrei tu e _aproximativ_ cam ce se face in functia cdp_frame_init
din cdp_send.c

Daca gasesti o parte de cod pe care l-ai putea reutiliza de acolo pentru
generarea de frame-uri
STP putem sa-l punem undeva in userspace/lib.

> Ce rol are atunci linia urmatoare de cod din test_sock:
> addr.ssw_proto = ETH_P_CDP,
> daca eu oricum imi fac frameul de mana?
> 

struct sockaddr_sw care are si ssw_proto se trimite ca parametru la
bind. Daca te uiti in implementarea
bind-ului din switch socket (in codul din kernel space) o sa vezi ca in
functie de ssw_proto socket-ul
se leaga pe o anumita lista inlantuita per port.

Asta are mare importanta la partea de filtrare de pe Rx (vezi
sw_socket_filter) unde skb-urile sunt
trimse in socketii din lista corespunzatoare.


> 
> Am inteles. Hookul il introduc asemanator cu cele de VTP si 
> CDP, adica doar un simplu branch in caseul respectiv?
> 

Probabil trebuie sa mai adaugi o lista in struct net_switch_port si sa
modifici corespunzator bind-ul
si codul de "clasificare" si enqueue-ing din sw_socket_filter().

Ionut.


More information about the LiSA-Devel mailing list