Changeset 1401 for trunk/lib/format_pcapfile.c
- Timestamp:
- 01/05/09 11:29:11 (4 years ago)
- File:
-
- 1 edited
-
trunk/lib/format_pcapfile.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/format_pcapfile.c
r1391 r1401 42 42 #include <errno.h> 43 43 #include <fcntl.h> 44 #include <stdbool.h> 44 45 45 46 #define DATA(x) ((struct pcapfile_format_data_t*)((x)->format_data)) … … 58 59 59 60 struct pcapfile_format_data_t { 60 io_t *file;61 61 struct { 62 62 int real_time; 63 63 } options; 64 bool started; 64 65 pcapfile_header_t header; 65 66 }; … … 72 73 }; 73 74 75 static int pcapfile_probe_magic(io_t *io) 76 { 77 pcapfile_header_t header; 78 int len; 79 len = wandio_peek(io, &header, sizeof(header)); 80 /* Is this long enough? */ 81 if (len < (int)sizeof(header)) { 82 return 0; 83 } 84 /* Pcap magic? */ 85 if (header.magic_number == 0xa1b2c3d4 || header.magic_number == 0xd4c3b2a1) { 86 return 1; 87 } 88 /* Nope, not pcap */ 89 return 0; 90 } 91 74 92 static int pcapfile_init_input(libtrace_t *libtrace) { 75 93 libtrace->format_data = malloc(sizeof(struct pcapfile_format_data_t)); … … 80 98 } 81 99 82 DATA(libtrace)->file=NULL;83 100 IN_OPTIONS.real_time = 0; 101 DATA(libtrace)->started = false; 84 102 return 0; 85 103 } … … 127 145 int err; 128 146 129 if (!DATA(libtrace)->file) { 130 DATA(libtrace)->file=trace_open_file(libtrace); 131 132 if (!DATA(libtrace)->file) 147 if (!libtrace->io) { 148 libtrace->io=trace_open_file(libtrace); 149 DATA(libtrace)->started=false; 150 } 151 152 if (!DATA(libtrace)->started) { 153 154 if (!libtrace->io) 133 155 return -1; 134 156 135 err=wandio_read( DATA(libtrace)->file,157 err=wandio_read(libtrace->io, 136 158 &DATA(libtrace)->header, 137 159 sizeof(DATA(libtrace)->header)); … … 189 211 static int pcapfile_fin_input(libtrace_t *libtrace) 190 212 { 191 if ( DATA(libtrace)->file)192 wandio_destroy( DATA(libtrace)->file);213 if (libtrace->io) 214 wandio_destroy(libtrace->io); 193 215 free(libtrace->format_data); 194 216 return 0; /* success */ … … 197 219 static int pcapfile_fin_output(libtrace_out_t *libtrace) 198 220 { 199 if (DATA (libtrace)->file)221 if (DATAOUT(libtrace)->file) 200 222 wandio_wdestroy(DATAOUT(libtrace)->file); 201 223 free(libtrace->format_data); … … 269 291 flags |= TRACE_PREP_OWN_BUFFER; 270 292 271 err=wandio_read( DATA(libtrace)->file,293 err=wandio_read(libtrace->io, 272 294 packet->buffer, 273 295 sizeof(libtrace_pcapfile_pkt_hdr_t)); … … 284 306 } 285 307 286 err=wandio_read( DATA(libtrace)->file,308 err=wandio_read(libtrace->io, 287 309 (char*)packet->buffer+sizeof(libtrace_pcapfile_pkt_hdr_t), 288 310 (size_t)swapl(libtrace,((libtrace_pcapfile_pkt_hdr_t*)packet->buffer)->caplen) … … 322 344 /* Silently discard RT metadata packets and packets with an 323 345 * unknown linktype. */ 324 if (linktype == TRACE_TYPE_METADATA || linktype == -1) {346 if (linktype == TRACE_TYPE_METADATA || linktype == ~0U) { 325 347 return 0; 326 348 } … … 570 592 "$Id$", 571 593 TRACE_FORMAT_PCAPFILE, 594 NULL, /* probe filename */ 595 pcapfile_probe_magic, /* probe magic */ 572 596 pcapfile_init_input, /* init_input */ 573 597 pcapfile_config_input, /* config_input */
Note: See TracChangeset
for help on using the changeset viewer.
