Переносимый способ в c ++ получить таблицу маршрутизации - PullRequest
1 голос
/ 28 февраля 2012

Мне нужно получить таблицу маршрутизации для машины в переносном режиме. Я использую C ++, и библиотека Boost уже доступна, если это поможет.

Запрещено вызывать внешние команды, такие как "route", поскольку они не переносимы, а внешняя команда может быть недоступна.

Ответы [ 2 ]

5 голосов
/ 28 февраля 2012

Конечно, звонить по номеру route не рекомендуется, так как разветвление и выполнение выполняются редко.

К сожалению, я могу сказать вам [как основателю проекта Net-SNMP ,где мы сообщаем о маршрутах для многих платформ в C], нет независимого от платформы способа.Вам нужно будет узнать, как каждый хранит свою информацию и как к ней получают доступ.Например, в Linux вы можете получить его из / proc.В других ОС вы можете получить это через вызовы API.Вы вряд ли будете рады узнать, что того, чего вы хотите, не существует.И потом, вы даже найдете несколько платформ, которые могут отличаться между IPv4 и IPv6!

Вы, однако, можете свободно копаться в коде Net-SNMP и искать все способы, которыми это делается там.,См. agent/mibgroup/ip-forward-mib/data_access/ и agent/mibgroup/mibII/var_route.c для начала.

0 голосов
/ 28 октября 2014

Вы можете посмотреть стороннюю библиотеку переносимости, например libdnet (лицензия BSD).

https://code.google.com/p/libdnet/

...