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? >>>> >>>> >>>> >>>> >>>> >>> >> >> > >
