Читаем UNIX: разработка сетевых приложений полностью

 const struct sockaddr *src, socklen_t srclen,

 const struct sockaddr *grp, socklen_t grplen);

int mcast_join_source_group(int sockfd,

 const struct sockaddr *src, socklen_t srclen,

 const struct sockaddr *grp, socklen_t grplen,

 const char *ifname, u_int ifindex);

int mcast_leave_source_group(int sockfd,

 const struct sockaddr *src, socklen_t srclen,

 const struct sockaddr *grp, socklen_t grplen);

int mcast_set_if(int sockfd, const char *ifname, u_int ifindex);

 int mcast_set_loop(int sockfd, int flag);

int mcast_set_ttl(int sockfd, int ttl);

Все перечисленные выше функции возвращают: 0 в случае успешного выполнения, -1 в случае ошибки

int mcast_get_if(int sockfd);

Возвращает: неотрицательный индекс интерфейса в случае успешного выполнения, -1 в случае ошибки

int mcast_get_loop(int sockfd);

Возвращает: текущий флаг закольцовки в случае успешного выполнения, -1 в случае ошибки

int mcast_get_ttl(int sockfd);

Возвращает: текущее значение TTL или предельное количество транзитных узлов в случае успешного выполнения, -1 в случае ошибки

Функция mcast_join присоединяет узел к группе. IP-адрес этой группы содержится в структуре адреса сокета, на которую указывает аргумент grp, а длина этой структуры задается аргументом grplen. Мы можем задать интерфейс, на котором должно происходить присоединение к группе, либо через имя интерфейса (непустой аргумент ifname), либо через ненулевой индекс интерфейса (непустой аргумент ifindex). Если ни одно из этих значений не задано, ядро самостоятельно выбирает интерфейс, на котором происходит присоединение к группе. Вспомните, что в случае IPv6 для работы с параметрами сокета интерфейс задается по его индексу. Если для сокета IPv6 известно имя интерфейса, нужно вызвать функцию if_nametoindex, чтобы получить индекс интерфейса. В случае параметра сокета IPv4 мы задаем интерфейс по его IP-адресу направленной передачи. Если для сокета IPv4 интерфейс задан по имени, нужно вызвать функцию ioctl с запросом SIOCGIFADDR для получения IP-адреса направленной передачи для этого интерфейса. Если для сокета IPv4 задан индекс интерфейса, мы сначала вызываем функцию if_indextoname, чтобы получить имя интерфейса, а затем обрабатываем имя так, как только что было сказано.

ПРИМЕЧАНИЕ

Пользователи обычно задают имя интерфейса le0 или ether0, а IP-адрес и индекс интерфейса не используются. Например, tcpdump является одной из немногих программ, позволяющих пользователю задавать интерфейс, а ее параметр -i принимает имя интерфейса в качестве аргумента.

Функция mcast_leave выводит узел из группы с IP-адресом, содержащимся в структуре адреса сокета, на которую указывает аргумент grp.

Функция mcast_block_source блокирует получение через конкретный сокет пакетов, относящихся к определенной группе и исходящих от определенного источника. IP-адреса группы и источника хранятся в структурах адреса сокета, на которые указывают аргументы grp и src соответственно. Длины структур задаются параметрами srclen и grplen. Для успешного завершения функции необходимо, чтобы до ее вызова уже была вызвана функция mcast_join для того же сокета и той же группы.

Функция mcast_unblock_source разблокирует получение трафика от источника из заданной группы. Аргументы src, srclen, grp и grplen имеют тот же смысл, что и аргументы предыдущей функции, и должны совпадать с ними по значениям.

Перейти на страницу:

Все книги серии Мастер-класс

Секреты резьбы по дереву
Секреты резьбы по дереву

Изделия из древесины и материалов, имитирующих ее текстуру, привычным образом окружают нас в повседневной жизни, поэтому мы относимся к ней как к чему-то обыденному. Но как только ее коснется умелая рука мастера резьбы по дереву, рождается произведение искусства и раскрываются такие качества древесины, как богатая фактура, разнообразие цветов, особая теплота. Эта книга поможет читателю открыть для себя удивительный мир творчества и познать секреты резьбы по дереву. Автор надеется, что начинающие резчики найдут в ней интересный и полезный материал, который позволит им стать мастерами. В приложении представлены рисунки орнаментов и различных узоров, которые на первых порах можно копировать, а по мере приобретения навыка на их основе разрабатывать свои образцы.

Галина Алексеевна Серикова

Сделай сам / Хобби и ремесла / Руководства / Дом и досуг / Словари и Энциклопедии

Похожие книги