Я использую
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
за все это. Я хочу сделать это специально только для одного интерфейса, не затрагивая все остальные. Как мне это сделать?
Бонд1: 43. Ограничение канала: Ethernet HWaddr 00: 0E: 0C: E4: C5: 45
адрес в сети Интернет: 10.7.181.59 Bcast: 10.7.181.255 Маска: 255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU: 1492 Метрика: 1
Bond1: 48. Ограничение канала: Ethernet HWaddr 00: 0E: 0C: E4: C5: 45
адрес в сети Интернет: 10.7.181.60 Bcast: 10.7.181.255 Маска: 255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU: 1492 Метрика: 1
bond1: 49 Код соединения: Ethernet HWaddr 00: 0E: 0C: E4: C5: 45
адрес в сети Интернет: 10.7.181.61 Bcast: 10.7.181.255 Маска: 255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU: 1492 Метрика: 1