All of lore.kernel.org
 help / color / mirror / Atom feed
* [IMPORTANT] !!! tun ifaces don't visible by nfnetlink library
@ 2010-02-18  6:14 Kuzin Andrey
  2010-02-18 17:07 ` Patrick McHardy
  0 siblings, 1 reply; 4+ messages in thread
From: Kuzin Andrey @ 2010-02-18  6:14 UTC (permalink / raw)
  To: netfilter-devel

Hello! I wrote about this problem later, but no any effect.
Kernel somewhere or nfnetlink library has error.
In kernel 2.6.27.x all forking fine.
In kernel 2.6.30.5 only latest up tun iface was visible.
Now i use kernel 2.6.32.3 and all tun ifaces become invisible. 

root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# gcc iftest.c -lnfnetlink
root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ./a.out
index (1) is lo (RUNNING)
index (2) is eth0 (RUNNING)
index (3) is eth1 (RUNNING)
index (4) is eth2 (RUNNING)
index (5) is eth3 (RUNNING)
index (6) is teql0 (NOT RUNNING)
index (7) is tunl0 (NOT RUNNING)
index (8) is gre0 (NOT RUNNING)
index (9) is eth0.11 (RUNNING)
index (10) is eth0.14 (RUNNING)
index (11) is eth0.15 (RUNNING)
index (12) is eth0.2 (RUNNING)
index (13) is eth0.3 (RUNNING)

iftest output ifaces with index from 0 to 64.

Here is ifaces list by ifconfig
---------------------------------
root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ifconfig | grep Link
eth0      Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
eth1      Link encap:Ethernet  HWaddr 00:22:15:39:a3:34
eth2      Link encap:Ethernet  HWaddr 00:22:15:39:a3:35
eth3      Link encap:Ethernet  HWaddr 00:22:15:39:a3:36
eth0.2    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
eth0.3    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
eth0.5    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
eth0.11   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
eth0.14   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
eth0.15   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
lo        Link encap:Local Loopback
tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
tun2      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

In my program uses NFQUEUE packets from tun1 and tun2 coming
with indexex 14 and 17. But iftest not output any information
about this (and such code in my program).
I don't know another way to get name of iface by his index.

Thanks !


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [IMPORTANT] !!! tun ifaces don't visible by nfnetlink library
  2010-02-18  6:14 [IMPORTANT] !!! tun ifaces don't visible by nfnetlink library Kuzin Andrey
@ 2010-02-18 17:07 ` Patrick McHardy
  2010-02-18 17:21   ` Jan Engelhardt
  0 siblings, 1 reply; 4+ messages in thread
From: Patrick McHardy @ 2010-02-18 17:07 UTC (permalink / raw)
  To: Kuzin Andrey; +Cc: netfilter-devel

Kuzin Andrey wrote:
> Hello! I wrote about this problem later, but no any effect.
> Kernel somewhere or nfnetlink library has error.
> In kernel 2.6.27.x all forking fine.
> In kernel 2.6.30.5 only latest up tun iface was visible.
> Now i use kernel 2.6.32.3 and all tun ifaces become invisible. 
> 
> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# gcc iftest.c -lnfnetlink
> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ./a.out
> index (1) is lo (RUNNING)
> index (2) is eth0 (RUNNING)
> index (3) is eth1 (RUNNING)
> index (4) is eth2 (RUNNING)
> index (5) is eth3 (RUNNING)
> index (6) is teql0 (NOT RUNNING)
> index (7) is tunl0 (NOT RUNNING)
> index (8) is gre0 (NOT RUNNING)
> index (9) is eth0.11 (RUNNING)
> index (10) is eth0.14 (RUNNING)
> index (11) is eth0.15 (RUNNING)
> index (12) is eth0.2 (RUNNING)
> index (13) is eth0.3 (RUNNING)
> 
> iftest output ifaces with index from 0 to 64.
> 
> Here is ifaces list by ifconfig
> ---------------------------------
> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ifconfig | grep Link
> eth0      Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
> eth1      Link encap:Ethernet  HWaddr 00:22:15:39:a3:34
> eth2      Link encap:Ethernet  HWaddr 00:22:15:39:a3:35
> eth3      Link encap:Ethernet  HWaddr 00:22:15:39:a3:36
> eth0.2    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
> eth0.3    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
> eth0.5    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
> eth0.11   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
> eth0.14   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
> eth0.15   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
> lo        Link encap:Local Loopback
> tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
> tun2      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
> 
> In my program uses NFQUEUE packets from tun1 and tun2 coming
> with indexex 14 and 17. But iftest not output any information
> about this (and such code in my program).
> I don't know another way to get name of iface by his index.

I can't reproduce this hear with tap devices. Please try to
figure out whether there are no netlink messages for these
devices or whether userspace ignores them.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [IMPORTANT] !!! tun ifaces don't visible by nfnetlink library
  2010-02-18 17:07 ` Patrick McHardy
@ 2010-02-18 17:21   ` Jan Engelhardt
  2010-02-18 20:00     ` Re[2]: " Kuzin Andrey
  0 siblings, 1 reply; 4+ messages in thread
From: Jan Engelhardt @ 2010-02-18 17:21 UTC (permalink / raw)
  To: Patrick McHardy; +Cc: Kuzin Andrey, netfilter-devel

On Thursday 2010-02-18 18:07, Patrick McHardy wrote:

>Kuzin Andrey wrote:
>> Hello! I wrote about this problem later, but no any effect.
>> Kernel somewhere or nfnetlink library has error.
>> In kernel 2.6.27.x all forking fine.
>> In kernel 2.6.30.5 only latest up tun iface was visible.
>> Now i use kernel 2.6.32.3 and all tun ifaces become invisible. 
>> 
>> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# gcc iftest.c -lnfnetlink
>> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ./a.out
>> index (1) is lo (RUNNING)
>> index (2) is eth0 (RUNNING)
>> index (3) is eth1 (RUNNING)
>> index (4) is eth2 (RUNNING)
>> index (5) is eth3 (RUNNING)
>> index (6) is teql0 (NOT RUNNING)
>> index (7) is tunl0 (NOT RUNNING)
>> index (8) is gre0 (NOT RUNNING)
>> index (9) is eth0.11 (RUNNING)
>> index (10) is eth0.14 (RUNNING)
>> index (11) is eth0.15 (RUNNING)
>> index (12) is eth0.2 (RUNNING)
>> index (13) is eth0.3 (RUNNING)
>> 
>> iftest output ifaces with index from 0 to 64.
>> 
>> Here is ifaces list by ifconfig
>> ---------------------------------
>> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ifconfig | grep Link
>> eth0      Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>> eth1      Link encap:Ethernet  HWaddr 00:22:15:39:a3:34
>> eth2      Link encap:Ethernet  HWaddr 00:22:15:39:a3:35
>> eth3      Link encap:Ethernet  HWaddr 00:22:15:39:a3:36
>> eth0.2    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>> eth0.3    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>> eth0.5    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>> eth0.11   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>> eth0.14   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>> eth0.15   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>> lo        Link encap:Local Loopback
>> tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
>> tun2      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
>> 
>> In my program uses NFQUEUE packets from tun1 and tun2 coming
>> with indexex 14 and 17. But iftest not output any information
>> about this (and such code in my program).
>> I don't know another way to get name of iface by his index.
>
>I can't reproduce this hear with tap devices. Please try to
>figure out whether there are no netlink messages for these
>devices or whether userspace ignores them.

Can't reproduce either. Andrey, also try `ip addr` besides
iftest, just to be really sure.

18:18 ares:../libnfnetlink/utils # tunctl -t tun0
Set 'tun0' persistent and owned by uid 0
18:19 ares:../libnfnetlink/utils # tunctl -pt tap0
Set 'tap0' persistent and owned by uid 0
18:19 ares:../libnfnetlink/utils # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
    inet 127.0.0.2/8 brd 127.255.255.255 scope host secondary lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:14:4f:e1:d1:24 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:14:4f:e1:d1:25 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:14:4f:e1:d1:26 brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:14:4f:e1:d1:27 brd ff:ff:ff:ff:ff:ff
6: sit0: <NOARP> mtu 1480 qdisc noop state DOWN 
    link/sit 0.0.0.0 brd 0.0.0.0
8: tun0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 500
    link/[65534] 
9: tap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500
    link/ether aa:6d:76:59:17:e7 brd ff:ff:ff:ff:ff:ff
18:19 ares:../libnfnetlink/utils # ./iftest 
index (1) is lo (RUNNING)
index (2) is eth0 (RUNNING)
index (3) is eth1 (NOT RUNNING)
index (4) is eth2 (NOT RUNNING)
index (5) is eth3 (NOT RUNNING)
index (6) is sit0 (NOT RUNNING)
index (8) is tun0 (NOT RUNNING)
index (9) is tap0 (NOT RUNNING)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re[2]: [IMPORTANT] !!! tun ifaces don't visible by nfnetlink library
  2010-02-18 17:21   ` Jan Engelhardt
@ 2010-02-18 20:00     ` Kuzin Andrey
  0 siblings, 0 replies; 4+ messages in thread
From: Kuzin Andrey @ 2010-02-18 20:00 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Jan Engelhardt, Patrick McHardy

>>Kuzin Andrey wrote:
>>> Hello! I wrote about this problem later, but no any effect.
>>> Kernel somewhere or nfnetlink library has error.
>>> In kernel 2.6.27.x all forking fine.
>>> In kernel 2.6.30.5 only latest up tun iface was visible.
>>> Now i use kernel 2.6.32.3 and all tun ifaces become invisible. 
>>> 
>>> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# gcc iftest.c -lnfnetlink
>>> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ./a.out
>>> index (1) is lo (RUNNING)
>>> index (2) is eth0 (RUNNING)
>>> index (3) is eth1 (RUNNING)
>>> index (4) is eth2 (RUNNING)
>>> index (5) is eth3 (RUNNING)
>>> index (6) is teql0 (NOT RUNNING)
>>> index (7) is tunl0 (NOT RUNNING)
>>> index (8) is gre0 (NOT RUNNING)
>>> index (9) is eth0.11 (RUNNING)
>>> index (10) is eth0.14 (RUNNING)
>>> index (11) is eth0.15 (RUNNING)
>>> index (12) is eth0.2 (RUNNING)
>>> index (13) is eth0.3 (RUNNING)
>>> 
>>> iftest output ifaces with index from 0 to 64.
>>> 
>>> Here is ifaces list by ifconfig
>>> ---------------------------------
>>> root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ifconfig | grep Link
>>> eth0      Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>>> eth1      Link encap:Ethernet  HWaddr 00:22:15:39:a3:34
>>> eth2      Link encap:Ethernet  HWaddr 00:22:15:39:a3:35
>>> eth3      Link encap:Ethernet  HWaddr 00:22:15:39:a3:36
>>> eth0.2    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>>> eth0.3    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>>> eth0.5    Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>>> eth0.11   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>>> eth0.14   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>>> eth0.15   Link encap:Ethernet  HWaddr 00:22:15:39:a3:33
>>> lo        Link encap:Local Loopback
>>> tun1      Link encap:UNSPEC  HWaddr
>>> 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
>>> tun2      Link encap:UNSPEC  HWaddr
>>> 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
>>> 
>>> In my program uses NFQUEUE packets from tun1 and tun2 coming
>>> with indexex 14 and 17. But iftest not output any information
>>> about this (and such code in my program).
>>> I don't know another way to get name of iface by his index.
>>
>>I can't reproduce this hear with tap devices. Please try to
>>figure out whether there are no netlink messages for these
>>devices or whether userspace ignores them.

JE> Can't reproduce either. Andrey, also try `ip addr` besides
JE> iftest, just to be really sure.

JE> 18:18 ares:../libnfnetlink/utils # tunctl -t tun0
JE> Set 'tun0' persistent and owned by uid 0
JE> 18:19 ares:../libnfnetlink/utils # tunctl -pt tap0
JE> Set 'tap0' persistent and owned by uid 0
JE> 18:19 ares:../libnfnetlink/utils # ip a
JE> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
JE>     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
JE>     inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
JE>     inet 127.0.0.2/8 brd 127.255.255.255 scope host secondary lo
JE>     inet6 ::1/128 scope host 
JE>        valid_lft forever preferred_lft forever
JE> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
JE>     link/ether 00:14:4f:e1:d1:24 brd ff:ff:ff:ff:ff:ff
JE> 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
JE>     link/ether 00:14:4f:e1:d1:25 brd ff:ff:ff:ff:ff:ff
JE> 4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
JE>     link/ether 00:14:4f:e1:d1:26 brd ff:ff:ff:ff:ff:ff
JE> 5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
JE>     link/ether 00:14:4f:e1:d1:27 brd ff:ff:ff:ff:ff:ff
JE> 6: sit0: <NOARP> mtu 1480 qdisc noop state DOWN 
JE>     link/sit 0.0.0.0 brd 0.0.0.0
JE> 8: tun0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 500
JE>     link/[65534] 
JE> 9: tap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500
JE>     link/ether aa:6d:76:59:17:e7 brd ff:ff:ff:ff:ff:ff
JE> 18:19 ares:../libnfnetlink/utils # ./iftest 
JE> index (1) is lo (RUNNING)
JE> index (2) is eth0 (RUNNING)
JE> index (3) is eth1 (NOT RUNNING)
JE> index (4) is eth2 (NOT RUNNING)
JE> index (5) is eth3 (NOT RUNNING)
JE> index (6) is sit0 (NOT RUNNING)
JE> index (8) is tun0 (NOT RUNNING)
JE> index (9) is tap0 (NOT RUNNING)

Thanks for answer.
This is my 'ip addr' results:
root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
........[skipped].......
12: eth0.2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP
    link/ether 00:22:15:39:a3:33 brd ff:ff:ff:ff:ff:ff
    inet 10.248.249.1/24 brd 10.248.249.255 scope global eth0.2
13: eth0.3@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 00:22:15:39:a3:33 brd ff:ff:ff:ff:ff:ff
    inet 192.168.18.1/24 brd 192.168.18.255 scope global eth0.3
14: eth0.5@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UP
    link/ether 00:22:15:39:a3:33 brd ff:ff:ff:ff:ff:ff
    inet 10.10.1.1/24 brd 10.10.1.255 scope global eth0.5
17: tun2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc htb state UNKNOWN qlen 500
    link/[65534]
    inet 10.2.0.3 peer 10.2.0.4/32 scope global tun2
24: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc htb state UNKNOWN qlen 500
    link/[65534]
    inet 10.2.0.1 peer 10.2.0.2/32 scope global tun1

And 'iftest' results:
root@banana:/tmp/tgz/libnfnetlink-1.0.0/utils# ./iftest
index (1) is lo (RUNNING)
index (2) is eth0 (RUNNING)
index (3) is eth1 (RUNNING)
index (4) is eth2 (RUNNING)
index (5) is eth3 (RUNNING)
index (6) is teql0 (NOT RUNNING)
index (7) is tunl0 (NOT RUNNING)
index (8) is gre0 (NOT RUNNING)
index (9) is eth0.11 (RUNNING)
index (10) is eth0.14 (RUNNING)
index (11) is eth0.15 (RUNNING)
index (12) is eth0.2 (RUNNING)
index (13) is eth0.3 (RUNNING)

Here is no iface eth0.5@eth0=14, and as i see tun ifaces both has
'state UNKNOWN'
I try to modify iftest to find error:

      for (i=0; i<64; i++) {
            char name[IFNAMSIZ];
            unsigned int flags;

            if (nlif_index2name(h, i, name) == -1) {
                  printf("can't get name for index=%d\n",i);
                  continue;
            }
            if (nlif_get_ifflags(h, i, &flags) == -1) {
                  printf("can't get flags for index=%d\n",i);
                  continue;
            }
            printf("index (%d) is %s (%s)\n", i, name,
                  flags & IFF_RUNNING ? "RUNNING" : "NOT RUNNING");
      }

And here is result:
./a.outnana:/tmp/tgz/libnfnetlink-1.0.0/utils#
can't get flags for index=0
index (1) is lo (RUNNING)
index (2) is eth0 (RUNNING)
index (3) is eth1 (RUNNING)
index (4) is eth2 (RUNNING)
index (5) is eth3 (RUNNING)
index (6) is teql0 (NOT RUNNING)
index (7) is tunl0 (NOT RUNNING)
index (8) is gre0 (NOT RUNNING)
index (9) is eth0.11 (RUNNING)
index (10) is eth0.14 (RUNNING)
index (11) is eth0.15 (RUNNING)
index (12) is eth0.2 (RUNNING)
index (13) is eth0.3 (RUNNING)
can't get name for index=14
can't get name for index=15
can't get name for index=16
can't get name for index=17
can't get name for index=18
can't get name for index=19
can't get name for index=20
can't get name for index=21
can't get name for index=22
can't get name for index=23
can't get name for index=24
can't get name for index=25
can't get name for index=26
can't get name for index=27
..........
can't get name for index=62
can't get name for index=63

I know only this way (described in iftest) how to get name of
interface by index. May be another way ?
I try to find source of "ip addr".
But this is strange because in older kernel this code working right.






^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-02-18 19:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-18  6:14 [IMPORTANT] !!! tun ifaces don't visible by nfnetlink library Kuzin Andrey
2010-02-18 17:07 ` Patrick McHardy
2010-02-18 17:21   ` Jan Engelhardt
2010-02-18 20:00     ` Re[2]: " Kuzin Andrey

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.