I understood that the first time.

If you’re using a TAP interface to read packets, you’d still need to re-inject 
them back into the kernel via a write to TAP.

But it sounds to me like you should be using tc and iptables (at least if 
you’re using Linux).

You don’t want to be doing this in user-space (unless you’re using DPDK).

Either way, libevent is probably not the droid you’re looking for.



> On Nov 15, 2016, at 2:56 PM, Prasad <[email protected]> wrote:
> 
> I am not inserting any new data - only need to modify existing packet header 
> in-place.
> 
> On Tue, Nov 15, 2016 at 1:50 PM, Philip Prindeville 
> <[email protected] 
> <mailto:[email protected]>> wrote:
> Nothing in the description of evbuffer_pullup() suggests to me that this 
> would need to happen.
> 
> There’s no discussion about freeing the returned memory, for instance, which 
> would need to happen if it were a separate buffer.
> 
> But there’s a simple test: try calling evbuffer_pullup() on the same buffer 
> twice before draining it, and see if the pointer returned both times is the 
> same…
> 
> -Philip
> 
> 
>> On Nov 15, 2016, at 1:29 PM, Devi Prasad Ivaturi <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Also, isn't the buffer returned by pullup() is only for peeking and NOT 
>> modifying the buffer?
>> I understand it that way from 
>> http://www.wangafu.net/~nickm/libevent-book/Ref7_evbuffer.html 
>> <http://www.wangafu.net/~nickm/libevent-book/Ref7_evbuffer.html>
>> 
>> Regards,
>> -devi
>> 
>> On Tue, Nov 15, 2016 at 12:27 PM, Devi Prasad Ivaturi <[email protected] 
>> <mailto:[email protected]>> wrote:
>> In the front only, if you want to call it that way.
>> 
>> Say, I want to just modify the TTL or TOS values of IP header of a network 
>> packet (accessed using evbuffer API)
>> passing through my box: don't want to use pullup() which is costly, since, 
>> the IP header could be a few headers
>> away from the beginning (MAC + other enapsulations).
>> 
>> I don't understand how add_reference() would meet the need: I want to modify 
>> the bytes in the packet headers, from
>> less than a byte upto 16 bytes max.
>> 
>> Regards,
>> -devi
>> 
>> On Tue, Nov 15, 2016 at 11:35 AM, Philip Prindeville 
>> <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Where in the buffer is the data?  Is it near the front or not?
>> 
>> If it’s near the front, then use evbuffer_pullup().  Otherwise, you could 
>> provide your own underlying storage with evbuffer_add_reference().
>> 
>> 
>> 
>>> On Nov 15, 2016, at 11:58 AM, Devi Prasad Ivaturi <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> And I get the impression that these API are to insert data rather than 
>>> modify existing data.
>>> 
>>> 
>>> On Nov 15, 2016 10:43 AM, "Devi Prasad Ivaturi" <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> BTW, I did consider reserve/commit space API, but, thought they might be an 
>>> overkill. I prefer peeking the byte location and modifying it.
>>> 
>>> 
>>> On Nov 15, 2016 10:12 AM, "Devi Prasad Ivaturi" <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> How can I modify a byte or two directly in evbuffer data?
>>> 
>>> 
>>> 
>> 
>> 
>> 
> 
> 

Reply via email to