Протоколы Internet


Сетевые драйверы - часть 13


10. Занесение списка мультикастинг-адресов в интерфейс set_multicast_list(addrlst,len)

AH == 22 (код запроса)

char far *addrlst; ES:DI (адрес буфера, где лежат адреса)

int len; CX (длина списка адресов)

В случае ошибки флаг carry=1, а в регистр DH заносится код ошибки. Возможные ошибки:

6 NO_MULTICAST;

9 NO_SPACE;

14 BAD_ADDRESS.

Список адресов представляет собой счетную последовательность, начинающуюся с байта числа адресов в списке. На список адресов указывает комбинация регистров ES:DI. Сообщение NO_SPACE присылается, если указатель адреса отсутствует, или число адресов превосходит аппаратные возможности интерфейса. Прежде чем заносить список, полезно сначала ознакомиться с имеющимся уже списком, выполнив запрос get_multicast_list. При получении сообщения NO_SPACE рекомендуется попытаться установить режим приема 3 с помощью запроса set_rcv_mode.

11. Получение рабочего списка мультикастинг-адресов

get_multicast_list

AH == 23 (код запроса)

В случае ошибки флаг carry=1, а в регистр DH заносится код ошибки. Возможные ошибки:

6 NO_MULTICAST;

9 NO_SPACE.

При успешном выпонении запроса флаг carry=0, в регистр CX заносится длина списка адресов, а регистры ES:DI указывают на начало счетной оследовательности, где запрошенный список лежит. Прикладная программа не должна модифицировать этот список.

12. Получение статистических данных об ошибках и трафике через данный интерфейс

get_statistics(handle)

AH == 24 (код запроса)

int handle; BX (указатель)

char far *statistics; DS:SI (адрес буфера, куда записываются статистические данные)

В случае ошибки флаг carry=1, а в регистр DH заносится код ошибки 1 BAD_HANDLE. При успешном выполнении запроса флаг carry=0, а в массиве, начиная с адреса DS:SI, лежит запрошенная информация.

struct statistics {

unsigned long packets_in;

( Число принятых пакетов для всех указателей)

unsigned long packets_out;

( Число посланных пакетов)

unsigned long bytes_in;

( Число принятых байтов, включая MAC заголовки)

unsigned long bytes_out;

( Число посланных байтов)

unsigned long errors_in;

( Полное число ошибок при приеме)

unsigned long errors_out;

( Число ошибок при посылке пакетов)

unsigned long packets_lost;

( Число потерянных пакетов из-за отсутствия свободного буфера или других ресурсов)

<


Начало  Назад  Вперед



Книжный магазин