+int system_update_ipv6_mtu(struct device *dev, int mtu)
+{
+ int ret = -1;
+ char buf[64];
+ snprintf(buf, sizeof(buf), "/proc/sys/net/ipv6/conf/%s/mtu",
+ dev->ifname);
+
+ int fd = open(buf, O_RDWR);
+ ssize_t len = read(fd, buf, sizeof(buf) - 1);
+ if (len < 0)
+ goto out;
+
+ buf[len] = 0;
+ ret = atoi(buf);
+
+ if (!mtu || ret <= mtu)
+ goto out;
+
+ lseek(fd, 0, SEEK_SET);
+ if (write(fd, buf, snprintf(buf, sizeof(buf), "%i", mtu)) <= 0)
+ ret = -1;
+
+out:
+ close(fd);
+ return ret;
+}
+