Changeset f57722d6 for lib


Ignore:
Timestamp:
06/27/18 11:20:26 (2 years ago)
Author:
Shane Alcock <salcock@…>
Branches:
cachetimestamps, develop, master, rc-4.0.4, ringdecrementfix, ringperformance
Children:
264f286c
Parents:
d228977 (diff), 95ca714 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'develop' of https://github.com/LibtraceTeam/libtrace into develop

Location:
lib
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • lib/format_atmhdr.c

    r2c457ec r32ee9b2  
    202202        NULL,                           /* fin_packet */
    203203        NULL,                           /* write_packet */
     204        NULL,                           /* flush_output */
    204205        atmhdr_get_link_type,           /* get_link_type */
    205206        NULL,                           /* get_direction */
  • lib/format_bpf.c

    r5e3f16c r32ee9b2  
    666666        NULL,                   /* fin_packet */
    667667        NULL,                   /* write_packet */
     668        NULL,                   /* flush_output */
    668669        bpf_get_link_type,      /* get_link_type */
    669670        bpf_get_direction,      /* get_direction */
  • lib/format_dag24.c

    ree6e802 r32ee9b2  
    529529        NULL,                           /* fin_packet */
    530530        NULL,                           /* write_packet */
     531        NULL,                           /* flush_output */
    531532        erf_get_link_type,              /* get_link_type */
    532533        erf_get_direction,              /* get_direction */
  • lib/format_dag25.c

    rcc9c9de r32ee9b2  
    15641564        NULL,                           /* fin_packet */
    15651565        dag_write_packet,               /* write_packet */
     1566        NULL,                           /* flush_output */
    15661567        erf_get_link_type,              /* get_link_type */
    15671568        erf_get_direction,              /* get_direction */
  • lib/format_dpdk.c

    r6d17620 r32ee9b2  
    21592159        dpdk_fin_packet,                    /* fin_packet */
    21602160        dpdk_write_packet,                  /* write_packet */
     2161        NULL,                               /* flush_output */
    21612162        dpdk_get_link_type,                 /* get_link_type */
    21622163        dpdk_get_direction,                 /* get_direction */
  • lib/format_dpdkndag.c

    re54bd5f r32ee9b2  
    733733        NULL,                   /* fin_packet */
    734734        NULL,                   /* write_packet */
     735        NULL,                   /* flush_output */
    735736        erf_get_link_type,      /* get_link_type */
    736737        erf_get_direction,      /* get_direction */
  • lib/format_duck.c

    ree6e802 r32ee9b2  
    337337        NULL,                           /* fin_packet */
    338338        duck_write_packet,              /* write_packet */
     339        NULL,                           /* flush_output */
    339340        duck_get_link_type,             /* get_link_type */
    340341        NULL,                           /* get_direction */
  • lib/format_erf.c

    r207e288 r32ee9b2  
    597597        }
    598598        return numbytes + framinglen;
     599}
     600
     601static int erf_flush_output(libtrace_out_t *libtrace) {
     602        return wandio_wflush(OUTPUT->file);
    599603}
    600604
     
    868872        NULL,                           /* fin_packet */
    869873        erf_write_packet,               /* write_packet */
     874        erf_flush_output,               /* flush_output */
    870875        erf_get_link_type,              /* get_link_type */
    871876        erf_get_direction,              /* get_direction */
     
    912917        NULL,                           /* fin_packet */
    913918        erf_write_packet,               /* write_packet */
     919        erf_flush_output,               /* flush_output */
    914920        erf_get_link_type,              /* get_link_type */
    915921        erf_get_direction,              /* get_direction */
  • lib/format_etsilive.c

    r5577521 r32ee9b2  
    648648        NULL,                           /* fin_packet */
    649649        NULL,                           /* write_packet */
     650        NULL,                           /* flush_output */
    650651        etsilive_get_link_type,         /* get_link_type */
    651652        NULL,                           /* get_direction */
  • lib/format_legacy.c

    r2c457ec r32ee9b2  
    523523        NULL,                           /* fin_packet */
    524524        NULL,                           /* write_packet */
     525        NULL,                           /* flush_output */
    525526        legacyatm_get_link_type,        /* get_link_type */
    526527        NULL,                           /* get_direction */
     
    567568        NULL,                           /* fin_packet */
    568569        NULL,                           /* write_packet */
     570        NULL,                           /* flush_output */
    569571        legacyeth_get_link_type,        /* get_link_type */
    570572        NULL,                           /* get_direction */
     
    611613        NULL,                           /* fin_packet */
    612614        NULL,                           /* write_packet */
     615        NULL,                           /* flush_output */
    613616        legacypos_get_link_type,        /* get_link_type */
    614617        NULL,                           /* get_direction */
     
    655658        NULL,                           /* fin_packet */
    656659        NULL,                           /* write_packet */
     660        NULL,                           /* flush_output */
    657661        legacynzix_get_link_type,       /* get_link_type */
    658662        NULL,                           /* get_direction */
  • lib/format_linux_common.c

    rcc9c9de rf9df20e  
    4949
    5050#include "format_linux_common.h"
     51
     52unsigned int rand_seedp = 0;
    5153
    5254#ifdef HAVE_NETPACKET_PACKET_H
     
    201203        /* Some examples use pid for the group however that would limit a single
    202204         * application to use only int/ring format, instead using rand */
    203         FORMAT_DATA->fanout_group = (uint16_t) rand();
     205        FORMAT_DATA->fanout_group = (uint16_t) (rand_r(&rand_seedp) % 65536);
    204206        return 0;
    205207}
  • lib/format_linux_common.h

    r4697684 rf9df20e  
    421421                                        struct linux_per_stream_t *stream)
    422422{
    423         int fanout_opt = ((int)FORMAT_DATA->fanout_flags << 16) |
    424                          (int)FORMAT_DATA->fanout_group;
    425         if (setsockopt(stream->fd, SOL_PACKET, PACKET_FANOUT,
    426                         &fanout_opt, sizeof(fanout_opt)) == -1) {
    427                 trace_set_err(libtrace, TRACE_ERR_INIT_FAILED,
     423        int fanout_opt;
     424        int attempts = 0;
     425        while (attempts < 5) {
     426                fanout_opt = ((int)FORMAT_DATA->fanout_flags << 16) |
     427                                 (int)FORMAT_DATA->fanout_group;
     428
     429                if (setsockopt(stream->fd, SOL_PACKET, PACKET_FANOUT,
     430                                &fanout_opt, sizeof(fanout_opt)) == -1) {
     431                        trace_set_err(libtrace, TRACE_ERR_INIT_FAILED,
    428432                              "Converting the fd to a socket fanout failed %s",
    429433                              libtrace->uridata);
    430                 return -1;
     434                        FORMAT_DATA->fanout_group ++;
     435                        attempts ++;
     436                        continue;
     437                }
     438                return 0;
    431439        }
    432         return 0;
     440        return -1;
    433441}
    434442#endif /* HAVE_NETPACKET_PACKET_H */
  • lib/format_linux_int.c

    rdb84bb2 r32ee9b2  
    496496        NULL,                           /* fin_packet */
    497497        linuxnative_write_packet,       /* write_packet */
     498        NULL,                           /* flush_output */
    498499        linuxnative_get_link_type,      /* get_link_type */
    499500        linuxnative_get_direction,      /* get_direction */
     
    556557        NULL,                           /* fin_packet */
    557558        NULL,                           /* write_packet */
     559        NULL,                           /* flush_output */
    558560        linuxnative_get_link_type,      /* get_link_type */
    559561        linuxnative_get_direction,      /* get_direction */
  • lib/format_linux_ring.c

    r1060b6d r32ee9b2  
    7070/* Cached page size, the page size shouldn't be changing */
    7171static int pagesize = 0;
     72
     73static pthread_mutex_t pagesize_mutex;
    7274
    7375/*
     
    8890        struct ifreq ifr;
    8991        unsigned max_frame = LIBTRACE_PACKET_BUFSIZE;
    90         pagesize = getpagesize();
     92        pthread_mutex_lock(&pagesize_mutex);
     93        if (pagesize == 0) {
     94                pagesize = getpagesize();
     95        }
     96        pthread_mutex_unlock(&pagesize_mutex);
    9197
    9298        strcpy(ifr.ifr_name, uri);
     
    545551
    546552        stream->last_timestamp = packet->order;
    547                
    548553
    549554        /* We just need to get prepare_packet to set all our packet pointers
     
    743748        linuxring_fin_packet,           /* fin_packet */
    744749        linuxring_write_packet,         /* write_packet */
     750        NULL,                           /* flush_output */
    745751        linuxring_get_link_type,        /* get_link_type */
    746752        linuxring_get_direction,        /* get_direction */
     
    805811        NULL,                           /* fin_packet */
    806812        NULL,                           /* write_packet */
     813        NULL,                           /* flush_output */
    807814        linuxring_get_link_type,        /* get_link_type */
    808815        linuxring_get_direction,        /* get_direction */
     
    835842void linuxring_constructor(void)
    836843{
     844        pthread_mutex_init(&pagesize_mutex, NULL);
    837845        register_format(&linuxring);
    838846}
  • lib/format_ndag.c

    r7c33187 r32ee9b2  
    14341434        NULL,                   /* fin_packet */
    14351435        NULL,                   /* write_packet */
     1436        NULL,                   /* flush_output */
    14361437        erf_get_link_type,      /* get_link_type */
    14371438        erf_get_direction,      /* get_direction */
  • lib/format_pcap.c

    r5a70a80 r32ee9b2  
    583583}
    584584
     585static int pcap_flush_output(libtrace_out_t *libtrace) {
     586        return pcap_dump_flush(OUTPUT.trace.dump);
     587}
     588
    585589static int pcapint_write_packet(libtrace_out_t *libtrace,
    586590                libtrace_packet_t *packet)
     
    779783        NULL,                           /* fin_packet */
    780784        pcap_write_packet,              /* write_packet */
     785        pcap_flush_output,              /* flush_output */
    781786        pcap_get_link_type,             /* get_link_type */
    782787        pcapint_get_direction,          /* get_direction */
     
    823828        NULL,                           /* fin_packet */
    824829        pcapint_write_packet,           /* write_packet */
     830        NULL,                           /* flush_output */
    825831        pcap_get_link_type,             /* get_link_type */
    826832        pcapint_get_direction,          /* get_direction */
  • lib/format_pcapfile.c

    rcc9c9de r32ee9b2  
    532532
    533533        return numbytes+ret;
     534}
     535
     536static int pcapfile_flush_output(libtrace_out_t *out) {
     537
     538        return wandio_wflush(DATAOUT(out)->file);
    534539}
    535540
     
    696701        NULL,                           /* fin_packet */
    697702        pcapfile_write_packet,          /* write_packet */
     703        pcapfile_flush_output,          /* flush_output */
    698704        pcapfile_get_link_type,         /* get_link_type */
    699705        pcapfile_get_direction,         /* get_direction */
  • lib/format_pcapng.c

    r9845e97 r32ee9b2  
    14701470        NULL,                           /* fin_packet */
    14711471        NULL,                           /* write_packet */
     1472        NULL,                           /* flush_output */
    14721473        pcapng_get_link_type,           /* get_link_type */
    14731474        pcapng_get_direction,           /* get_direction */
  • lib/format_rt.c

    ree6e802 r32ee9b2  
    845845        NULL,                           /* fin_packet */
    846846        NULL,                           /* write_packet */
     847        NULL,                           /* flush_output */
    847848        rt_get_link_type,               /* get_link_type */
    848849        NULL,                           /* get_direction */
  • lib/format_tsh.c

    r2c457ec r32ee9b2  
    245245        NULL,                           /* fin_packet */
    246246        NULL,                           /* write_packet */
     247        NULL,                           /* flush_output */
    247248        tsh_get_link_type,              /* get_link_type */
    248249        tsh_get_direction,              /* get_direction */
     
    294295        NULL,                           /* fin_packet */
    295296        NULL,                           /* write_packet */
     297        NULL,                           /* flush_output */
    296298        tsh_get_link_type,              /* get_link_type */
    297299        tsh_get_direction,              /* get_direction */
  • lib/libtrace.h.in

    rcc9c9de r32ee9b2  
    15371537DLLEXPORT void trace_destroy_output(libtrace_out_t *trace);
    15381538
     1539/** Flush an output trace, forcing any buffered packets to be written
     1540 * @param libtrace      The output trace to be flushed
     1541 */
     1542DLLEXPORT int trace_flush_output(libtrace_out_t *libtrace);
     1543
    15391544/** Check (and clear) the current error state of an input trace
    15401545 * @param trace         The input trace to check the error state on
  • lib/libtrace_int.h

    rcc9c9de r32ee9b2  
    624624         */
    625625        int (*write_packet)(libtrace_out_t *libtrace, libtrace_packet_t *packet);
     626
     627        /** Flush any buffered output for an output trace.
     628         *
     629         * @param libtrace      The output trace to be flushed
     630         */
     631        int (*flush_output)(libtrace_out_t *libtrace);
     632
    626633        /** Returns the libtrace link type for a packet.
    627634         *
  • lib/trace.c

    rcc9c9de r32ee9b2  
    816816}
    817817
     818DLLEXPORT int trace_flush_output(libtrace_out_t *libtrace) {
     819        if (!libtrace) {
     820                return -1;
     821        }
     822        if (libtrace->format && libtrace->format->flush_output) {
     823                return libtrace->format->flush_output(libtrace);
     824        }
     825        return 0;
     826}
     827
    818828DLLEXPORT libtrace_packet_t *trace_create_packet(void)
    819829{
  • lib/trace_parallel.c

    r8a237c7 rf57722d6  
    20072007        }
    20082008        if (!libtrace->started || libtrace->state != STATE_RUNNING) {
     2009                ASSERT_RET(pthread_mutex_unlock(&libtrace->libtrace_lock), == 0);
    20092010                trace_set_err(libtrace,TRACE_ERR_BAD_STATE, "You must call trace_start() before calling trace_ppause()");
    20102011                return -1;
Note: See TracChangeset for help on using the changeset viewer.