Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка kpi_mbuf.h

Опции
Развертывание Target:

На этой странице

Ссылка kpi_mbuf.h

Этот заголовок определяет API для взаимодействия с mbufs. mbufs, основной метод хранения пакетов в сетевом стеке.

mbufs используются для хранения различных элементов в сетевом стеке. Наиболее распространенное использование mbuf должно сохранить пакет или данные по сокету, ожидающему, чтобы быть отправленным или полученным. mbuf является непрерывной структурой с некоторым заголовком, сопровождаемым некоторыми данными. Хранить больше данных, чем поместилось бы в mbuf, внешние данные используются. Большинство mbufs с внешними данными использует кластеры, чтобы хранить внешние данные.

mbufs может быть объединен в цепочку, непрерывные данные в пакете могут быть сочтены следующим m_next цепочкой. Пакеты могут быть связаны вместе с помощью m_nextpacket. Много частей штабеля должным образом не обрабатывают цепочки пакетов. Когда в сомнении, не объединяйте пакеты в цепочку.

Включенные заголовки

  • <sys/kernel_types.h>

  • <mach/vm_types.h>

Функции

  • Объявление

    Objective C

    void mbuf_adj ( mbuf_t mbuf, int len );

    Параметры

    mbuf

    mbuf цепочка для обрезки.

    len

    Число байтов для обрезки от mbuf цепочки.

    Обсуждение

    Обрезки len байты от mbuf. Если длина больше, чем нуль, байты обрезаются от передней стороны mbuf. Если длина является меньше, чем нуль, байты обрезаются от конца mbuf цепочки.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_adjustlen ( mbuf_t mbuf, int amount );

    Параметры

    mbuf

    mbuf для корректировки.

    amount

    Число байтов постепенно увеличивает длину.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Добавляет сумма к mbuf len. Проверяет, что новая длина допустима (больше, чем или равный нулю и меньше, чем максимальная сумма данных, которые могут храниться в mbuf). Эта функция не будет корректировать поле длины заголовка пакета или влиять на любой другой mbufs в цепочке.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Объявление

    Objective C

    errno_t mbuf_align_32 ( mbuf_t mbuf, size_t len );

    Параметры

    mbuf

    mbuf.

    len

    Минимальная длина пространства, которое должно следовать за новым расположением данных.

    Возвращаемое значение

    0 на успехе, errno ошибка при отказе.

    Обсуждение

    mbuf_align_32 является заменой для M_ALIGN и MH_ALIGN. mbuf_align_32 установит указатель данных на расположение, выровненное на четырехбайтовой границе с, по крайней мере, 'len' байты между указателем данных и концом блока данных.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_alloccluster ( mbuf_how_t how, size_t *size, caddr_t *addr );

    Параметры

    how

    Блокирование или неблокирование.

    size

    Указатель на размер требуемого кластера. Размеры до 2048 будут окружены к 2048; размеры, больше, чем 2048 и до 4 096 будут окружены к 4 096. Размеры, больше, чем 4 096, будут окружены к 16 384.

    addr

    Указатель на адрес требуемого кластера.

    Возвращаемое значение

    0 на успехе или ENOMEM, если отказ. Если запросы вызывающей стороны, больше, чем 4 096 байтов и система, будут неспособны выполнить запрос вследствие отсутствия гигантской поддержки кластеров на основе конфигурации, то эта подпрограмма возвратит ENOTSUP. В этом случае вызывающей стороне советуют использовать 4 096 байтов или меньший во время запросов subseqent.

    Обсуждение

    Выделите кластер, который может позже быть присоединен к mbuf путем вызова mbuf_attachcluster (). Выделенный кластер может также быть освобожден (не будучи присоединен к mbuf) путем вызова mbuf_freecluster (). В данный момент эта подпрограмма или возвратит кластер 2048, 4096 или 16 384 байта в зависимости от требуемого размера. Обратите внимание на то, что кластеры, больше, чем 4 096 байтов, не могли бы быть доступными во всех конфигурациях; вызывающая сторона должна дополнительно проверить на ENOTSUP (см. ниже).

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Объявление

    Objective C

    errno_t mbuf_allocpacket ( mbuf_how_t how, size_t packetlen, unsigned int *maxchunks, mbuf_t *mbuf );

    Параметры

    how

    Блокирование или неблокирование

    packetlen

    Общая длина пакета mbuf, чтобы быть выделенным. Длина должна быть больше, чем нуль.

    maxchunks

    Указатель ввода/вывода на максимальное количество mbufs сегментов, составляющих цепочку. На вводе, если maxchunks является NULL, или значение, на которое указывает maxchunks, является нулем, пакет будет составлен из так немногих же или стольких же буферных сегментов по мере необходимости для адаптации длине. Выделение перестанет работать с ENOBUFS, если число сегментов, которые требуют, будет слишком маленьким, и сумма максимального размера каждого отдельного сегмента является меньше, чем длина пакета. На выводе, если выделение успешно выполняется и maxchunks является не-NULL, это укажет на фактическое число выделенных сегментов. Дополнительные примечания для packetlen, больше, чем 4 096 байтов: вызывающая сторона может передать не-NULL maxchunks и инициализировать его с нулем, таким образом, что на успех, это может узнать, допускает ли конфигурация системы больше, чем 4 096-байтовые кластерные выделения путем проверения значения, на которое указывает maxchunks. Когда гигантские кластеры доступны, или 3 блока иначе, например, запрос на 9 018 байтов может привести к 1 блоку.

    Upon

    успех, *mbuf будет ссылкой на новый mbuf.

    Возвращаемое значение

    Возвраты 0 на успех или следующий код ошибки: EINVAL - Недопустимый параметр ENOMEM - Недостаточно памяти доступный ENOBUFS - Буферы, не достаточно большие для максимального количества блоков, требуют

    Обсуждение

    Выделите mbuf цепочку для хранения единственного пакета требуемой длины. Согласно требуемой длине, будет создаваться цепочка mbufs. Тип mbuf будет установлен в MBUF_TYPE_DATA. Вызывающая сторона может указать максимальное количество буфера.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_allocpacket_list ( unsigned int numpkts, mbuf_how_t how, size_t packetlen, unsigned int *maxchunks, mbuf_t *mbuf );

    Параметры

    numpkts

    Число пакетов для выделения

    how

    Блокирование или неблокирование

    packetlen

    Общая длина пакета mbuf, чтобы быть выделенным. Длина должна быть больше, чем нуль.

    maxchunks

    Указатель ввода/вывода на максимальное количество mbufs сегментов, составляющих цепочку. На вводе, если maxchunks является нулем, или значение, на которое указывает maxchunks, является нулем, пакет будет сделан из так немногих же или стольких же буферных сегментов по мере необходимости для адаптации длине. Выделение перестанет работать с ENOBUFS, если число сегментов, которые требуют, будет слишком маленьким, и сумма максимального размера каждого отдельного сегмента является меньше, чем длина пакета. На выводе, если выделение успешно выполняется и maxchunks не является нулем, это укажет на фактическое число выделенных сегментов. Дополнительные примечания для packetlen, больше, чем 4 096 байтов: вызывающая сторона может передать не-NULL maxchunks и инициализировать его с нулем, таким образом, что на успех, это может узнать, допускает ли конфигурация системы больше, чем 4 096-байтовые кластерные выделения путем проверения значения, на которое указывает maxchunks. Когда гигантские кластеры доступны, или 3 блока иначе, например, запрос на 9 018 байтов может привести к 1 блоку.

    Upon

    успех, *mbuf будет ссылкой на новый mbuf.

    Возвращаемое значение

    Возвраты 0 на успех или следующий код ошибки: EINVAL - Недопустимый параметр ENOMEM - Недостаточно памяти доступный ENOBUFS - Буферы, не достаточно большие для максимального количества блоков, требуют

    Обсуждение

    Выделите связанный список пакетов. Согласно требуемой длине, каждый пакет будет сделанный из цепочки одного или более mbufs. Тип mbuf будет установлен в MBUF_TYPE_DATA. Вызывающая сторона может указать максимальное количество элемента для каждой mbuf цепочки, составляющей пакет.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Объявление

    Objective C

    errno_t mbuf_attachcluster ( mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf, caddr_t extbuf, void (*extfree)(caddr_t, u_int, caddr_t), size_t extsize, caddr_t extarg );

    Параметры

    how

    Блокирование или неблокирование.

    type

    Тип mbuf, если mbuf является не-NULL; иначе проигнорированный.

    mbuf

    Указатель на адрес mbuf; если ноль, mbuf будет выделен, иначе, он должен указать на допустимый адрес mbuf. Если предоставленный пользователями mbuf уже будет присоединен к кластеру, то текущий кластер будет освобожден, прежде чем mbuf присоединяется к предоставленному внешнему буферу. Обратите внимание на то, что эта подпрограмма может возвратить различный mbuf_t, чем тот, в котором Вы передали.

    extbuf

    Адрес внешнего буфера.

    extfree

    Свободная подпрограмма для внешнего буфера; вызывающая сторона требуется, чтобы, определил подпрограмму, которая будет вызвана, когда будет освобожден mbuf.

    extsize

    Размер внешнего буфера.

    extarg

    Частное значение, которое будет передано свободной подпрограмме, когда это вызовут в это время mbuf, освобождено.

    Возвращаемое значение

    0 на успехе EINVAL - Недопустимый параметр ENOMEM - Недостаточно доступной памяти

    Обсуждение

    Присоедините внешний буфер как кластер для mbuf. Если mbuf укажет на NULL mbuf_t, то mbuf будет выделен для Вас. Если mbuf укажет на не-NULL mbuf_t, то предоставленный пользователями mbuf будет использоваться вместо этого. Вызывающая сторона ответственна за выделение внешнего буфера путем вызова mbuf_alloccluster ().

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Объявление

    Objective C

    errno_t mbuf_clear_csum_performed ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf, содержащий пакет.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Очищает аппаратные флаги контрольной суммы и значения.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_clear_csum_requested ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf, содержащий пакет.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Эта функция очищает флаги запроса контрольной суммы.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_clear_vlan_tag ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf, содержащий пакет.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Эта функция очистит любой тег VLAN, связанный с mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    mbuf_t mbuf_concatenate ( mbuf_t dst, mbuf_t src );

    Параметры

    dst

    Целевая mbuf цепочка.

    src

    Источник mbuf цепочка.

    Возвращаемое значение

    Указатель на верхнюю часть связанной mbuf цепочки. Это должно быть обработано как обновленная целевая mbuf цепочка; вызывающая сторона больше не должна отсылать к исходному src или dst mbuf цепочку. Если исходным dst mbuf цепочка является NULL, иначе это возвращает NULL.

    Обсуждение

    Свяжите mbuf цепочку src к dst, использующему m_next, и возвратите цепочку, представляющую связанную цепочку. Подпрограмма не предотвращает две цепочки различных типов mbuf, которые будут связаны, и при этом она не изменяет заголовка пакета в целевой цепочке. Поэтому это - ответственность вызывающей стороны гарантировать, что законченный конкатенировал, mbuf цепочка корректна для дальнейших использований.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.6 и позже.

  • Объявление

    Objective C

    errno_t mbuf_copy_pkthdr ( mbuf_t dest, const mbuf_t src );

    Параметры

    src

    mbuf, с которого будет скопирован заголовок пакета.

    mbuf

    mbuf, в который будет скопирован заголовок пакета.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Копирует заголовок пакета от src до dest.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_copyback ( mbuf_t mbuf, size_t offset, size_t length, const void *data, mbuf_how_t how );

    Параметры

    mbuf

    Первый mbuf в цепочке, который скопирует данные в в.

    offset

    Смещение в байтах для пропуска прежде, чем скопировать данные.

    length

    Длина, в байтах, данных для копирования в в mbuf цепочку.

    data

    Указатель на данные в адресном пространстве ядра.

    how

    Блокирование или неблокирование.

    Возвращаемое значение

    0 на успех, EINVAL или ENOBUFS на отказ.

    Обсуждение

    Данные копий от буфера до mbuf цепочки. mbuf_copyback увеличит цепочку для адаптации указанному буферу.

    Если mbuf_copydata будет неспособен выделить достаточно mbufs для роста цепочки, то ENOBUFS будет возвращен. mbuf цепочка будет короче, чем ожидаемый, но все данные до конца mbuf цепочки будут допустимы.

    Если смещение будет указано, то mbuf_copyback пропустит это много байтов в mbuf цепочке прежде, чем начать писать буфер в в цепочку. Если mbuf цепочка не будет содержать это, то много байтов, mbufs будут выделены для создавания пространства.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_copydata ( const mbuf_t mbuf, size_t offset, size_t length, void *out_data );

    Параметры

    mbuf

    mbuf цепочка для копирования данных из.

    offset

    Смещение в к mbuf, чтобы начать копировать.

    length

    Число байтов для копирования.

    out_data

    Указатель на расположение, где будут скопированы данные.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Данные копий из mbuf в к указанному буферу. Если данные будут храниться в цепочке mbufs, то данные будут скопированы с каждого mbuf в цепочке, пока не были скопированы байты длины.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_copym ( const mbuf_t src, size_t offset, size_t len, mbuf_how_t how, mbuf_t *new_mbuf );

    Параметры

    src

    Источник mbuf.

    offset

    Смещение в mbuf, чтобы начать копировать с.

    len

    Число байтов для копирования.

    how

    Блокировать или не блокировать, который является вопросом.

    new_mbuf

    На успех, недавно выделенный mbuf.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Копии len байты от смещения от src до нового mbuf. Если исходный mbuf будет содержать заголовок пакета, то новый mbuf будет содержать подобный заголовок пакета за исключением любых тегов, которые могут быть связаны с исходным mbuf. если теги должны быть скопированы в новый mbuf, mbuf_dup () должен использоваться вместо этого.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void * mbuf_data ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Указатель на данные в mbuf.

    Обсуждение

    Возвращает указатель на запуск данных в этом mbuf. Могут быть дополнительные данные по цепочечному mbufs. Данные, которые Вы ищете, могут не быть фактически непрерывными, если они охватывают больше чем один mbuf. Кроме того, данные, которые фактически непрерывны, не могли бы быть представлены физически непрерывными страницами; см. дальнейшие комментарии в mbuf_data_to_physical. Используйте mbuf_len для определения длины доступных данных в этом mbuf. Если структура данных Вы хотите получить доступ к стрэдлам два mbufs в цепочке, или использовать mbuf_pullup, чтобы получить данные, непрерывные в одном mbuf или скопировать части данных от каждого mbuf в к непрерывному буферу. Используя mbuf_pullup имеет преимущество не необходимости скопировать данные. С другой стороны, если Вы не удостоверяетесь, что в mbuf существует пространство, mbuf_pullup может привести к сбою и освободить mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    addr64_t mbuf_data_to_physical ( void *ptr );

    Параметры

    ptr

    Указатель на данные сохранен в mbuf.

    Возвращаемое значение

    Физический адрес на 64 бита mbuf данных или NULL, если ptr не указывает на данные, хранившие в mbuf.

    Обсуждение

    mbuf_data_to_physical является заменой для mcl_to_paddr. Данный подсказка возвратилась из mbuf_data mbuf_datastart, mbuf_data_to_physical возвратит адрес phyical для того блока данных. Обратите внимание на то, что даже при том, что данные находятся в фактически непрерывном промежутке, базовые физические страницы не могли бы быть физически непрерывными. Из-за этого вызывающие стороны должны гарантировать для вызова этой подпрограммы для каждой границы страницы. Драйверы устройств, имеющие дело с DMA, строго призваны использовать IOMbufNaturalMemoryCursor и спуститься со списка векторов вместо того, чтобы использовать этот интерфейс для получения физического адреса. Использованию этой подпрограммы поэтому обескураживают.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void * mbuf_datastart ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Указатель на самое маленькое значение для данных.

    Обсуждение

    Возвращает запуск пространства, отложенного для того, чтобы хранить данные в mbuf. Данные mbuf могут прибыть из кластера или быть встроены в саму mbuf структуру. Указатель данных, полученный mbuf_data, может не быть в начале данных (mbuf_leadingspace, будет ненулевым). Эта функция возвратит указатель, соответствующий mbuf_data () - mbuf_leadingspace ().

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_dup ( const mbuf_t src, mbuf_how_t how, mbuf_t *new_mbuf );

    Параметры

    src

    Источник mbuf.

    how

    Блокирование или неблокирование.

    new_mbuf

    На успех, недавно выделенный mbuf.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Точно копирует mbuf цепочку. Если исходный mbuf будет содержать заголовок пакета (включая теги), то новый mbuf будет иметь то же содержание заголовка пакета и копию каждого тега связанными с исходным mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    mbuf_flags_t mbuf_flags ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Флаги.

    Обсуждение

    Возвращает флаги набора.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    mbuf_t mbuf_free ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf к свободному.

    Возвращаемое значение

    Следующий mbuf в цепочке.

    Обсуждение

    Освобождает единственный mbuf. Не обычно используемый, потому что это не касается остальной части mbufs цепочки.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_freecluster ( caddr_t addr, size_t size );

    Параметры

    addr

    Адрес кластера.

    size

    Фактический размер кластера.

    Обсуждение

    Освободите кластер, ранее выделенный вызовом mbuf_alloccluster (). Вызывающая сторона должна передать фактический размер кластера, как возвращено mbuf_alloccluster (), который в этой точке должен быть любой 2048, 4096 или 16 384 байта.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Объявление

    Objective C

    void mbuf_freem ( mbuf_t mbuf );

    Параметры

    mbuf

    Первый mbuf в цепочке к свободному.

    Обсуждение

    Освобождает цепочку ссылки mbufs через mnext.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    int mbuf_freem_list ( mbuf_t mbuf );

    Параметры

    mbuf

    Первый mbuf в связанном списке к свободному.

    Возвращаемое значение

    Число mbufs освобождено.

    Обсуждение

    Освобождает связанный список mbuf цепочек. Обходы через mnextpackt и делают эквивалент mbuf_freem каждому.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_get ( mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf );

    Параметры

    how

    Блокирование или неблокирование.

    type

    Тип mbuf.

    mbuf

    mbuf.

    Возвращаемое значение

    0 на успехе, errno ошибка при отказе.

    Обсуждение

    Выделяет mbuf без кластера для внешних данных.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_get_csum_requested ( mbuf_t mbuf, mbuf_csum_request_flags_t *request, u_int32_t *value );

    Параметры

    mbuf

    mbuf, содержащий пакет.

    request

    Флаги, указывающие, какие контрольные суммы требуют на этот пакет.

    value

    Этот параметр в настоящее время не поддерживается.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Эта функция используется драйвером для определения, какие операции контрольной суммы должны быть выполнены в аппаратных средствах.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    u_int32_t mbuf_get_mhlen ( void );

    Возвращаемое значение

    Число байтов доступных данных.

    Обсуждение

    Эта подпрограмма возвращает число байтов данных в заголовке пакета mbuf. Это эквивалентно устаревшему макросу MHLEN.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.6 и позже.

  • Объявление

    Objective C

    u_int32_t mbuf_get_minclsize ( void );

    Возвращаемое значение

    Минимальное число байтов перед кластером будет использоваться.

    Обсуждение

    Эта подпрограмма возвращает минимальное число байтов данных, прежде чем будет использоваться внешний кластер. Это эквивалентно устаревшему макросу MINCLSIZE.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.7 и позже.

  • Объявление

    Objective C

    u_int32_t mbuf_get_mlen ( void );

    Возвращаемое значение

    Число байтов доступных данных.

    Обсуждение

    Эта подпрограмма возвращает число байтов данных в нормальном mbuf, т.е. mbuf, который не является заголовком пакета, ни один с внешним кластером, присоединенным к нему. Это эквивалентно устаревшему макросу MLEN.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.6 и позже.

  • Объявление

    Objective C

    mbuf_traffic_class_t mbuf_get_traffic_class ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf для получения класса трафика.

    Возвращаемое значение

    Класс трафика

    Обсуждение

    Получите класс трафика mbuf пакета

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.7 и позже.

  • Объявление

    Objective C

    errno_t mbuf_get_tso_requested ( mbuf_t mbuf, mbuf_tso_request_flags_t *request, u_int32_t *value );

    Параметры

    mbuf

    mbuf, содержащий пакет.

    request

    Флаги, указывающие, какие значения требуют на этот пакет.

    value

    Требуемое значение.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Эта функция используется драйвером для определения, какие операции контрольной суммы должны быть выполнены в аппаратных средствах.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.6 и позже.

  • Объявление

    Objective C

    errno_t mbuf_get_vlan_tag ( mbuf_t mbuf, u_int16_t *vlan );

    Параметры

    mbuf

    mbuf, содержащий пакет.

    vlan

    Семейство протокола aux данных для добавления.

    Возвращаемое значение

    0 на успех иначе errno ошибка. ENXIO указывает, что не установлен тег VLAN.

    Обсуждение

    Эта функция используется драйверами, поддерживающими аппаратное маркирование VLAN для определения, какому vlan этот пакет принадлежит. Для дифференциации между случаем, где тег VLAN является нулем и случаем, где нет никакого тега VLAN эта функция возвратит ENXIO, когда не будет никакого vlan.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_getcluster ( mbuf_how_t how, mbuf_type_t type, size_t size, mbuf_t *mbuf );

    Параметры

    how

    Блокирование или неблокирование.

    type

    Тип mbuf.

    size

    Размер кластера, который будет выделен. Поддерживаемые размеры для кластера быть 2048, 4096, или 16384. Любое другое значение с возвратом EINVAL. Обратите внимание на то, что кластеры, больше, чем 4 096 байтов, не могли бы быть доступными во всех конфигурациях; вызывающая сторона должна дополнительно проверить на ENOTSUP (см. ниже).

    mbuf

    mbuf кластер будет присоединен.

    Возвращаемое значение

    0 на успехе, errno ошибка при отказе. Если Вы указали NULL для mbuf, какое-либо промежуточное звено mbuf, который, возможно, был выделен, будет освобожден. Если Вы указываете, что значение mbuf в *mbuf, mbuf_mclget не освободит его. EINVAL - Недопустимый параметр ENOMEM - Недостаточно памяти доступный ENOTSUP - вызывающая сторона запросила больше, чем 4 096-байтовый кластер и система неспособны выполнить его вследствие отсутствия гигантской поддержки кластеров на основе конфигурации. В этом случае вызывающей стороне советуют использовать 4 096 байтов или меньший во время последующих запросов.

    Обсуждение

    Выделите кластер требуемого размера и присоедините его к mbuf для использования в качестве внешних данных. Если mbuf укажет на NULL mbuf_t, то mbuf будет выделен для Вас. Если mbuf указывает на не-NULL mbuf_t, mbuf_getcluster может возвратить различный mbuf_t, чем тот, в котором Вы передали.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_gethdr ( mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf );

    Параметры

    how

    Блокирование или неблокирование.

    type

    Тип mbuf.

    mbuf

    mbuf.

    Возвращаемое значение

    0 на успехе, errno ошибка при отказе.

    Обсуждение

    Выделяет mbuf без кластера для внешних данных. Устанавливает флаг, чтобы указать, что существует заголовок пакета и инициализирует заголовок пакета.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_getpacket ( mbuf_how_t how, mbuf_t *mbuf );

    Параметры

    how

    Блокирование или неблокирование.

    mbuf

    На успех *mbuf будет ссылкой на новый mbuf.

    Возвращаемое значение

    0 на успехе, errno ошибка при отказе.

    Обсуждение

    Выделите mbuf, выделите и присоедините кластер и установите флаг заголовка пакета.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_inbound_modified ( mbuf_t mbuf );

    Параметры

    mbuf

    Измененный mbuf.

    Обсуждение

    Эта функция очистит флаги контрольной суммы, чтобы указать, что не должна использоваться аппаратная контрольная сумма. Любые данные изменения фильтра должны вызвать эту функцию на mbuf прежде, чем передать пакет штабель. Если фильтр изменяет пакет в пути, влияющем на любую контрольную сумму, фильтр ответственен или за изменение контрольной суммы для компенсации изменения или за проверку контрольной суммы прежде, чем внести изменения и затем изменить данные и вычислить новую контрольную сумму, только если исходная контрольная сумма была допустима.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_inet6_cksum ( mbuf_t mbuf, int protocol, u_int32_t offset, u_int32_t length, u_int16_t *csum );

    Параметры

    mbuf

    mbuf (или цепочка mbufs) содержащий пакет.

    protocol

    Нулевое или ненулевое значение. Ненулевое значение указывает транспортный протокол, используемый для псевдо контрольной суммы заголовка.

    offset

    Нулевое или ненулевое значение; если последний, это указывает смещение транспортного заголовка с начала mbuf.

    length

    Общая (ненулевая) длина транспортного сегмента.

    csum

    Указатель на переменную контрольной суммы; на успех эта подпрограмма возвратит расчетную интернет-контрольную сумму через эту переменную. Вызывающая сторона должна установить его в ненулевое значение.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    @discussions Вычисляет 16-разрядный 1's дополнительная интернет-контрольная сумма транспортного сегмента с или без псевдо контрольной суммы заголовка данного пакета IPv6. Если вызывающая сторона указывает ненулевой транспортный протокол, контрольная сумма возвратилась, будет также включать псевдо контрольную сумму заголовка для соответствующего транспортного заголовка. Иначе, никакой парсинг заголовка не будет сделан, и вызывающая сторона может использовать это для вычисления интернет-контрольной суммы произвольного промежутка данных.

    Эта подпрограмма не изменяет содержание пакета. Если вызывающая сторона укажет ненулевой протокол и/или смещение, то подпрограмма ожидает, что полный заголовок (ки) протокола будет присутствовать в начале первого mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Объявление

    Objective C

    errno_t mbuf_inet_cksum ( mbuf_t mbuf, int protocol, u_int32_t offset, u_int32_t length, u_int16_t *csum );

    Параметры

    mbuf

    mbuf (или цепочка mbufs) содержащий пакет.

    protocol

    Нулевое или ненулевое значение. Ненулевое значение указывает транспортный протокол, используемый для псевдо контрольной суммы заголовка.

    offset

    Нулевое или ненулевое значение; если последний, это указывает смещение транспортного заголовка с начала mbuf.

    length

    Общая (ненулевая) длина транспортного сегмента.

    csum

    Указатель на переменную контрольной суммы; на успех эта подпрограмма возвратит расчетную интернет-контрольную сумму через эту переменную. Вызывающая сторона должна установить его в ненулевое значение.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    @discussions Вычисляет 16-разрядный 1's дополнительная интернет-контрольная сумма транспортного сегмента с или без псевдо контрольной суммы заголовка данного пакета IPv4. Если вызывающая сторона указывает ненулевой транспортный протокол, контрольная сумма возвратилась, будет также включать псевдо контрольную сумму заголовка для соответствующего транспортного заголовка. Иначе, никакой парсинг заголовка не будет сделан, и вызывающая сторона может использовать это для вычисления интернет-контрольной суммы произвольного промежутка данных.

    Эта подпрограмма не изменяет содержание пакета. Если вызывающая сторона укажет ненулевой протокол и/или смещение, то подпрограмма ожидает, что полный заголовок протокола будет присутствовать в начале первого mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Объявление

    Objective C

    int mbuf_is_traffic_class_privileged ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf для получения состояния от.

    Возвращаемое значение

    Ненулевой, если привилегированный, 0 иначе.

    Обсуждение

    Возвращает привилегированное состояние класса трафика пакета, указанного mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.8 и позже.

  • Объявление

    Objective C

    size_t mbuf_leadingspace ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Число неиспользованных байтов в начале mbuf.

    Обсуждение

    Определяет пространство, доступное в mbuf продолжение текущих данных.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    size_t mbuf_len ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Длина.

    Обсуждение

    Получает длину данных в этом mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    size_t mbuf_maxlen ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Максимальная длина данных для этого mbuf.

    Обсуждение

    Получает максимальную длину данных, которые могут храниться в этом mbuf. Это значение предполагает, что указатель данных был установлен в запуск возможного диапазона для того указателя (mbuf_data_start).

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_mclget ( mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf );

    Параметры

    how

    Блокирование или неблокирование.

    type

    Тип mbuf.

    mbuf

    mbuf кластер будет присоединен.

    Возвращаемое значение

    0 на успехе, errno ошибка при отказе. Если Вы указали NULL для mbuf, какое-либо промежуточное звено mbuf, который, возможно, был выделен, будет освобожден. Если Вы указываете, что значение mbuf в *mbuf, mbuf_mclget не освободит его.

    Обсуждение

    Выделите кластер и присоедините его к mbuf для использования в качестве внешних данных. Если mbuf укажет на NULL mbuf_t, то mbuf будет выделен для Вас. Если mbuf указывает на не-NULL mbuf_t, mbuf_mclget может возвратить различный mbuf_t, чем тот, в котором Вы передали.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    int mbuf_mclhasreference ( mbuf_t mbuf );

    Параметры

    mbuf

    mbuf с кластером для тестирования.

    Возвращаемое значение

    0, если нет никакой ссылки другим mbuf, 1 иначе.

    Обсуждение

    Проверьте, ссылается ли на кластер mbuf другой mbuf. Ссылки могут быть взяты, например, в результате вызова к mbuf_split или mbuf_copym

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    mbuf_t mbuf_next ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Следующий mbuf в цепочке.

    Обсуждение

    Возвращает следующий mbuf в цепочке.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    mbuf_t mbuf_nextpkt ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    nextpkt.

    Обсуждение

    Получает следующий пакет от mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_outbound_finalize ( mbuf_t mbuf, u_int32_t protocol_family, size_t protocol_offset );

    Параметры

    mbuf

    mbuf, который должен быть завершен.

    protocol_family

    Семейство протокола пакета в mbuf.

    protocol_offset

    Смещение от запуска mbuf к заголовку протокола. Для пакета IP с заголовком Ethernet это было бы длиной заголовка Ethernet.

    Обсуждение

    Эта функция «завершит» пакет, позволяющий Ваш код проверить заключительный пакет.

    Существует много операций, выполняющихся в аппаратных средствах, таких как вычисление контрольных сумм. Эта функция выполнит в программном обеспечении различные opterations, которые, как планировали, будут сделаны в аппаратных средствах. Будущие операции могут включать обработку IPSec или поддержку VLAN. Если Вы перенаправляете пакет к новому интерфейсу, который может не иметь той же поддержки оборудования или инкапсуляции пакета, необходимо вызвать эту функцию, чтобы вынудить штабель вычислить и заполнить контрольные суммы. Это обойдет аппаратные контрольные суммы, но даст Вам полный пакет для работы с. Если необходимо проверить аспекты пакета, который может быть сгенерирован аппаратными средствами, необходимо вызвать эту функцию для получения приблизительного заключительного пакета. Если Вы планируете изменить пакет всегда, необходимо вызвать эту функцию.

    Эта функция должна быть вызвана прежде, чем изменить любые исходящие пакеты.

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

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_pkthdr_adjustlen ( mbuf_t mbuf, int amount );

    Параметры

    mbuf

    mbuf, содержащий заголовок пакета.

    amount

    Число байтов для корректировки поля длины заголовка пакета.

    Обсуждение

    Корректирует длину пакета в заголовке пакета.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.5 и позже.

  • Объявление

    Objective C

    void * mbuf_pkthdr_header ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf, содержащий заголовок пакета.

    Возвращаемое значение

    Указатель на заголовок пакета.

    Обсуждение

    Возвращает указатель на заголовок пакета.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    size_t mbuf_pkthdr_len ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf, содержащий заголовок пакета с длиной, которая будет изменена.

    Возвращаемое значение

    Длина, в байтах, пакета.

    Обсуждение

    Возвращает длину, как сообщается заголовком пакета.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    ifnet_t mbuf_pkthdr_rcvif ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf, содержащий заголовок пакета.

    Возвращаемое значение

    Ссылка на интерфейс.

    Обсуждение

    Возвращает интерфейс, на котором был получен пакет. Этот funciton не изменяет подсчет ссылок интерфейса. Интерфейс только допустим столько, сколько mbuf не освобожден, и rcvif для mbuf не изменяется. Возьмите ссылку в интерфейсе, который Вы выпустите позже прежде, чем сделать любое следующее: освободите mbuf, измените rcvif, передайте mbuf любой функции, которая может освободить mbuf или изменить rcvif.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_pkthdr_setheader ( mbuf_t mbuf, void *header );

    Параметры

    mbuf

    mbuf, содержащий заголовок пакета.

    ifnet

    Указатель на заголовок.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Устанавливает указатель на заголовок пакета.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_pkthdr_setlen ( mbuf_t mbuf, size_t len );

    Параметры

    mbuf

    mbuf, содержащий заголовок пакета.

    len

    Новая длина пакета.

    Обсуждение

    Устанавливает длину пакета в заголовке пакета.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_pkthdr_setrcvif ( mbuf_t mbuf, ifnet_t ifp );

    Параметры

    mbuf

    mbuf, содержащий заголовок пакета.

    ifnet

    Ссылка на интерфейс.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Устанавливает интерфейс, на котором был получен пакет.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_prepend ( mbuf_t *mbuf, size_t len, mbuf_how_t how );

    Параметры

    mbuf

    mbuf для подготовки данных к. Это может измениться, если новый mbuf должен быть выделен или может быть NULL, если работа перестала работать.

    len

    Длина, в байтах, чтобы предварительно ожидаться к mbuf.

    how

    Блокирование или неблокирование.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Предварительно ожидайте len байты к mbuf. Если существует пространство (mbuf_leadingspace> = len), данные mbuf ptr изменяются, и тот же mbuf возвращается. Если нет никакого пространства, новый mbuf может выделяться и предварительно ожидаться к mbuf цепочке. Если работа перестала работать, mbuf может быть освобожден (*mbuf, будет NULL).

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_pulldown ( mbuf_t src, size_t *offset, size_t length, mbuf_t *location );

    Параметры

    src

    Запуск mbuf цепочки.

    offset

    Передача в указателе на значение со смещением данных Вы интересуетесь созданием непрерывного. На успех это будет перезаписано со смещением от mbuf, возвращенного в расположении.

    length

    Длина данных, которые должны быть сделаны непрерывными.

    location

    На успех *расположение будет mbuf, в котором находятся данные.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Сделайте байты длины при смещении в mbuf цепочке непрерывными. Ничто перед байтами смещения в цепочке не будет изменено. По возврату расположение будет mbuf, в котором данные непрерывны, и смещение будет смещением в этом mbuf, в котором расположены данные. В случае отказа будет освобождена mbuf цепочка.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_pullup ( mbuf_t *mbuf, size_t len );

    Параметры

    mbuf

    mbuf в цепочке данные должен быть непрерывным в.

    len

    Число байтов для получения по запросу от следующего mbuf (s).

    Возвращаемое значение

    0 на успех иначе errno ошибка. В случае ошибки была освобождена mbuf цепочка.

    Обсуждение

    Переместите следующие len байты в к mbuf от другого mbufs в цепочке. Это обычно используется для получения IP и TCP или заголовка UDP, непрерывного в первом mbuf. Если mbuf_pullup перестанет работать, то вся mbuf цепочка будет освобождена.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_set_csum_performed ( mbuf_t mbuf, mbuf_csum_performed_flags_t flags, u_int32_t value );

    Параметры

    mbuf

    mbuf, содержащий пакет.

    flags

    Флаги, указывающие, какие аппаратные операции контрольной суммы выполнялись.

    value

    Если флаг MBUF_CSUM_DID_DATA установлен, значение должно быть установлено в значение TCP или заголовка UDP, как вычислено аппаратными средствами.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Это используется драйвером для указания к штабелю, какие операции контрольной суммы выполнялись в аппаратных средствах.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_set_traffic_class ( mbuf_t mbuf, mbuf_traffic_class_t tc );

    Параметры

    mbuf

    mbuf для установки класса трафика на. @tc класс трафика

    Возвращаемое значение

    0 на успехе, EINVAL, если передается плохой параметр

    Обсуждение

    Установите класс трафика mbuf пакета.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.7 и позже.

  • Объявление

    Objective C

    errno_t mbuf_set_vlan_tag ( mbuf_t mbuf, u_int16_t vlan );

    Параметры

    mbuf

    mbuf, содержащий пакет.

    vlan

    Семейство протокола aux данных для добавления.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Эта функция используется интерфейсами, поддерживающими маркирование VLAN в аппаратных средствах. Эта функция установит свойства в mbuf для указания, для какого vlan пакет был получен.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_setdata ( mbuf_t mbuf, void *data, size_t len );

    Параметры

    mbuf

    mbuf.

    data

    Новый указатель оценивает за данные.

    len

    Новая длина данных в mbuf.

    Возвращаемое значение

    0 на успехе, errno ошибка при отказе.

    Обсуждение

    Устанавливает данные и значения длины для mbuf. Значение данных должно быть в допустимом диапазоне. В случае mbuf с кластером значение данных должно указать на расположение в кластере и значении данных плюс длина, должны быть меньше, чем конец кластера. Для данных, встроенных непосредственно в mbuf (никакой кластер), значение данных должно упасть где-нибудь между запуском и концом области данных в mbuf и данных +, длина должна также быть в том же диапазоне.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_setflags ( mbuf_t mbuf, mbuf_flags_t flags );

    Параметры

    mbuf

    mbuf.

    flags

    Флаги, которые должны быть установлены, все другие флаги, будут очищены. Определенные флаги, такие как MBUF_EXT не могут быть изменены.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Устанавливает набор флагов набора.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_setflags_mask ( mbuf_t mbuf, mbuf_flags_t flags, mbuf_flags_t mask );

    Параметры

    mbuf

    mbuf.

    flags

    Флаги, которые должны быть установлены или очищены. Определенные флаги, такие как MBUF_EXT не могут быть изменены.

    mask

    Управление маски, какие флаги будут изменены.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Полезный для установки или очистки отдельных флагов. Проще, чем вызов mbuf_setflags (m, mbuf_flags (m) | M_FLAG).

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_setlen ( mbuf_t mbuf, size_t len );

    Параметры

    mbuf

    mbuf.

    len

    Новая длина.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Устанавливает длину данных в этом пакете. Старайтесь не установить длину по пространству, доступному в mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_setnext ( mbuf_t mbuf, mbuf_t next );

    Параметры

    mbuf

    mbuf.

    next

    Новый следующий mbuf.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Устанавливает следующий mbuf в цепочке.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_setnextpkt ( mbuf_t mbuf, mbuf_t nextpkt );

    Параметры

    mbuf

    mbuf.

    nextpkt

    Новый следующий пакет.

    Обсуждение

    Устанавливает следующий пакет, присоединенный к этому mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_settype ( mbuf_t mbuf, mbuf_type_t new_type );

    Параметры

    mbuf

    mbuf.

    new_type

    Новый тип.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Устанавливает тип mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_split ( mbuf_t src, size_t offset, mbuf_how_t how, mbuf_t *new_mbuf );

    Параметры

    src

    mbuf, который будет разделен.

    offset

    Смещение в буфере, где должен быть разделен mbuf.

    how

    Блокирование или неблокирование.

    new_mbuf

    На успех, вторую половину разделения mbuf цепочка.

    Возвращаемое значение

    0 на успех иначе errno ошибка. В случае отказа будет сохранена исходная mbuf цепочка, переданная в к src.

    Обсуждение

    Разделите mbuf цепочку при определенном смещении.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_stats ( struct mbuf_stat *stats );

    Параметры

    stats

    Хранение для копирования статистики в в.

    Обсуждение

    Получите mbuf статистику.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_tag_allocate ( mbuf_t mbuf, mbuf_tag_id_t module_id, mbuf_tag_type_t type, size_t length, mbuf_how_t how, void **data_p );

    Параметры

    mbuf

    mbuf для присоединения этого тега к.

    module_id

    Идентификатор модуля, возвращенный mbuf_tag_id_find.

    type

    Значение типа на 16 битов. Для данного module_id можно использовать много различных типов тега.

    length

    Длина, в байтах, для выделения для хранения, которое будет связано с этим, наклеивает этот mbuf.

    how

    Укажите, хотите ли Вы блокировать и ожидать памяти, если память не сразу доступна.

    data_p

    По успешному возврату *data_p укажет на буфер, выделенный для mtag.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Выделите тег mbuf. Теги Mbuf позволяют различным частям штабеля тегировать mbufs с данными, которые переместятся с mbuf через штабель.

    Теги могут только быть добавлены к mbufs с заголовками пакета (флаг MBUF_PKTHDR установлен). Теги Mbuf освобождены, когда mbuf освобожден или когда вызывают mbuf_tag_free.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_tag_find ( mbuf_t mbuf, mbuf_tag_id_t module_id, mbuf_tag_type_t type, size_t *length, void **data_p );

    Параметры

    mbuf

    mbuf тег присоединен.

    module_id

    Идентификатор модуля, возвращенный mbuf_tag_id_find.

    type

    Тип на 16 битов тега для нахождения.

    length

    На успех длина данных будет хранилищем в *длина.

    data_p

    По успешному возврату *data_p укажет на буфер, выделенный для mtag.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Сочтите данные связанными с тегом mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    void mbuf_tag_free ( mbuf_t mbuf, mbuf_tag_id_t module_id, mbuf_tag_type_t type );

    Параметры

    mbuf

    mbuf тег был выделен на.

    module_id

    ID тега к свободному.

    type

    Тип тега к свободному.

    Обсуждение

    Освобождает ранее выделенный тег mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    errno_t mbuf_tag_id_find ( const char *module_string, mbuf_tag_id_t *module_id );

    Параметры

    module_string

    Уникальная строка, идентифицирующая Ваш модуль. Пример: com.apple.nke. SharedIP.

    module_id

    По возврату, уникальному идентификатору для использования с функциями mbuf_tag_*. Этот идентификатор допустим, пока не перезагружается машина.

    Возвращаемое значение

    0 на успех иначе errno ошибка.

    Обсуждение

    Поиск ID модуля для строки. Если не будет никакого ID модуля, присвоенного этой строке, то новый ID модуля будет присвоен. Строка должна быть ID пакета kext. В случае тега, который будет совместно использован через многократный kexts, должна использоваться общая строка стиля ID пакета.

    Работа поиска не оптимизирована. Модуль должен вызвать эту функцию один раз во время запуска и chache ID модуля. ID модуля не будет resassigned до перезагрузок машины.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    size_t mbuf_trailingspace ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Число неиспользованных байтов после текущих данных.

    Обсуждение

    Определяет пространство, доступное в mbuf после текущих данных.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

  • Объявление

    Objective C

    mbuf_type_t mbuf_type ( const mbuf_t mbuf );

    Параметры

    mbuf

    mbuf.

    Возвращаемое значение

    Тип.

    Обсуждение

    Получает тип mbuf.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.4 и позже.

Типы данных

Посмотрите раздел Overview выше для документации уровня заголовка.

  • Класс трафика пакета

    Объявление

    Objective C

    typedef enum { MBUF_TC_BE = 0, MBUF_TC_BK = 1, MBUF_TC_VI = 2, MBUF_TC_VO = 3 } mbuf_traffic_class_t;

    Константы

    • MBUF_TC_BE

      MBUF_TC_BE

      Максимальные усилия, нормальный класс.

      Доступный в OS X v10.7 и позже.

    • MBUF_TC_BK

      MBUF_TC_BK

      Фон, низкий приоритет или массовый трафик.

      Доступный в OS X v10.7 и позже.

    • MBUF_TC_VI

      MBUF_TC_VI

      Интерактивное видео, постоянная скорость передачи, низкая задержка.

      Доступный в OS X v10.7 и позже.

    • MBUF_TC_VO

      MBUF_TC_VO

      Интерактивная речь, постоянная скорость передачи, самая низкая задержка.

      Доступный в OS X v10.7 и позже.

    Обсуждение

    Свойство, которые представляют категорию трафика пакета. Эта информация может использоваться драйвером и на канальном уровне.

    Оператор импорта

    Objective C

    #include <kpi_mbuf.h>;

    Доступность

    Доступный в OS X v10.7 и позже.

  • Объявление

    Objective C

    struct mbuf_stat { u_int32_t mbufs; /* mbufs obtained from page pool */ u_int32_t clusters; /* clusters obtained from page pool */ u_int32_t clfree; /* free clusters */ u_int32_t drops; /* times failed to find space */ u_int32_t wait; /* times waited for space */ u_int32_t drain; /* times drained protocols for space */ u_short mtypes[256]; /* type specific mbuf allocations */ u_int32_t mcfail; /* times m_copym failed */ u_int32_t mpfail; /* times m_pullup failed */ u_int32_t msize; /* length of an mbuf */ u_int32_t mclbytes; /* length of an mbuf cluster */ u_int32_t minclsize; /* min length of data to allocate a cluster */ u_int32_t mlen; /* length of data in an mbuf */ u_int32_t mhlen; /* length of data in a header mbuf */ u_int32_t bigclusters; /* number of big clusters */ u_int32_t bigclfree; /* number of big clustser free */ u_int32_t bigmclbytes; /* length of data in a big cluster */ };

    Поля

    mbufs

    Число mbufs (свободный или иначе).

    clusters

    Число кластеров (свободный или иначе).

    clfree

    Число свободных кластеров.

    drops

    Выделение числа раз перестало работать.

    wait

    Выделение числа раз блокируется.

    drain

    Функции дренажа протокола числа раз были вызваны.

    mtypes

    Массив количеств каждого типа mbuf выделяется.

    mcfail

    Число раз m_copym перестало работать.

    mpfail

    Число раз m_pullup перестало работать.

    msize

    Длина mbuf.

    mclbytes

    Длина mbuf кластера.

    minclsize

    Минимальная длина данных для выделения кластера. Что-либо меньшее, чем это должно быть помещено в цепочечный mbufs.

    mlen

    Длина данных в mbuf.

    mhlen

    Длина данных в mbuf с заголовком пакета.

    bigclusters

    Число больших кластеров.

    bigclfree

    Число неиспользованных больших кластеров.

    bigmclbytes

    Длина большого mbuf кластера.

    Обсуждение

    mbuf_stat содержит mbuf статистику.

    Доступность

    Доступный в OS X v10.6 и позже.

Константы

Посмотрите раздел Overview выше для документации уровня заголовка.

  • Контрольная сумма выполнила/запросила флаги.

    Объявление

    Objective C

    enum { MBUF_CSUM_DID_IP = 0x0100, MBUF_CSUM_IP_GOOD = 0x0200, MBUF_CSUM_DID_DATA = 0x0400, MBUF_CSUM_PSEUDO_HDR = 0x0800 };

    Константы

    • MBUF_CSUM_DID_IP

      MBUF_CSUM_DID_IP

      Указывает, что драйвер/аппаратные средства проверил контрольную сумму IP в аппаратных средствах.

      Доступный в OS X v10.4 и позже.

    • MBUF_CSUM_IP_GOOD

      MBUF_CSUM_IP_GOOD

      Указывает, была ли контрольная сумма IP хороша или плоха. Только допустимый, когда установлен MBUF_CSUM_DID_IP.

      Доступный в OS X v10.4 и позже.

    • MBUF_CSUM_DID_DATA

      MBUF_CSUM_DID_DATA

      Указывает, что были вычислены TCP или контрольная сумма UDP. Значение для контрольной суммы, вычисленной в аппаратных средствах, должно быть передано как второй параметр mbuf_set_csum_performed. Аппаратные средства вычислили, значение контрольной суммы может быть получено с помощью второго параметра, переданного mbuf_get_csum_performed. Это должно быть сделано для IPv4 или IPv6.

      Доступный в OS X v10.4 и позже.

    • MBUF_CSUM_PSEUDO_HDR

      MBUF_CSUM_PSEUDO_HDR

      Если установлено, это указывает, что значение контрольной суммы для MBUF_CSUM_DID_DATA включает псевдо значение заголовка. Если это не будет установлено, то штабель вычислит, псевдо заголовок оценивают и добавляют это к контрольной сумме. Когда MBUF_CSUM_DID_DATA установлен, значение этого бита только допустимо.

      Доступный в OS X v10.4 и позже.

    Обсуждение

    Mbufs часто содержат пакеты. Некоторая поддержка оборудования, выполняющая контрольные суммы в аппаратных средствах. Драйвер использует эти флаги для передачи к штабелю контрольных сумм, вычисленных в аппаратных средствах.

  • Контрольная сумма выполнила/запросила флаги.

    Объявление

    Objective C

    enum { MBUF_TSO_IPV4 = 0x100000, MBUF_TSO_IPV6 = 0x200000 };

    Константы

    • MBUF_CSUM_REQ_IP

      MBUF_CSUM_REQ_IP

      Указывает, что контрольная сумма IP еще не была вычислена.

      Доступный в OS X v10.4 и позже.

    • MBUF_CSUM_REQ_TCP

      MBUF_CSUM_REQ_TCP

      Указывает, что контрольная сумма TCP еще не была вычислена.

      Доступный в OS X v10.4 и позже.

    • MBUF_CSUM_REQ_UDP

      MBUF_CSUM_REQ_UDP

      Указывает, что контрольная сумма UDP еще не была вычислена.

      Доступный в OS X v10.4 и позже.

    • MBUF_CSUM_REQ_TCPIPV6

      MBUF_CSUM_REQ_TCPIPV6

      Указывает, что контрольная сумма TCP для IPv6 еще не была вычислена.

      Доступный в OS X v10.7 и позже.

    • MBUF_CSUM_REQ_UDPIPV6

      MBUF_CSUM_REQ_UDPIPV6

      Указывает, что контрольная сумма UDP для IPv6 еще не была вычислена.

      Доступный в OS X v10.7 и позже.

    Обсуждение

    Mbufs часто содержат пакеты. Некоторая поддержка оборудования, выполняющая контрольные суммы в аппаратных средствах. Штабель использует эти флаги для указания к драйверу, какое вычисление контрольной суммы должно быть обработано в драйвером/аппаратными средствами. Эти флаги будут только установлены, если драйвер укажет, что поддерживает соответствующие контрольные суммы с помощью ifnet_set_offload.

  • Константы, определяющие mbuf флаги. Только упомянутые ниже флаги могут быть установлены или получены.

    Объявление

    Objective C

    enum { MBUF_EXT = 0x0001 , /* has associated external storage */ MBUF_PKTHDR = 0x0002 , /* start of record */ MBUF_EOR = 0x0004 , /* end of record */ MBUF_LOOP = 0x0040 , /* packet is looped back */ MBUF_BCAST = 0x0100 , /* send/received as link-level broadcast */ MBUF_MCAST = 0x0200 , /* send/received as link-level multicast */ MBUF_FRAG = 0x0400 , /* packet is a fragment of a larger packet */ MBUF_FIRSTFRAG = 0x0800 , /* packet is first fragment */ MBUF_LASTFRAG = 0x1000 , /* packet is last fragment */ MBUF_PROMISC = 0x2000 , /* packet is promiscuous */ MBUF_HASFCS = 0x4000 /* packet has FCS */ };

    Константы

    • MBUF_EXT

      MBUF_EXT

      Указывает, что этот mbuf имеет внешние данные.

      Доступный в OS X v10.4 и позже.

    • MBUF_PKTHDR

      MBUF_PKTHDR

      Указывает, что этот mbuf имеет заголовок пакета.

      Доступный в OS X v10.4 и позже.

    • MBUF_EOR

      MBUF_EOR

      Указывает, что этот mbuf является концом записи.

      Доступный в OS X v10.4 и позже.

    • MBUF_LOOP

      MBUF_LOOP

      Указывает, что этот пакет циклично выполняется назад.

      Доступный в OS X v10.7 и позже.

    • MBUF_BCAST

      MBUF_BCAST

      Указывает, что этот пакет будет отправлен или был получен как brodcast.

      Доступный в OS X v10.4 и позже.

    • MBUF_MCAST

      MBUF_MCAST

      Указывает, что этот пакет будет отправлен или был получен как многоадресная передача.

      Доступный в OS X v10.4 и позже.

    • MBUF_FRAG

      MBUF_FRAG

      Указывает, что этот пакет является фрагментом большего пакета.

      Доступный в OS X v10.4 и позже.

    • MBUF_FIRSTFRAG

      MBUF_FIRSTFRAG

      Указывает, что этот пакет является первым фрагментом.

      Доступный в OS X v10.4 и позже.

    • MBUF_LASTFRAG

      MBUF_LASTFRAG

      Указывает, что этот пакет является последним фрагментом.

      Доступный в OS X v10.4 и позже.

    • MBUF_PROMISC

      MBUF_PROMISC

      Указывает, что этот пакет был только получен, потому что интерфейс находится в неразборчивом режиме. Это должно быть установлено функцией демультиплексора. Эти пакеты будут отброшены, будучи переданным любым интерфейсным фильтрам.

      Доступный в OS X v10.4 и позже.

  • Метод выделения mbuf.

    Объявление

    Objective C

    enum { MBUF_WAITOK = 0, /* Ok to block to get memory */ MBUF_DONTWAIT = 1 /* Don't block, fail if blocking would be required */ };

    Константы

    • MBUF_WAITOK

      MBUF_WAITOK

      Позвольте вызову выделять mbuf для блокирования.

      Доступный в OS X v10.4 и позже.

    • MBUF_DONTWAIT

      MBUF_DONTWAIT

      Не позволяйте mbuf вызову выделения блокировать, если блокирование сразу является необходимым сбоем и возвратом.

      Доступный в OS X v10.4 и позже.

    Обсуждение

    Блокирование заставит трубу быть отброшенной. Если труба отбрасывается, другие потоки могут внести изменения в сети структур данных. Это может привести к очень плохим вещам, происходящим. При блокировании на вводе наш выходной путь может также повлиять на производительность. Существуют некоторые случаи, где совершение звонка блокирования приемлемо. Когда в сомнении, используйте MBUF_DONTWAIT.

  • Типы mbufs.

    Объявление

    Objective C

    enum { MBUF_TYPE_FREE = 0, /* should be on free list */ MBUF_TYPE_DATA = 1, /* dynamic (data ) allocation */ MBUF_TYPE_HEADER = 2, /* packet header */ MBUF_TYPE_SOCKET = 3, /* socket structure */ MBUF_TYPE_PCB = 4, /* protocol control block */ MBUF_TYPE_RTABLE = 5, /* routing tables */ MBUF_TYPE_HTABLE = 6, /* IMP host tables */ MBUF_TYPE_ATABLE = 7, /* address resolution tables */ MBUF_TYPE_SONAME = 8, /* socket name */ MBUF_TYPE_SOOPTS = 10, /* socket options */ MBUF_TYPE_FTABLE = 11, /* fragment reassembly header */ MBUF_TYPE_RIGHTS = 12, /* access rights */ MBUF_TYPE_IFADDR = 13, /* interface address */ MBUF_TYPE_CONTROL = 14, /* extra-data protocol message */ MBUF_TYPE_OOBDATA = 15 /* expedited data */ };

    Константы

    • MBUF_MT_FREE

      MBUF_MT_FREE

      Указывает, что mbuf свободен и находится на очереди свободного mbufs. Если Вы находите, что mbuf, на который у Вас есть ссылка, имеет этот тип, что-то пошло ужасно неправильно.

    • MBUF_MT_DATA

      MBUF_MT_DATA

      Указывает, что этот mbuf используется, чтобы хранить данные.

    • MBUF_MT_HEADER

      MBUF_MT_HEADER

      Указывает, что этот mbuf имеет заголовок пакета, это - вероятно, пакет.

    • MBUF_MT_SOCKET

      MBUF_MT_SOCKET

      Структура сокета.

    • MBUF_MT_PCB

      MBUF_MT_PCB

      Блок управления протокола.

    • MBUF_MT_RTABLE

      MBUF_MT_RTABLE

      Запись таблицы маршрутизации.

    • MBUF_MT_HTABLE

      MBUF_MT_HTABLE

      Таблицы хостов IMP???.

    • MBUF_MT_ATABLE

      MBUF_MT_ATABLE

      Табличные данные определения адресов.

    • MBUF_MT_SONAME

      MBUF_MT_SONAME

      Имя сокета, обычно sockaddr некоторого вида.

    • MBUF_MT_FTABLE

      MBUF_MT_FTABLE

      Заголовок повторной сборки фрагмента.

    • MBUF_MT_RIGHTS

      MBUF_MT_RIGHTS

      Права доступа.

    • MBUF_MT_IFADDR

      MBUF_MT_IFADDR

      Интерфейсный адрес.

    • MBUF_MT_CONTROL

      MBUF_MT_CONTROL

      Сообщение протокола дополнительных данных (управляющее сообщение).

    • MBUF_MT_OOBDATA

      MBUF_MT_OOBDATA

      Из данных полосы.

    Обсуждение

    Некоторые mbufs представляют пакеты, некоторые represnt данные, ожидающие на сокетах. Другие mbufs хранят управляющую информацию или другие различные структуры. Тип mbuf используется для хранения, какие данные mbuf содержит.