1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 #include <linux/can/vxcan.h>
7 static int netdev_vxcan_fill_message_create(NetDev
*netdev
, Link
*link
, sd_netlink_message
*m
) {
19 r
= sd_netlink_message_open_container(m
, VXCAN_INFO_PEER
);
21 return log_netdev_error_errno(netdev
, r
, "Could not append VXCAN_INFO_PEER attribute: %m");
24 r
= sd_netlink_message_append_string(m
, IFLA_IFNAME
, v
->ifname_peer
);
26 return log_netdev_error_errno(netdev
, r
, "Failed to add vxcan netlink interface peer name: %m");
29 r
= sd_netlink_message_close_container(m
);
31 return log_netdev_error_errno(netdev
, r
, "Could not append VXCAN_INFO_PEER attribute: %m");
36 static int netdev_vxcan_verify(NetDev
*netdev
, const char *filename
) {
46 if (!v
->ifname_peer
) {
47 log_netdev_warning(netdev
, "VxCan NetDev without peer name configured in %s. Ignoring", filename
);
54 static void vxcan_done(NetDev
*n
) {
66 const NetDevVTable vxcan_vtable
= {
67 .object_size
= sizeof(VxCan
),
68 .sections
= NETDEV_COMMON_SECTIONS
"VXCAN\0",
70 .fill_message_create
= netdev_vxcan_fill_message_create
,
71 .create_type
= NETDEV_CREATE_INDEPENDENT
,
72 .config_verify
= netdev_vxcan_verify
,