Changeset 853
- Timestamp:
- 06/06/06 17:32:24 (7 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 4 edited
-
lib/format_erf.c (modified) (6 diffs)
-
lib/libtrace_int.h (modified) (1 diff)
-
lib/linktypes.c (modified) (1 diff)
-
test/Makefile (modified) (4 diffs)
-
test/test-dir.c (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/format_erf.c
r850 r853 861 861 862 862 static int erf_dump_packet(libtrace_out_t *libtrace, 863 dag_record_t *erfptr, int pad, void *buffer , size_t size) {863 dag_record_t *erfptr, int pad, void *buffer) { 864 864 int numbytes = 0; 865 assert(size<=65536);865 int size; 866 866 867 867 if ((numbytes = libtrace_io_write(OUTPUT.file, erfptr, dag_record_size + pad)) != dag_record_size+pad) { … … 871 871 } 872 872 873 if ((numbytes=libtrace_io_write(OUTPUT.file, buffer, size)) != (int)size) { 873 size=ntohs(erfptr->rlen)-(dag_record_size+pad); 874 875 numbytes=libtrace_io_write(OUTPUT.file, buffer, size); 876 if (numbytes != size) { 874 877 trace_set_err_out(libtrace,errno, 875 878 "write(%s)",libtrace->uridata); … … 926 929 (dag_record_t *)packet->header, 927 930 pad, 928 payload, 929 trace_get_capture_length(packet) 931 payload 930 932 ); 931 933 } else { … … 935 937 /* Timestamp */ 936 938 erfhdr.ts = trace_get_erf_timestamp(packet); 937 type=libtrace_to_erf_type(trace_get_link_type(packet)); 939 /* Keep trying to simplify the packet until we can find 940 * something we can do with it */ 941 do { 942 type=libtrace_to_erf_type(trace_get_link_type(packet)); 943 } while(type==(char)-1 && demote_packet(packet)); 944 /* We just don't support this link type sorry */ 938 945 if (type==(char)-1) { 939 trace_set_err_out(libtrace,TRACE_ERR_NO_CONVERSION, 946 trace_set_err_out(libtrace, 947 TRACE_ERR_NO_CONVERSION, 940 948 "No erf type for packet"); 941 949 return -1; … … 946 954 if (trace_get_direction(packet)!=-1) 947 955 erfhdr.flags.iface = trace_get_direction(packet); 956 948 957 /* Packet length (rlen includes format overhead) */ 958 assert(trace_get_capture_length(packet)>0 959 && trace_get_capture_length(packet)<=65536); 960 assert(erf_get_framing_length(packet)>0 961 && trace_get_framing_length(packet)<=65536); 962 assert( 963 trace_get_capture_length(packet)+erf_get_framing_length(packet)>0 964 &&trace_get_capture_length(packet)+erf_get_framing_length(packet)<=65536); 949 965 erfhdr.rlen = htons(trace_get_capture_length(packet) 950 966 + erf_get_framing_length(packet)); … … 958 974 &erfhdr, 959 975 pad, 960 payload, 961 trace_get_capture_length(packet)); 976 payload); 962 977 } 963 978 return numbytes; -
trunk/lib/libtrace_int.h
r808 r853 357 357 358 358 void promote_packet(libtrace_packet_t *packet); 359 bool demote_packet(libtrace_packet_t *packet); 359 360 360 361 #if HAVE_BPF -
trunk/lib/linktypes.c
r795 r853 154 154 } 155 155 } 156 157 /* Try and simplify the packet one step, kinda the opposite to promote_packet 158 * 159 * returns true if demotion was possible, false if not. 160 */ 161 bool demote_packet(libtrace_packet_t *packet) 162 { 163 switch(trace_get_link_type(packet)) { 164 case TRACE_TYPE_LINUX_SLL: 165 switch(((libtrace_sll_header_t*)packet->payload) 166 ->hatype) { 167 case ARPHRD_PPP: 168 packet->type=pcap_dlt_to_rt(DLT_NULL); 169 break; 170 case ARPHRD_ETHER: 171 packet->type=pcap_dlt_to_rt(DLT_EN10MB); 172 break; 173 default: 174 /* Dunno how to demote this packet */ 175 return false; 176 } 177 packet->payload=(void*)((char*)packet->payload 178 +sizeof(libtrace_sll_header_t)); 179 trace_set_capture_length(packet, 180 trace_get_capture_length(packet) 181 -sizeof(libtrace_sll_header_t)); 182 break; 183 default: 184 return false; 185 } 186 } -
trunk/test/Makefile
r824 r853 10 10 LDLIBS = -L$(libdir) -ltrace 11 11 12 BINS = test-pcap-bpf test-event test-time #test-seek12 BINS = test-pcap-bpf test-event test-time test-dir #test-seek 13 13 14 14 .PHONY: all clean distclean install depend test … … 19 19 @for i in $(BINS); do \ 20 20 echo \* $$i; \ 21 rm -f traces/*.out.*; \ 21 22 LD_LIBRARY_PATH=$(libdir) \ 22 23 ./$$i || exit $$?; \ … … 25 26 26 27 test-format-all: test-format 27 @for i in erf pcap wtf pcapfile duck; do \28 @for i in erf pcap wtf pcapfile duck; do \ 28 29 echo \* $$i; \ 30 rm -f traces/*.out.*; \ 29 31 LD_LIBRARY_PATH=$(libdir) \ 30 32 ./test-format $$i || exit $$?; \ … … 36 38 @echo \* Conversions 37 39 @echo " * erf -> erf" 40 @rm -f traces/*.out.* 38 41 @LD_LIBRARY_PATH=$(libdir) ./test-convert erf erf 39 42 @echo " * erf -> pcap" 40 43 @LD_LIBRARY_PATH=$(libdir) ./test-convert erf pcap 41 44 @echo " * pcap -> erf" 45 @rm -f traces/*.out.* 42 46 @LD_LIBRARY_PATH=$(libdir) ./test-convert pcap erf 43 47 @echo " * pcapfile -> erf" 48 @rm -f traces/*.out.* 44 49 @LD_LIBRARY_PATH=$(libdir) ./test-convert pcapfile erf 45 50 @#LD_LIBRARY_PATH=$(libdir) ./test-convert rtclient erf 46 51 @#LD_LIBRARY_PATH=$(libdir) ./test-convert rtclient pcap 47 52 @echo " * wtf -> pcap" 53 @rm -f traces/*.out.* 48 54 @LD_LIBRARY_PATH=$(libdir) ./test-convert wtf pcap 49 55 @echo " * wtf -> wtf" 56 @rm -f traces/*.out.* 50 57 @LD_LIBRARY_PATH=$(libdir) ./test-convert wtf wtf 51 58 @echo " * duck -> duck" 59 @rm -f traces/*.out.* 52 60 @LD_LIBRARY_PATH=$(libdir) ./test-convert duck duck 53 61
Note: See TracChangeset
for help on using the changeset viewer.
