Is there a way to get mtu C++ portable way? Like from both Linux and Windows ?
I know in Linux this is the code :
sys_get_mtu(const char *ifname)
{
struct ifreq ifr;
size_t ifnamelen;
int s;
ifnamelen = strlen(ifname);
if (ifnamelen > sizeof(ifr.ifr_name) + 1)
return 0;
memcpy(ifr.ifr_name, ifname, ifnamelen);
ifr.ifr_name[ifnamelen] = '\0';
s = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
if (s == -1)
return 0;
if (ioctl(s, SIOCGIFMTU, &ifr) == -1) {
close(s);
return 0;
}
close(s);
return ifr.ifr_mtu;
}