ifconfig показывает интерфейс, но if_nametoindex () не может его найти - PullRequest
0 голосов
/ 06 сентября 2018

Набрав ifconfig, я получаю следующее:

~$ ifconfig
vcan0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP RUNNING NOARP  MTU:72  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Однако при попытке получить индекс интерфейса "vcan0" ничего не возвращается (в данном случае используется python):

avidane@u42cfffc3cd2b51:~$ python3.5                                                                 
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> import ctypes.util                                                                                                                                                                                      
>>> libc = ctypes.CDLL(ctypes.util.find_library("c"), use_errno=True)
>>> ifidx = libc.if_nametoindex("vcan0")
>>> print(ifidx)
0

Как это может быть? Возвращаемое число ошибок - 19, что, насколько я могу судить, означает «нет такого устройства»

КСТАТИ. Мне нужен индекс, чтобы создать структуру sockaddr_can и связать ее. Если есть лучший способ получить индекс, у меня все уши.

...