Какой пакет мне нужно установить для использования сокетов маршрутизации? - PullRequest
6 голосов
/ 05 октября 2009

Я пробую код, данный в Unix Network Programming Ричардом Стивенсом. но я не могу получить код для компиляции.

вот исходный код. http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f00/unpv12e/libroute/

У меня нет заголовочного файла net / if_dl.h, а заголовочный файл net / route.h не содержит констант и структур, которые использует код.

Ответы [ 5 ]

6 голосов
/ 20 ноября 2013

Обратите внимание, вам НЕ нужно делать в этой папке "libroute"

См. Документ:

cd ../libroute # only if your system supports 4.4BSD style routing sockets
make           # only if your system supports 4.4BSD style routing sockets

cd ../libxti   # only if your system supports XTI
make           # only if your system supports XTI

Linux - это не маршрутизация в стиле BSD, просто зайдите в ../intro и соберите примеры ~!

4 голосов
/ 05 октября 2009

Это специфичный для BSD API, и Linux не поддерживает его. эквивалентная функциональность (не совместимая с исходным кодом) предоставляется семейство сокетов netlink. "man 7 netlink" должен помочь вам начать, но вам, вероятно, понадобится выполнить работу по переносу.

3 голосов
/ 05 октября 2009

Я не на машине, где я могу сделать это прямо сейчас, но, возможно, я все еще могу помочь. Если ваш дистрибутив использует yum (например, RHEL):

yum provides if_dl.h

Или, если вы используете apt (например, Ubuntu / Debian):

sudo apt-get install apt-file
sudo apt-file update
apt-file search if_dl.h

Если apt-file уже установлен, первый шаг не понадобится, и я точно не помню, если второй. Кроме того, я считаю, что оба менеджера пакетов работают как с именем файла, так и с полным путем.

Надеюсь, это сработает для вас или кого-то еще, кто читает это, и вы получите ответ!

0 голосов
/ 14 марта 2019

Как объяснено в https://ubuntu.pkgs.org/16.04/ubuntu-universe-amd64/freebsd-glue_0.2.20_amd64.deb.html просто установите пакет freebsd-glue deb:

sudo apt-get install freebsd-glue
0 голосов
/ 06 марта 2017

попробуйте скопировать if_dl.h из net и поместить его в / usr / include / net. может быть, это работает, и, возможно, ему нужны другие библиотеки. Возможно, мой английский не очень хорош. Прости меня.

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