Eu quero configurar uma interface SocketCAN virtual na inicialização. As linhas a seguir fazem o que eu quero (manualmente):
ip link add dev vcan0 type vcan
ip link set up vcan0
(ou)
ip link add dev vcan0 up type vcan
Eu tenho um método para abrir uma interface CAN física USB no hotplugging - adiciono as seguintes linhas a /etc/network/interfaces
:
allow-hotplug can0
iface can0 can static
bitrate 250000
up /sbin/ip link set $IFACE down
up /sbin/ip link set $IFACE up type can
Agora também quero trazer a interface vcan
na inicialização. Por isso, adicionei automaticamente o módulo vcan
e adicionei essas linhas a /etc/network/interfaces
:
auto vcan0
iface vcan0 can static
bitrate 0 # NEEDED but not supported
pre-up /sbin/ip link add dev $IFACE type vcan
up /sbin/ip link set $IFACE up
Mas, estranhamente, essa abordagem não funciona: na inicialização ou quando eu executo ifup vcan0
, obtenho o seguinte erro:
Configuring interface vcan0=vcan0 (can)
/sbin/ip link add dev $IFACE type vcan
...
ip link set vcan0 type can bitrate 0
RTNETLINK answers: Operation not supported
Failed to bring up vcan0.
.. quando eu adiciono a linha bitrate <somevalue>
ou eu obtenho
Configuring interface vcan0=vcan0 (can)
Missing required variable: bitrate
Missing required configuration variables for interface vcan0/can.
Failed to bring up vcan0.
.. quando eu omitir a configuração da taxa de bits.
Portanto, parece que preciso definir bitrate
e não defini-lo - ao mesmo tempo.
O que estou fazendo de errado aqui?
p.s. É claro que eu poderia simplesmente executar o ip link add ..
na inicialização, mas gostaria de usar a mesma abordagem para ambas as interfaces.