- Timestamp:
- 06/23/06 12:01:36 (16 years ago)
- Branches:
- 4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
- Children:
- 45dfddc
- Parents:
- c5ebbaa
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/format_pcapfile.c
r5eeba76 rd3fd4d3 44 44 #define DATA(x) ((struct pcapfile_format_data_t*)((x)->format_data)) 45 45 46 struct pcapfile_format_data_t { 47 libtrace_io_t *file; 48 struct pcapfile_header_t { 46 typedef struct pcapfile_header_t { 49 47 uint32_t magic_number; /* magic number */ 50 48 uint16_t version_major; /* major version number */ … … 54 52 uint32_t snaplen; /* aka "wirelen" */ 55 53 uint32_t network; /* data link type */ 56 } header; 54 } pcapfile_header_t; 55 56 struct pcapfile_format_data_t { 57 libtrace_io_t *file; 58 pcapfile_header_t header; 59 }; 60 61 struct pcapfile_format_data_out_t { 62 libtrace_io_t *file; 63 57 64 }; 58 65 … … 147 154 } 148 155 149 struct pcapfile_pkt_hdr_t {150 uint32_t ts_sec;151 uint32_t ts_usec;152 uint32_t caplen;153 uint32_t wirelen;154 };155 156 156 static int pcapfile_read_packet(libtrace_t *libtrace, libtrace_packet_t *packet) { 157 157 int err; … … 169 169 err=libtrace_io_read(DATA(libtrace)->file, 170 170 packet->buffer, 171 sizeof( structpcapfile_pkt_hdr_t));171 sizeof(libtrace_pcapfile_pkt_hdr_t)); 172 172 173 173 if (err<0) { … … 184 184 185 185 err=libtrace_io_read(DATA(libtrace)->file, 186 (char*)packet->buffer+sizeof( structpcapfile_pkt_hdr_t),187 swapl(libtrace,(( structpcapfile_pkt_hdr_t*)packet->buffer)->caplen)186 (char*)packet->buffer+sizeof(libtrace_pcapfile_pkt_hdr_t), 187 swapl(libtrace,((libtrace_pcapfile_pkt_hdr_t*)packet->buffer)->caplen) 188 188 ); 189 189 … … 198 198 199 199 packet->payload = (char*)packet->buffer 200 + sizeof( structpcapfile_pkt_hdr_t);200 + sizeof(libtrace_pcapfile_pkt_hdr_t); 201 201 202 return sizeof(struct pcapfile_pkt_hdr_t) 203 +swapl(libtrace,((struct pcapfile_pkt_hdr_t*)packet->buffer)->caplen); 204 } 202 return sizeof(libtrace_pcapfile_pkt_hdr_t) 203 +swapl(libtrace,((libtrace_pcapfile_pkt_hdr_t*)packet->buffer)->caplen); 204 } 205 206 #if 0 207 static void pcapfile_write_packet(libtrace_out_t *out, 208 const libtrace_packet_t *packet) 209 { 210 struct pcapfile_pkt_hdr_t hdr; 211 212 tv = trace_get_timeval(packet); 213 hdr.ts_sec = tv.tv_sec; 214 hdr.ts_usec = tv.tv_usec; 215 hdr.caplen = trace_get_capture_length(packet); 216 hdr.wirelen = trace_get_wire_length(packet); 217 218 write(fd,&hdr,sizeof(hdr)); 219 write(fd,packet->payload,hdr.caplen); 220 221 } 222 #endif 205 223 206 224 … … 208 226 const libtrace_packet_t *packet) 209 227 { 210 228 #if 0 211 229 return pcap_dlt_to_libtrace( 212 230 swapl(packet->trace, … … 214 232 ) 215 233 ); 234 #endif 235 return pcap_dlt_to_libtrace(rt_to_pcap_dlt(packet->type)); 216 236 } 217 237 … … 279 299 const libtrace_packet_t *packet) 280 300 { 281 structpcapfile_pkt_hdr_t *hdr =282 ( structpcapfile_pkt_hdr_t*)packet->header;301 libtrace_pcapfile_pkt_hdr_t *hdr = 302 (libtrace_pcapfile_pkt_hdr_t*)packet->header; 283 303 struct timeval ts; 284 304 ts.tv_sec = swapl(packet->trace,hdr->ts_sec); … … 289 309 290 310 static int pcapfile_get_capture_length(const libtrace_packet_t *packet) { 291 structpcapfile_pkt_hdr_t *pcapptr292 = ( structpcapfile_pkt_hdr_t *)packet->header;311 libtrace_pcapfile_pkt_hdr_t *pcapptr 312 = (libtrace_pcapfile_pkt_hdr_t *)packet->header; 293 313 294 314 return swapl(packet->trace,pcapptr->caplen); … … 296 316 297 317 static int pcapfile_get_wire_length(const libtrace_packet_t *packet) { 298 structpcapfile_pkt_hdr_t *pcapptr299 = ( structpcapfile_pkt_hdr_t *)packet->header;318 libtrace_pcapfile_pkt_hdr_t *pcapptr 319 = (libtrace_pcapfile_pkt_hdr_t *)packet->header; 300 320 if (packet->type==pcap_dlt_to_rt(TRACE_DLT_EN10MB)) 301 321 /* Include the missing FCS */ … … 306 326 307 327 static int pcapfile_get_framing_length(const libtrace_packet_t *packet UNUSED) { 308 return sizeof( structpcapfile_pkt_hdr_t);328 return sizeof(libtrace_pcapfile_pkt_hdr_t); 309 329 } 310 330 311 331 static size_t pcapfile_set_capture_length(libtrace_packet_t *packet,size_t size) { 312 structpcapfile_pkt_hdr_t *pcapptr = 0;332 libtrace_pcapfile_pkt_hdr_t *pcapptr = 0; 313 333 assert(packet); 314 334 if (size > trace_get_capture_length(packet)) { … … 316 336 return trace_get_capture_length(packet); 317 337 } 318 pcapptr = ( structpcapfile_pkt_hdr_t *)packet->header;338 pcapptr = (libtrace_pcapfile_pkt_hdr_t *)packet->header; 319 339 pcapptr->caplen = swapl(packet->trace,size); 320 340 return trace_get_capture_length(packet);
Note: See TracChangeset
for help on using the changeset viewer.