Ссылка in_arp.h
Включенные заголовки
<sys/kernel_types.h>
-
Объявление
Objective C
errno_t inet_arp_handle_input ( ifnet_t ifp, u_int16_t arpop, const struct sockaddr_dl *sender_hw, const struct sockaddr_in *sender_ip, const struct sockaddr_in *target_ip );
Параметры
interface
Интерфейс пакет был получен на.
arp_op
arp работа, ARPOP_REQUEST или ARPOP_REPLY
sender_hw
Аппаратный адрес отправителя от arp полезной нагрузки.
sender_ip
IP-адрес отправителя от arp полезной нагрузки.
target_ip
Целевой IP-адрес от arp полезной нагрузки.
Возвращаемое значение
0 на успехе или errno ошибке оценивают отказом.
Обсуждение
Эта функция должна быть вызвана кодом, обрабатывающим входящие arp пакеты. Вызывающая сторона должна проанализировать пакет ARP для вытаскивания работы и соответствующих адресов. Если ответ будет требоваться, то функция proto_media_send_arp будет вызвана.
Эта функция будет поиск отправитель в таблице маршрутизации и добавлять arp запись при необходимости. Любые пакеты с очередями, ожидающие arp разрешения, будут также переданы.
Оператор импорта
Objective C
#include <in_arp.h>;
Доступность
Доступный в OS X v10.4 и позже.
-
Объявление
Objective C
void inet_arp_init_ifaddr ( ifnet_t interface, ifaddr_t ipaddr );
Параметры
interface
Интерфейс пакет был получен на.
ipaddr
IP интерфейсный адрес.
Обсуждение
Эта функция должна быть вызвана в двух местах, когда IP-адрес добавляется и когда изменяется аппаратный адрес. Эта функция установит ifaddr_t для использования с IP функции ARP. Эта функция также инициирует передачу безвозмездного пакета ARP.
Когда SIOCSIFADDR ioctl будет обработан, параметр данных будет ifaddr_t. Если это - IP-адрес, inet_arp_init_ifaddr нужно вызвать. Это обычно выполняется в ioctl обработчике присоединения протокола.
Когда обработчик событий для присоединения протокола получает событие KEV_DL_LINK_ADDRESS_CHANGED, обработчик событий должен вызвать inet_arp_init_ifaddr для каждого интерфейсного IP-адреса.
Для примера см. bsd/net/ether_inet_pr_module.c в xnu. Поиск inet_arp_init_ifaddr.
Оператор импорта
Objective C
#include <in_arp.h>;
Доступность
Доступный в OS X v10.4 и позже.
-
Объявление
Objective C
errno_t inet_arp_lookup ( ifnet_t interface, const struct sockaddr_in *ip_dest, struct sockaddr_dl *ll_dest, size_t ll_dest_len, route_t hint, mbuf_t packet );
Параметры
interface
Интерфейс пакет пересылается.
ip_dest
IP место назначения пакета.
ll_dest
На выводе, месте назначения канального уровня.
ll_dest_len
Длина буфера для ll_dest.
hint
Любая подсказка маршрутизации передается из протокола.
packet
Передаваемый пакет.
Возвращаемое значение
Может возвратить ошибку, такую как EHOSTDOWN или ENETUNREACH. Если эта функция возвращает EJUSTRETURN, пакет был поставлен в очередь и будет отправлен, когда получен arp ответ. Если какое-либо другое значение возвращается, вызывающая сторона ответственна за избавление от пакета.
Обсуждение
Эта функция проверит таблицу маршрутизации на кэшируемую arp запись или инициирует запрос arp для разрешения IP-адреса к адресу канального уровня.
Записи Arp сохранены в таблице маршрутизации. Эта функция будет поиск IP место назначения в таблице маршрутизации. Если место назначения потребует передачи шлюзу, то маршрут шлюза будет искаться. Запись маршрута проверена, чтобы определить, известен ли адрес назначения канального уровня. Если неизвестный, arp функция генерации для IP, присоединенного к интерфейсу, вызвана для создания пакета запроса ARP.
Оператор импорта
Objective C
#include <in_arp.h>;
Доступность
Доступный в OS X v10.4 и позже.