我在用
ioctl(s,SIOCSIFMTU,(caddr_t)&ifr)
若要更改接口的MTU,请执行以下操作。
代码类似于
struct ifreq ifr;
ifr.ifr_addr.sa_family = AF_INET;
//iap->ifa_name is bond1:xx
strncpy(ifr.ifr_name, iap->ifa_name, sizeof(ifr.ifr_name));
ifr.ifr_mtu = 1492;
ioctl(s, SIOCSIFMTU, (caddr_t)&ifr)我的问题是,设备有多个接口,所有这些MTU都设置为1492。我只想专门为一个接口做这件事,让所有其他的界面都没有受到影响。我该怎么做呢?
链接附件:以太网HWaddr 00:0E:0C:E4:C5:45
inet addr:10.7.181.59 Bcast:10.7.181.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:**1492** Metric:1链接附件:以太网HWaddr 00:0E:0C:E4:C5:45
inet addr:10.7.181.60 Bcast:10.7.181.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:**1492** Metric:1链接附件:以太网HWaddr 00:0E:0C:E4:C5:45
inet addr:10.7.181.61 Bcast:10.7.181.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:**1492** Metric:1发布于 2011-06-09 10:42:02
如果要更新特定接口的MTU,则应将struct ifreq的struct ifreq字段设置为接口的名称。
编辑:您的问题在接口的名称中。接口名称中列后面的数字只是一个别名。实际上,您没有几个不同的接口--这是同一个接口。这就是为什么将您的设置应用于所有名为"bond:xx“的接口。
发布于 2012-12-12 12:02:33
这可能管用。首先获取Alias接口,然后设置MTU。
ioctl(s, SIOCGIFALIAS, (caddr_t)&ifr)https://stackoverflow.com/questions/6290835
复制相似问题