1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 Copyright © 2017 Susant Sahani
6 #include "netdev/vxcan.h"
9 static int netdev_vxcan_fill_message_create(NetDev
*netdev
, Link
*link
, sd_netlink_message
*m
) {
21 r
= sd_netlink_message_open_container(m
, VXCAN_INFO_PEER
);
23 return log_netdev_error_errno(netdev
, r
, "Could not append VXCAN_INFO_PEER attribute: %m");
26 r
= sd_netlink_message_append_string(m
, IFLA_IFNAME
, v
->ifname_peer
);
28 return log_error_errno(r
, "Failed to add vxcan netlink interface peer name: %m");
31 r
= sd_netlink_message_close_container(m
);
33 return log_netdev_error_errno(netdev
, r
, "Could not append VXCAN_INFO_PEER attribute: %m");
38 static int netdev_vxcan_verify(NetDev
*netdev
, const char *filename
) {
48 if (!v
->ifname_peer
) {
49 log_warning("VxCan NetDev without peer name configured in %s. Ignoring", filename
);
56 static void vxcan_done(NetDev
*n
) {
68 const NetDevVTable vxcan_vtable
= {
69 .object_size
= sizeof(VxCan
),
70 .sections
= "Match\0NetDev\0VXCAN\0",
72 .fill_message_create
= netdev_vxcan_fill_message_create
,
73 .create_type
= NETDEV_CREATE_INDEPENDENT
,
74 .config_verify
= netdev_vxcan_verify
,