[Click] set_ip_header semantics
Bart Braem
bart.braem at ua.ac.be
Tue Nov 4 05:57:54 EST 2008
Hi Eddie,
On 31 Oct 2008, at 01:37, Eddie Kohler wrote:
> Bart Braem wrote:
>> Students were doing exercise where they had to change an IP header
>> of a packet. What they did was use ip_header to get the current
>> ip_header, take a copy of that struct, modify it and then set it
>> with set_ip_header. And that did not work.
>> We were also confused in the beginning, until we realised the
>> semantics of set_ip_header: it only sets the pointers and it does
>> not copy anything. In fact, do we understand correctly that the
>> set_ip_header should be treated as an annotation function and that
>> the pointer set with it should lie within the packet boundaries?
>
> That's exactly correct. In fact, since commit
> f03d536cc8392f673fb90da298ebbacb77eb3ca1, we assert that the pointer
> is in range.
>
I did not notice that patch, the assertion certainly makes sense
there. Thanks!
>> We suggest to update the network header methods to better reflect
>> these semantics.
>> We could introduce naming like set_ip_header_anno.
>> But we also suggest to change the call itself and use an offset
>> parameter instead of a pointer to the data. This way confusion is
>> impossible because it is clear that the network_header methods work
>> on in-packet data.
>> What do you think?
>
> I see what you mean, but don't you think the assertion is enough?
> Perhaps a name change to _anno() would be useful, but
> set_ip_header() is very well established by this point. My tendency
> is to leave things as they are.
In my opinion a name change would be better, but I do understand that
then also similar functions for all other headers would have to be
changed as well to stay consistent. Which is quite a large job, but I
am willing to create the patch myself.
It will be a large job, but it can only improve the internal
consistency and the accessibility of Click to new users.
Regards,
Bart
--
Bart Braem
PATS research group - IBBT
Dept. of Mathematics and Computer Sciences
University of Antwerp
Campus Middelheim, G3.30
Middelheimlaan 1
B-2020 Antwerpen, Belgium
Phone: +32 (0)3 265.32.91
Fax: +32 (0)3 265.37.77
Web: www.pats.ua.ac.be
More information about the click
mailing list