Philip,

Thanks for your time! Appreciate it.

Regards,
-devi

On Tue, Nov 15, 2016 at 2:02 PM, Philip Prindeville <
[email protected]> wrote:

> 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 <philipp_subx@redfish-
> solutions.com> 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]>
>> 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/~n
>> ickm/libevent-book/Ref7_evbuffer.html
>>
>> Regards,
>> -devi
>>
>> On Tue, Nov 15, 2016 at 12:27 PM, Devi Prasad Ivaturi <[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]> 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]>
>>>> 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]>
>>>> 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]>
>>>> wrote:
>>>>
>>>> How can I modify a byte or two directly in evbuffer data?
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>
>

Reply via email to