Необходимая информация находится во втором поле этой структуры, начиная с байта номер 4. Выполняется проверка длины результата вызова метода getsockopt (), и если она больше 4, адрес извлекается с использованием функции substr (). После этого вызывается внутренняя процедура find interface () для преобразования IP-адреса в имя логического устройства интерфейса.
Строки 48-66. Метод mcast_ loopback (). Этот метод намного проще. Если указан второй параметр, он вызывает метод setsockopt () с командой ip multicast loop и параметром 1 — для включения режима возврата пакетов на локальный хост и еще для его выключения.
В ином случае он вызывает метод getsockopt () для выборки установки режима возврата пакетов. Метод getsockopt () возвращает установку в виде упакованной двоичной строки, поэтому она преобразуется в число, предназначенное для восприятия человеком, с использованием формата “I” (формат целого числа без знака).
Строки 57-65. Метод mcast_ttl(). Данный метод позволяет получить или установить значение TTL для исходящих многоадресных сообщений. Если указано значение TTL, оно упаковывается в двоичное целое число с использованием формата “I” и передается методу setsockopt () с командой ip_multicast_ttl. Если значение параметра не задано, выполняется обратный процесс.
Строки 66-75. Функция get_if_addr (). Последние две функции используются самим модулем. Функция get_if_addr () позволяет указать в вызывающем операторе сетевые интерфейсы с использованием IP-адреса в виде четырех чисел, разделенных точками, или имени логического устройства. Функция принимает два параметра, состоящие из имени сокета и интерфейса. Если параметр с обозначением интерфейса пуст, функция возвращает значение 0.0.0.0, которое представляет собой эквивалентное представление безразличного адреса iNaddr_any в виде четырех чисел, разделенных точками. Если интерфейс по результатам сопоставления с образцом выглядит как адрес в виде четырех чисел, разделенных точками, то функция возвращает его неизменным.