Курсовая работа: Реализация сети в операционной системе Linux
netif_rx(skb);
/* обновляем статистику */
dev->last_rx = jiffies;
((struct net_device_stats *)(dev->priv))->rx_packets++; /* количествополучений */
((struct net_device_stats *)(dev->priv))->rx_bytes += size; /* количествополученныхбайт */
/*
* Если случится что-то плохое во время доставки, netif_rx()
* сделало amark_bh(INET_BH) для нас и будет работать
* когда мы войдем в bottom-halv.
*/
}
ip_finish_output() net/ipv4/ip_output
определяет девайс для данного маршрута
вызывает функцию девайса[=dev_queue_xmit]
ip_forward -net/ipv4/ip_forward
в этом файле хорошие комментарии
проверяем роутер
если пакет никому не предназначен то дропаем
если плохой TTLаналогично
если неможет пакет отфорвардится то отправляем icmpпакет ICMP_DEST_UNREACH
если необходимо шлем пакет ICMPHOSTREDIRECT
копируем и уничтожаем старый пакет
уменьшаем TTL
если необходимо устанавливаем нужные опции ip_forward_optionsв
ip_forward_finish
ip_rcvnet/ipv4/ip_input.cглавная функция получения ipпакета
проверяем ошибки
плохая длина
версия