Книга: UNIX: разработка сетевых приложений
Пример: определяем, включены ли контрольные суммы UDP
Разделы на этой странице:
Пример: определяем, включены ли контрольные суммы UDP
Теперь мы приведем простой пример использования функции sysctl
с протоколами Интернета для проверки, включены ли контрольные суммы UDP. Некоторые приложения UDP (например, BIND) проверяют при запуске, включены ли контрольные суммы UDP, и если нет, пытаются включить их. Для того чтобы включить подобное свойство, требуются права привилегированного пользователя, но мы сейчас просто проверим, включено это свойство или нет. В листинге 18.7 представлена наша программа.
Листинг 18.7. Проверка включения контрольных сумм
//route/checkudpsum.c
1 #include "unproute.h"
2 #include <netinet/udp.h>
3 #include <netinet/ip_var.h>
4 #include <netinet/udp_var.h> /* для констант UDPCTL_xxx */
5 int
6 main(int argc, char **argv)
7 {
8 int mib[4], val;
9 size_t len;
10 mib[0] = CTL_NET;
11 mib[1] = AF_INET;
12 mib[2] = IPPROTO_UDP;
13 mib[3] = UDPCTL_CHECKSUM;
14 len = sizeof(val);
15 Sysctl(mib, 4, &val, &len, NULL, 0);
16 printf("udp checksum flag: %dn", val);
17 exit(0);
18 }
Включение системных заголовков
2-4
Следует включить заголовочный файл <netinet/udp_var.h>
, чтобы получить определение констант UDP функции sysctl
. Для него требуются два других заголовка.
Вызов функции sysctl
10-16
Мы размещаем в памяти массив целых чисел с четырьмя элементами и храним константы, соответствующие иерархии, показанной на рис. 18.3. Поскольку мы только получаем переменную и не присваиваем ей значение, аргумент newp
функции sysctl
мы задаем как пустой указатель, и поэтому аргумент newp
этой функции имеет нулевое значение, oldp
указывает на нашу целочисленную переменную, в которую сохраняется результат, a oldenp
указывает на переменную типа «значение- результат», хранящую размер этого целого числа. Мы выводим либо 0 (отключено), либо 1 (включено).
- Пример установочного скрипта
- Пример из практики
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы
- UDP characteristics
- UDP headers
- Пример 17-10. Блочный комментарий
- UDP connections
- UDP matches