Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

MTU сетевого интерфейса в Linux (язык C)

Как установить MTU сетевого интерфейса в Linux на языке C?


Ответ

Советую взять за основу исходники iproute2, файл iplink.c
#include #include #include #include #include #include #include
static int get_ctl_fd(void) { int s_errno; int fd;
fd = socket(PF_INET, SOCK_DGRAM, 0); if (fd >= 0) return fd; s_errno = errno; fd = socket(PF_PACKET, SOCK_DGRAM, 0); if (fd >= 0) return fd; fd = socket(PF_INET6, SOCK_DGRAM, 0); if (fd >= 0) return fd; errno = s_errno; perror("Cannot create control socket"); return -1; }
static int set_mtu(const char *dev, int mtu) { struct ifreq ifr; int s;
s = get_ctl_fd(); if (s < 0) return -1;
memset(&ifr, 0, sizeof(ifr)); strncpy(ifr.ifr_name, dev, IFNAMSIZ); ifr.ifr_mtu = mtu; if (ioctl(s, SIOCSIFMTU, &ifr) < 0) { perror("SIOCSIFMTU"); close(s); return -1; } close(s);
return 0; }

Комментариев нет:

Отправить комментарий