> As far as i know, the code that implements PMTU discovery is located > in net/ipv4/ip_output.c. > It is independent of ipsec, it is valuable for all ipv4.
But when v r using IPsec the size of payload increases n hence when the packet is send outward it can b dropped due to its size..So v have again to do a PMTUd in the for IPsec packets..But this cud have been avoided if the IPsec itself consists of an PMTU discovery so that the packet can b fragmented while doing IPsec processing to appropriate size.. > I do not understand exactly what you need? > I successfully saw the PMTU discovery mechanism working, so... > Also don't forget that emitter packet must have DF flag set. > Can you explain more your problem? > #Louis. Also i wanna know that where the hell these guys r receiving packets frm for to do IPsec processing.. I dont find anything here in XFRM its just processing the buff but frm where v r getting the packet so that it can b processed for IPsec... > > int ip_fragment <http://lxr.linux.no/ident?a=arm;i=ip_fragment>(struct > sk_buff <http://lxr.linux.no/ident?a=arm;i=sk_buff> > *skb<http://lxr.linux.no/ident?a=arm;i=skb>, > int (*output <http://lxr.linux.no/ident?a=arm;i=output>)(struct > sk_buff<http://lxr.linux.no/ident?a=arm;i=sk_buff> > *)) > 429 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L429> { > 430 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L430> struct > iphdr <http://lxr.linux.no/ident?a=arm;i=iphdr> *iph; > 431 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L431> int > raw<http://lxr.linux.no/ident?a=arm;i=raw>= 0; > 432 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L432> int > ptr<http://lxr.linux.no/ident?a=arm;i=ptr> > ; > 433 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L433> struct > net_device <http://lxr.linux.no/ident?a=arm;i=net_device> > *dev<http://lxr.linux.no/ident?a=arm;i=dev> > ; > 434 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L434> struct > sk_buff <http://lxr.linux.no/ident?a=arm;i=sk_buff> *skb2; > 435 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L435> unsigned > int mtu <http://lxr.linux.no/ident?a=arm;i=mtu>, hlen, > left<http://lxr.linux.no/ident?a=arm;i=left>, > len <http://lxr.linux.no/ident?a=arm;i=len>, ll_rs; > 436 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L436> int > offset<http://lxr.linux.no/ident?a=arm;i=offset> > ; > 437 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L437> int > not_last_frag; > 438 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L438> struct > rtable <http://lxr.linux.no/ident?a=arm;i=rtable> *rt = (struct > rtable<http://lxr.linux.no/ident?a=arm;i=rtable> > *)skb > <http://lxr.linux.no/ident?a=arm;i=skb>->dst<http://lxr.linux.no/ident?a=arm;i=dst> > ; > 439 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L439> int > err<http://lxr.linux.no/ident?a=arm;i=err>= 0; > 440 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L440> > 441 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L441> > dev<http://lxr.linux.no/ident?a=arm;i=dev>= rt->u. > dst > <http://lxr.linux.no/ident?a=arm;i=dst>.dev<http://lxr.linux.no/ident?a=arm;i=dev> > ; > 442 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L442> > 443 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L443> */** > 444 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L444> * * Point > into the IP datagram header.* > 445 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L445> * */* > 446 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L446> > 447 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L447> iph > skb<http://lxr.linux.no/ident?a=arm;i=skb> > ->nh.iph; > 448 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L448> > 449 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L449> if ( > unlikely <http://lxr.linux.no/ident?a=arm;i=unlikely>((iph->frag_off & > htons<http://lxr.linux.no/ident?a=arm;i=htons> > (IP_DF <http://lxr.linux.no/ident?a=arm;i=IP_DF>)) && > !skb<http://lxr.linux.no/ident?a=arm;i=skb>->local_df)) > { > 450 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L450> > icmp_send<http://lxr.linux.no/ident?a=arm;i=icmp_send> > (skb <http://lxr.linux.no/ident?a=arm;i=skb>, > ICMP_DEST_UNREACH<http://lxr.linux.no/ident?a=arm;i=ICMP_DEST_UNREACH>, > ICMP_FRAG_NEEDED <http://lxr.linux.no/ident?a=arm;i=ICMP_FRAG_NEEDED>, > 451 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L451> > htonl<http://lxr.linux.no/ident?a=arm;i=htonl> > (dst_pmtu > <http://lxr.linux.no/ident?a=arm;i=dst_pmtu>(&rt->u.dst<http://lxr.linux.no/ident?a=arm;i=dst> > ))); > 452 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L452> > kfree_skb<http://lxr.linux.no/ident?a=arm;i=kfree_skb> > (skb <http://lxr.linux.no/ident?a=arm;i=skb>); > 453 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L453> return - > EMSGSIZE <http://lxr.linux.no/ident?a=arm;i=EMSGSIZE>; > 454 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L454> } > 455 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L455> > 456 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L456> */** > 457 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L457> * * Setup > starting values.* > 458 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L458> * */* > 459 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L459> > 460 <http://lxr.linux.no/source/net/ipv4/ip_output.c?a=arm#L460> hlen = > iph->ihl * 4; > > > 2005/8/21, [EMAIL PROTECTED] <[EMAIL PROTECTED]>: >> >> >> hii .. >> Can anyone help me in figuring out that whether the linux 2.6 kernel has >> got a >> way for ICMP handling for IPsec/Ipv4 or not.If yes plzz tell me the >> files >> whether its done... Or just guide me a lil in short whether the 2.6 >> kernel >> has successfull handling of PMTU for IPsec/Ipv4 n where they r exactly >> doing so... >> thanx.. >> >> >> >> >> >> - >> To unsubscribe from this list: send the line "unsubscribe netdev" in >> the body of a message to [EMAIL PROTECTED] >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html