X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-netdev-tuntap.c;h=4f449aea4820eeda113659a9714e2216d8dc1589;hb=484adfd914504cd7e95867cea20ca7af71b888f2;hp=dd3bd96dbb09275df54ad24dcba66a939d4e9346;hpb=aa9f11405829fd4755fef28602a7167dba3ddc89;p=elogind.git diff --git a/src/network/networkd-netdev-tuntap.c b/src/network/networkd-netdev-tuntap.c index dd3bd96db..4f449aea4 100644 --- a/src/network/networkd-netdev-tuntap.c +++ b/src/network/networkd-netdev-tuntap.c @@ -63,22 +63,20 @@ static int netdev_tuntap_add(NetDev *netdev, struct ifreq *ifr) { const char *group; uid_t uid; gid_t gid; - int r = 0; + int r; assert(netdev); assert(ifr); fd = open(TUN_DEV, O_RDWR); if (fd < 0) { - log_error_netdev(netdev, - "Failed to open tun dev: %s", - strerror(-r)); - return r; + log_netdev_error(netdev, "Failed to open tun dev: %m"); + return -errno; } r = ioctl(fd, TUNSETIFF, ifr); if (r < 0) { - log_error_netdev(netdev, + log_netdev_error(netdev, "TUNSETIFF failed on tun dev: %s", strerror(-r)); return r; @@ -97,14 +95,14 @@ static int netdev_tuntap_add(NetDev *netdev, struct ifreq *ifr) { r = get_user_creds(&user, &uid, NULL, NULL, NULL); if (r < 0) { - log_error("Cannot resolve user name %s: %s", - t->user_name, strerror(-r)); + log_error_errno(r, "Cannot resolve user name %s: %m", + t->user_name); return 0; } r = ioctl(fd, TUNSETOWNER, uid); if ( r < 0) { - log_error_netdev(netdev, + log_netdev_error(netdev, "TUNSETOWNER failed on tun dev: %s", strerror(-r)); } @@ -116,14 +114,14 @@ static int netdev_tuntap_add(NetDev *netdev, struct ifreq *ifr) { r = get_group_creds(&group, &gid); if (r < 0) { - log_error("Cannot resolve group name %s: %s", - t->group_name, strerror(-r)); + log_error_errno(r, "Cannot resolve group name %s: %m", + t->group_name); return 0; } r = ioctl(fd, TUNSETGROUP, gid); if( r < 0) { - log_error_netdev(netdev, + log_netdev_error(netdev, "TUNSETGROUP failed on tun dev: %s", strerror(-r)); return r; @@ -133,13 +131,13 @@ static int netdev_tuntap_add(NetDev *netdev, struct ifreq *ifr) { r = ioctl(fd, TUNSETPERSIST, 1); if (r < 0) { - log_error_netdev(netdev, + log_netdev_error(netdev, "TUNSETPERSIST failed on tun dev: %s", strerror(-r)); return r; } - return r; + return 0; } static int netdev_create_tuntap(NetDev *netdev) { @@ -172,9 +170,26 @@ static void tuntap_done(NetDev *netdev) { t->group_name = NULL; } +static int tuntap_verify(NetDev *netdev, const char *filename) { + assert(netdev); + + if (netdev->mtu) { + log_warning_netdev(netdev, "MTU configured for %s, ignoring", + netdev_kind_to_string(netdev->kind)); + } + + if (netdev->mac) { + log_warning_netdev(netdev, "MAC configured for %s, ignoring", + netdev_kind_to_string(netdev->kind)); + } + + return 0; +} + const NetDevVTable tun_vtable = { .object_size = sizeof(TunTap), .sections = "Match\0NetDev\0Tun\0", + .config_verify = tuntap_verify, .done = tuntap_done, .create = netdev_create_tuntap, .create_type = NETDEV_CREATE_INDEPENDENT, @@ -183,6 +198,7 @@ const NetDevVTable tun_vtable = { const NetDevVTable tap_vtable = { .object_size = sizeof(TunTap), .sections = "Match\0NetDev\0Tap\0", + .config_verify = tuntap_verify, .done = tuntap_done, .create = netdev_create_tuntap, .create_type = NETDEV_CREATE_INDEPENDENT,