[pso] for_each_netdev

Octavian Voicu octavian.voicu at gmail.com
Thu Jun 25 00:55:41 EEST 2009


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090625/4b0e380f/attachment-0001.htm>


More information about the pso mailing list