Здравствуйте, заранее прошу прощение за тупые вопросы).
Разьясните механику.
На TCP сокет приходят данные, которые должны быть IP дейтаграммами.
В дальнейшем эти дейтаграммы пишутся в /dev/net/tun.
Если данные, которые пришли по TCP это НЕкорректные IP пакеты, при попытке записи оных в tun, возникает ошибка и errno устанавливается в 22(Invalid argument).
Вопросы:
1)В tun можно писать только IPv4 корректные дайтаграммы, формат которых проверяется в дальнейшем драйвером tun устройства?
2)Должен ли я проверять формат входящих по TCP данных на их корректность, жертвуя производительностью? То, что это именно IP пакет. И не позволит ли отсутсвие такой проверки провести злоумышленнику атаку по типу перполнения буфера или чего то подобного ?
3)Вдруг, кто уже расчитывал MTU для IP пакета с опциями, секономтье пож. время. Максимальный размер IP заголовка с опциями это сколько ?
4) Из TCP/UDP сокета ГАРАНТИРОВАНО за один сис.вызов read считывается ровно 1 TCP/UDP пакет или может половинка вернуться?
5)Как ioctl-ом сделать то, что делает ifconfig tun0 192.168.3.1 up? SIOCSIFADDR ??? Это будет равносильно?
Копаться в чужих исходниках прошу не посылать. Заранее спасибо. =)