Разъемы RAW требуются для CAN, не работающего под MacOS - сокет: семейство адресов не поддерживается протоколом - PullRequest
2 голосов
/ 27 марта 2019

Я пытаюсь разработать образ докера для тестирования SocketCAN (с vcan), который будет работать на MacOS и Windows, и все нормально, пока я не запущу candump vcan0 , который возвращает: "socket: семейство адресов не поддерживается протоколом "

Через некоторое время мне удалось заставить его работать в Linux, запустив контейнер с параметром --network = host --privileged. Тем не менее, это не работает на контейнере, запущенном на Mac, который возвращает:

socket: Address family not supported by protocol

Строка "Candump Vcan0" показывает, что останавливается на этом вызове:

socket(AF_CAN, SOCK_RAW, 1)             = -1 EAFNOSUPPORT (Address family not supported by protocol)

Что странно, это то, что хотя «--network = host» не должно поддерживаться на Mac (https://docs.docker.com/network/host/), имя хоста контейнера показывает образ LinuxKit (виртуальная машина, на которой работают контейнеры):

root@linuxkit-025000000001:~#

Модуль vcan, конечно, загружен:

root@linuxkit-025000000001:~# lsmod
Module                  Size  Used by
vcan                   16384  0
xfrm_user              32768  1
xfrm_algo              16384  1 xfrm_user

Не знаю, что еще попробовать;)

...