Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (45 – Общая рассылка , часть 18)

предыдущая часть ««»» следующая часть

Размеры целых чисел и указателей зависят от архитектуры, но их можно определить во время выполнения с использованием хеша %Config языка Perl. На первый взгляд может показаться, что размер структуры ifconf должен быть равен сумме размеров целого числа и указателя, но это иногда оказывается неправильным. Во многих компьютерных архитектурах используют­ся ограничения выравнивания, которые требуют размещения указателей в адресах памяти, равных четному кратному размеров указателя. Если размеры целого числа и указателя не одинаковы (например, как в некоторых 64-разрядных системах), транслятор С разместит до­полнительные байты после целого числа для выравнивания указателя по его границе. Это значит, что в конечном итоге размер структуры ifconf становится равным удвоенному раз­меру указателя, или 2 * $Config{ptrsize}.

Структура ifreq включает объединение С, а это значит, что одна и та же область памяти применяется в разных целях, в зависимости от контекста. Первая часть этой структуры данных содержит имя интерфейса и по длине определена равной ifnamsiz байт (в большинстве реализаций — 16 байт). Вторая часть может при различных условиях содержать следующее:

- адрес сокета, состоящий из 2-байтового обозначения семейства адресов и 4-байтового IP-адреса, которые разделены 2-байтовым дополнением. 

- аппаратный адрес Ethernet, состоящий из 2-байтового обозначения семейства адресов ап­паратного адреса длиной до 6 байт;

- флажки интерфейса, состоящие из 2 байт данных флажков;

- имя “ведомого” интерфейса, применяемого в различных схемах распределения нагрузки (эта те­ма здесь не рассматривается). Имя “ведомого” интерфейса также имеет длину ifnamsiz байт.

Размер объединения С должен быть достаточным для размещения всех этих вариантов. В данном случае он равен удвоенному значению ifnamsiz, или 2 * ifnamsiz. При такой корректной инициализации хеша Isizeof функциональные коды ioctl () после обработки будут получать правильные значения.



2015-06-27 12:14:49

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония