MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ff_dump_packets

Function ff_dump_packets

lib/ff_dpdk_pcap.c:85–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83}
84
85int
86ff_dump_packets(const char* dump_path, struct rte_mbuf* pkt, uint16_t snap_len, uint32_t f_maxlen)
87{
88 unsigned int out_len = 0, wr_len = 0;
89 struct pcap_pkthdr pcap_hdr;
90 void* hdr = &pcap_hdr;
91 struct timeval ts;
92 char pcap_f_path[FILE_PATH_LEN] = {0};
93
94 if (g_pcap_fp == NULL) {
95 return -1;
96 }
97 snap_len = pkt->pkt_len < snap_len ? pkt->pkt_len : snap_len;
98 gettimeofday(&ts, NULL);
99 pcap_hdr.sec = ts.tv_sec;
100 pcap_hdr.usec = ts.tv_usec;
101 pcap_hdr.caplen = snap_len;
102 pcap_hdr.len = pkt->pkt_len;
103 fwrite(hdr, sizeof(struct pcap_pkthdr), 1, g_pcap_fp);
104 g_flen += sizeof(struct pcap_pkthdr);
105
106 while(pkt != NULL && out_len <= snap_len) {
107 wr_len = snap_len - out_len;
108 wr_len = wr_len > pkt->data_len ? pkt->data_len : wr_len ;
109 fwrite(rte_pktmbuf_mtod(pkt, char*), wr_len, 1, g_pcap_fp);
110 out_len += wr_len;
111 pkt = pkt->next;
112 }
113 g_flen += out_len;
114
115 if ( g_flen >= f_maxlen ){
116 fclose(g_pcap_fp);
117 if ( ++seq >= PCAP_FILE_NUM )
118 seq = 0;
119
120 ff_enable_pcap(dump_path, snap_len);
121 }
122
123 return 0;
124}
125

Callers 2

ff_dpdk_if.cFile · 0.85
send_burstFunction · 0.85

Calls 1

ff_enable_pcapFunction · 0.85

Tested by

no test coverage detected