[pso] for_each_netdev
Octavian Voicu
octavian.voicu at gmail.com
Thu Jun 25 00:57:50 EEST 2009
Corectie (my_net_namespace_list e pointer, e gresit cu & la
list_for_each_entry):
static struct list_head *my_net_namespace_list = init_net.list.prev;
#define my_for_each_net(VAR) \
list_for_each_entry(VAR, my_net_namespace_list, list)
2009/6/25 Octavian Voicu <octavian.voicu at gmail.com>
> Presupun ca nu ai nevoie de namespaces si vrei doar interfetele normale. In
> cazul asta iti trebuie ceva de genul:
>
> for_each_netdev(&init_net, d) { ... }
>
> init_net e namespace-ul default (care e primul adaugat in lista de
> namespace-uri).
>
> Avand in vedere ca init_net e primul element din lista circulara cu headul
> net_namespace_list (e adaugat in net_ns_init) si toate elementele sunt
> adaugate la coada listei (vezi copy_net_ns), poti sa obtii pointerul catre
> net_namespace_list si sa-l folosesti asa:
>
> static struct list_head *my_net_namespace_list = init_net.list.prev;
>
> #define my_for_each_net(VAR) \
> list_for_each_entry(VAR, &my_net_namespace_list, list)
>
>
>
> 2009/6/24 Bogdan Tenea <tenea.bogdan at gmail.com>
>
> Da, asta era, init_net :( Vroiam sa gasesc cumva si o legatura intre
>> ifindex si iflink ale net_device si niste valori accesibile din userspace,
>> dar in urma analizei codului din iptables si dupa /proc/net/dev vad ca
>> singura legatura e numele dispozitivului. E cam incomod sa transmit
>> stringuri in kernel, dar mai bine decat sa nu pot sa le identific deloc :)
>> Legat de init_net - desi m-am uitat cam 20 min prin codu ala nu am reusit
>> sa-l vad. Cand ai totu prezentat in laboratoru e ok, dar cand te apuci sa
>> cauti de capu tau gasesti tot felu de chestii prin kernel, te uiti la ele si
>> nu-ti dai seama de nimic din numele variabilei, comentarii n-au si daca
>> cauti pe google gasesti linkuri tot catre bucata de cod la care te uiti.
>> Unde putem sa mergem cand avem o problema de genu asta?
>>
>> 2009/6/14 Octavian Purdila <tavi at cs.pub.ro>
>>
>> On Saturday 13 June 2009 13:29:03 Bogdan Tenea wrote:
>>> > Incerc sa descopar toate placile de retea dintr-un sistem insa am
>>> observat
>>> > ca pentru asta functia for_each_netdev necesita un struct net *
>>> (network
>>> > namespace).
>>> > Exista o functie ce itereaza toate namespaceurile (for_each_net) insa
>>> nu
>>> > vrea sa compileze decat daca la MODULE_LICENSE am trecut GPL (foloseste
>>> > net_namespace_list).
>>> >
>>> > Am vreo solutie mai simpla sa iterez placile de retea ?
>>> >
>>>
>>> Daca vrei sa folosesti namespace-uri atunci trebuie sa iti faci modulul
>>> GPL.
>>>
>>> Daca nu, poti folosi &init_net ca parametru la for_each_netdev.
>>>
>>> tavi
>>>
>>>
>>>
>>> --
>>> This message has been scanned for viruses and
>>> dangerous content by MailScanner, and is
>>> believed to be clean.
>>>
>>> _______________________________________________
>>> pso mailing list
>>> pso at cursuri.cs.pub.ro
>>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>>
>>
>>
>> _______________________________________________
>> pso mailing list
>> pso at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>
>>
>
>
> --
> Octavian Voicu
>
--
Octavian Voicu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090625/e34432b4/attachment.htm>
More information about the pso
mailing list