Bug 932 - Support IP_HDRINCL option for Ipv4RawSocket
Support IP_HDRINCL option for Ipv4RawSocket
Status: CLOSED FIXED
Product: ns-3
Classification: Unclassified
Component: internet
ns-3.8
All All
: P3 enhancement
Assigned To: ns-bugs
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-06-01 05:17 EDT by Hajime Tazaki
Modified: 2012-03-17 19:39 EDT (History)
2 users (show)

See Also:


Attachments
support IP_HDRINCL option into ipv4 raw socket (6.45 KB, patch)
2010-06-01 05:17 EDT, Hajime Tazaki
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Hajime Tazaki 2010-06-01 05:17:51 EDT
Created attachment 905 [details]
support IP_HDRINCL option into ipv4 raw socket

This patch support IP_HDRINCL socket option for ipv4 raw socket.
Users can specify IPv4 header by themselves, without depending on the network stack.

It will introduce
 - New attribute "IpHeaderInclude" into Ipv4RawSocketImpl
 - new method Ipv4L3Protocol::Send (Ptr<Packet> packet, Ipv4Header ipHeader, Ptr<Ipv4Route> route);
to support this.
Comment 1 Tom Henderson 2010-06-03 01:51:27 EDT
>  
>  void 
>  Ipv4L3Protocol::Send (Ptr<Packet> packet, 
> +                      Ipv4Header ipHeader,
> +                      Ptr<Ipv4Route> route)
> +{
> +  NS_LOG_FUNCTION (this << packet << ipHeader << route);
> +  Ipv4Header hdr;
> +  packet->RemoveHeader (hdr);
> +  SendRealOut (route, packet, hdr);
                                ^^^^
                                ipHeader?
> +}
> +
> +void 
> +Ipv4L3Protocol::Send (Ptr<Packet> packet, 
>              Ipv4Address source, 
>              Ipv4Address destination,
>              uint8_t protocol,
> diff -r 74fab02c0751 src/internet-stack/ipv4-l3-protocol.h
> --- a/src/internet-stack/ipv4-l3-protocol.h   Tue Jun 01 10:45:08 2010 +0900
> +++ b/src/internet-stack/ipv4-l3-protocol.h   Tue Jun 01 13:27:37 2010 +0900
> @@ -162,6 +162,15 @@
>     */
>    void Send (Ptr<Packet> packet, Ipv4Address source, 
>            Ipv4Address destination, uint8_t protocol, Ptr<Ipv4Route> route);
> +  /**
> +   * \param packet packet to send
> +   * \param ipHeader IP Heeader
                           ^^^^^^
                           Header (typo)

Otherwise, I am fine with the patch.
Comment 2 Hajime Tazaki 2010-06-03 18:26:18 EDT
(In reply to comment #1)
> >  
> >  void 
> >  Ipv4L3Protocol::Send (Ptr<Packet> packet, 
> > +                      Ipv4Header ipHeader,
> > +                      Ptr<Ipv4Route> route)
> > +{
> > +  NS_LOG_FUNCTION (this << packet << ipHeader << route);
> > +  Ipv4Header hdr;
> > +  packet->RemoveHeader (hdr);
> > +  SendRealOut (route, packet, hdr);
>                                 ^^^^
>                                 ipHeader?

Modified.

> > +}
> > +
> > +void 
> > +Ipv4L3Protocol::Send (Ptr<Packet> packet, 
> >              Ipv4Address source, 
> >              Ipv4Address destination,
> >              uint8_t protocol,
> > diff -r 74fab02c0751 src/internet-stack/ipv4-l3-protocol.h
> > --- a/src/internet-stack/ipv4-l3-protocol.h   Tue Jun 01 10:45:08 2010 +0900
> > +++ b/src/internet-stack/ipv4-l3-protocol.h   Tue Jun 01 13:27:37 2010 +0900
> > @@ -162,6 +162,15 @@
> >     */
> >    void Send (Ptr<Packet> packet, Ipv4Address source, 
> >            Ipv4Address destination, uint8_t protocol, Ptr<Ipv4Route> route);
> > +  /**
> > +   * \param packet packet to send
> > +   * \param ipHeader IP Heeader
>                            ^^^^^^
>                            Header (typo)
> 
> Otherwise, I am fine with the patch.

thanks.

pushed into ns-3-dev.
changeset 6334	c9373f264dfe
Comment 3 Hajime Tazaki 2010-06-03 21:27:54 EDT
(In reply to comment #2)

> pushed into ns-3-dev.
> changeset 6334    c9373f264dfe

I'm sorry, I had mistaken to apply a patch.
#Using mercurial queue across several branches makes me bad.....

I've pushed again.

http://code.nsnam.org/ns-3-dev/rev/464e8093700d
changeset 6336	464e8093700d