On Mon, Jan 16, 2006 at 10:36:48AM +0200, Dmitry Pryanishnikov wrote:
кто из них и балуется с DF). Я бы (если бы вдруг нужно было использовать именно Linux) в такой ситуации искал в ядре нужную "рукоятку" (игнорировать DF ведь не просто, а _очень_ просто), а если ее нет, то можно и самому патч написать.
Сделал: net/ipv4/ipip.c 521,522c521 < u16 df = 0x0000; ---
u16 df = tiph->frag_off;
572,574c571,573 < // if (tiph->frag_off) < // mtu = dst_mtu(&rt->u.dst) - sizeof(struct iphdr); < // else ---
if (tiph->frag_off) mtu = dst_mtu(&rt->u.dst) - sizeof(struct iphdr); else
585c584 < // df |= (old_iph->frag_off&htons(IP_DF)); ---
df |= (old_iph->frag_off&htons(IP_DF));
587,591c586,590 < // if ((old_iph->frag_off&htons(IP_DF)) && mtu < ntohs(old_iph->tot_len)) { < // icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu)); < // ip_rt_put(rt); < // goto tx_error; < // } ---
if ((old_iph->frag_off&htons(IP_DF)) && mtu < ntohs(old_iph->tot_len)) { icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu)); ip_rt_put(rt); goto tx_error; }
Работает. Критикуйте :) -- Edward Melnik. =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message