Mykyta Iziumtsev(MykytaI) replied on github web page:

platform/linux-generic/include/odp_pcapng.h
line 14
@@ -0,0 +1,56 @@
+/* Copyright (c) 2018, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+#include <protocols/eth.h>
+#include <protocols/ip.h>
+#include <odp/api/plat/packet_inlines.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/fcntl.h>
+#include <unistd.h>
+#include <pthread.h>


Comment:
I guess only <stdint.h> and <sys/inotify.h> are needed here.

> Mykyta Iziumtsev(MykytaI) wrote:
> Is there any reason to put all of this into separate header file ? From what 
> I see only one .c file is using it, so why not move it there ?


>> Mykyta Iziumtsev(MykytaI) wrote:
>> IMHO, only `int pcapng_fds[PKTIO_MAX_QUEUES]` belong here, the rest is 
>> superfluous or belongs to global context. Why not initialize pcapng_fds[0 .. 
>> ARRAY_SIZE - 1] = -1, open the pipes from inotify thread and assign fds when 
>> the header is already written out ?


>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>> @apalos No, start and stop are good times for this as well. An application 
>>> can stop a device, reconfigure it, and then restart it, so having that be 
>>> the trigger for capture file cleanup and close makes sense.


>>>> Ilias Apalodimas(apalos) wrote:
>>>> wireshark re-defines them in every c file they want to use them. Keeping 
>>>> in mind this is the pcapng file format specification, these are high 
>>>> unlikely to change.
>>>> 
>>>> The only relevant library i found is 
>>>> ntar(https://www.winpcap.org/ntar/changelog.htm) but it seems abandoned 
>>>> for many many years.


>>>>> Ilias Apalodimas(apalos) wrote:
>>>>> @Bill-Fischofer-Linaro pcapng_destroy() is called from _pktio_stop() 
>>>>> which is called from odp_pktio_term_global().
>>>>> pcapng_prepare() on the other hand is called from odp_pktio_start(). Want 
>>>>> me to move it in odp_pktio_init_global()?


>>>>>> Ilias Apalodimas(apalos) wrote:
>>>>>> This essentially "reads" the inotify triggers for opening/closing the 
>>>>>> fifos and sets the appropriate variables for starting/stopping the 
>>>>>> pcapng dump on fifos. Will try to make it easier to read on the final PR


>>>>>>> Ilias Apalodimas(apalos) wrote:
>>>>>>> will fix


>>>>>>>> Ilias Apalodimas(apalos) wrote:
>>>>>>>> will fix


>>>>>>>>> Ilias Apalodimas(apalos) wrote:
>>>>>>>>> I'll check and update for the final PR


>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>> General cleanup should be part of `odp_term_global()` processing. 
>>>>>>>>>> Presumably `odp_pktio_close()` should also do cleanup for specific 
>>>>>>>>>> pktios.


>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>> A few comments about what this routine is doing would be very 
>>>>>>>>>>> helpful here. This is not easy code to follow. Modularizing it into 
>>>>>>>>>>> some  `static inline` helpers might also make the logic simpler.


>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>> This is redundant. If `len > 0` then by definition `len != -1`.


>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>>> This fails for multi-segment packets. `odp_packet_data(pkt)` is 
>>>>>>>>>>>>> shorthand for `odp_packet_offset(pkt, 0, NULL, NULL)` so you 
>>>>>>>>>>>>> don't know how long the first segment really is. First cut would 
>>>>>>>>>>>>> be to only dump the first segment, so correct code is:
>>>>>>>>>>>>> ```
>>>>>>>>>>>>> uint32_t seg_len;
>>>>>>>>>>>>> char *buf = (char *)odp_packet_offset(packets[i], 0, &seg_len, 
>>>>>>>>>>>>> NULL);
>>>>>>>>>>>>> ```
>>>>>>>>>>>>> And use `seg_len` rather than `pkt_len` in this routine.


>>>>>>>>>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>>>>>>>>>> Does pcapng not supply a `.h` file for these "magic numbers" and 
>>>>>>>>>>>>>> associated structs?


>>>>>>>>>>>>>>> Ilias Apalodimas(apalos) wrote:
>>>>>>>>>>>>>>> Will fix. This will also remove the requirement of manually 
>>>>>>>>>>>>>>> deleting the fifos


>>>>>>>>>>>>>>>> muvarov wrote
>>>>>>>>>>>>>>>> odp_global_data_s->main_pid needs to be here.


https://github.com/Linaro/odp/pull/435#discussion_r166566828
updated_at 2018-02-07 10:31:08

Reply via email to