[pso] for_each_netdev

Bogdan Tenea tenea.bogdan at gmail.com
Thu Jun 25 01:34:04 EEST 2009


Am folosit deja for_each_netdev si a mers ok:

    struct net_device *dev;
    for_each_netdev(&init_net, dev){
        printk(KERN_ALERT "Log level %s\n", dev->name);
    }

Jun 23 00:58:32 licenta kernel: [35478.759180] Log level lo
Jun 23 00:58:32 licenta kernel: [35478.759635] Log level eth0
Jun 23 00:58:32 licenta kernel: [35478.759638] Log level eth1
Jun 23 00:58:32 licenta kernel: [35478.759640] Log level eth2

Supararea era ca o sa trebuiasca sa transmit chestii gen "eth0", "lo" prin
ioctluri si ca nu pot sa identific cumva interfetele din userspace printr-un
index. Dar, posibil sa scap si de treaba asta facand activarea promiscuous
din userspace si analizand toate pachetele care ajung in netfilter (ideea
era sa pot sa fac sniffing pe anumite interfete specificate din userspace,
iar in cazul asta voi face sniffing si pe o asa zisa interfata de
management, dar... asta e :) )

2009/6/25 Octavian Voicu <octavian.voicu at gmail.com>

> 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
>
> _______________________________________________
> pso mailing list
> pso at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090625/ee1bac39/attachment.htm>


More information about the pso mailing list