Доступ и управление собственным Eth0 без сокета - PullRequest
0 голосов
/ 02 апреля 2012

Знаете ли вы способ доступа и управления в интерфейсе c eth0 без сокета ???

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Почему бы вам не сделать что-то похожее на вызов команды ifconfig на оболочке в вашем C-коде:

system("ifconfig eth0 ...");

Это избавит от необходимости иметь файловый дескриптор, но позволит вам управлять устройством с помощью команды. Выполните команду man ifconfig , чтобы узнать, как структурировать ваш запрос ifconfig для управления всем, что вам нужно сделать с интерфейсом.

Если вам нужно перейти на более низкий уровень, чем этот, то вы можете просто открыть необработанный сокет ... назначить индекс устройства Ethernet, которым вы хотите манипулировать ... и затем использовать ioctl () для настройки по мере необходимости:

if ((fd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW)) == -1) {
  perror("socket");
}

struct ifreq req;
strncpy(req.ifr_name, "eth0", IFNAMSIZ-1);
if (ioctl(fd, SIOCGIFINDEX, &ifreq) < 0)
  perror("SIOCGIFINDEX");

Тогда у вас есть ручка для eth0 ...

0 голосов
/ 02 апреля 2012

Да, вы можете напрямую общаться с драйвером сетевого интерфейса с помощью соответствующих вызовов ioctl. Для получения подробной информации обратитесь к справочнику по API вашего драйвера Некоторые ОС также могут предоставлять доступ через собственный API, см., Например, этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...