rb-wartslib 0.9.12 → 0.9.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,7 +18,7 @@
18
18
  ** along with this program; if not, write to the Free Software
19
19
  ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
20
  **
21
- ** $Id: scaddr.h,v 1.2 2007/11/29 01:29:59 youngh Exp $
21
+ ** $Id: scaddr.h,v 1.3 2008/01/22 23:47:43 youngh Exp $
22
22
  **/
23
23
 
24
24
  #ifndef __SCADDR_H
@@ -29,4 +29,5 @@
29
29
  VALUE scaddr_create(scamper_addr_t *addr);
30
30
  void Init_scaddr(void);
31
31
 
32
- #endif # __SCADDR_H
32
+ #endif /* __SCADDR_H */
33
+
@@ -19,7 +19,7 @@
19
19
  ** along with this program; if not, write to the Free Software
20
20
  ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
21
  **
22
- ** $Id: scext.c,v 1.22 2008/01/16 20:14:50 youngh Exp $
22
+ ** $Id: scext.c,v 1.24 2008/01/25 01:15:46 youngh Exp $
23
23
  **/
24
24
 
25
25
  #include "ruby.h"
@@ -29,6 +29,7 @@
29
29
  #endif
30
30
 
31
31
  #include "scamper.h"
32
+ #include "scamper_file.h"
32
33
 
33
34
  #include "scaddr.h"
34
35
  #include "sclist.h"
@@ -41,9 +42,17 @@ void Init_wartslibext(void)
41
42
  {
42
43
  mWarts = rb_define_module("Warts");
43
44
 
44
- rb_define_const(mWarts, "WARTS_LIB_VERSION", rb_str_new2("0.9.12"));
45
+ rb_define_const(mWarts, "WARTS_LIB_VERSION", rb_str_new2("0.9.13"));
45
46
  rb_define_const(mWarts, "SCAMPER_VERSION", rb_str_new2(SCAMPER_VERSION));
46
47
 
48
+ rb_define_const(mWarts, "LIST", INT2FIX(SCAMPER_FILE_OBJ_LIST));
49
+ rb_define_const(mWarts, "CYCLE_START", INT2FIX(SCAMPER_FILE_OBJ_CYCLE_START));
50
+ rb_define_const(mWarts, "CYCLE_DEF", INT2FIX(SCAMPER_FILE_OBJ_CYCLE_DEF));
51
+ rb_define_const(mWarts, "CYCLE_STOP", INT2FIX(SCAMPER_FILE_OBJ_CYCLE_STOP));
52
+ rb_define_const(mWarts, "ADDR", INT2FIX(SCAMPER_FILE_OBJ_ADDR));
53
+ rb_define_const(mWarts, "TRACE", INT2FIX(SCAMPER_FILE_OBJ_TRACE));
54
+ rb_define_const(mWarts, "PING", INT2FIX(SCAMPER_FILE_OBJ_PING));
55
+
47
56
  Init_scaddr();
48
57
  Init_sclist();
49
58
  Init_sccycle();
@@ -18,7 +18,7 @@
18
18
  ** along with this program; if not, write to the Free Software
19
19
  ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
20
  **
21
- ** $Id: scfile.c,v 1.32 2008/01/16 20:15:39 youngh Exp $
21
+ ** $Id: scfile.c,v 1.33 2008/01/25 01:15:20 youngh Exp $
22
22
  **/
23
23
 
24
24
  #include <unistd.h>
@@ -647,6 +647,7 @@ void Init_scfile(void)
647
647
 
648
648
  cFile = rb_define_class_under(mWarts, "File", rb_cObject);
649
649
 
650
+ /* deprecated since 0.9.13 -- use the same constants in the Warts module */
650
651
  for (i = 0; i < num_sctypes; i++) {
651
652
  rb_define_const(cFile, all_sctypes[i].name,
652
653
  INT2FIX(all_sctypes[i].value));
@@ -18,7 +18,7 @@
18
18
  ** along with this program; if not, write to the Free Software
19
19
  ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
20
  **
21
- ** $Id: scfile.h,v 1.2 2007/11/29 01:32:24 youngh Exp $
21
+ ** $Id: scfile.h,v 1.3 2008/01/22 23:48:23 youngh Exp $
22
22
  **/
23
23
 
24
24
  #ifndef __SCFILE_H
@@ -26,4 +26,5 @@
26
26
 
27
27
  void Init_scfile(void);
28
28
 
29
- #endif # __SCFILE_H
29
+ #endif /* __SCFILE_H */
30
+
@@ -18,7 +18,7 @@
18
18
  ** along with this program; if not, write to the Free Software
19
19
  ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
20
  **
21
- ** $Id: sclist.h,v 1.2 2007/11/29 01:32:57 youngh Exp $
21
+ ** $Id: sclist.h,v 1.3 2008/01/22 23:48:39 youngh Exp $
22
22
  **/
23
23
 
24
24
  #ifndef __SCLIST_H
@@ -31,4 +31,4 @@ VALUE sccycle_create(scamper_cycle_t *cycle, int type);
31
31
  void Init_sclist(void);
32
32
  void Init_sccycle(void);
33
33
 
34
- #endif # __SCLIST_H
34
+ #endif /* __SCLIST_H */
@@ -27,7 +27,7 @@
27
27
  ** along with this program; if not, write to the Free Software
28
28
  ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29
29
  **
30
- ** $Id: sctrace.c,v 1.46 2007/12/08 00:33:42 youngh Exp $
30
+ ** $Id: sctrace.c,v 1.59 2008/01/25 00:17:32 youngh Exp $
31
31
  **/
32
32
 
33
33
  #include "ruby.h"
@@ -36,7 +36,11 @@
36
36
  #include <stdint.h>
37
37
  #endif
38
38
 
39
+ #include "scamper_addr.h"
40
+ #include "scamper_list.h"
41
+ #include "scamper_trace.h"
39
42
  #include "scamper_file.h"
43
+ #include "scamper_tlv.h"
40
44
  #include "sctrace.h"
41
45
  #include "sclist.h"
42
46
 
@@ -50,9 +54,10 @@ static ID meth_write_trace;
50
54
 
51
55
  /*-------------------------------------------------------------------------*/
52
56
 
53
- #define DEF_CONST(name) \
54
- rb_define_const(cTrace, #name, INT2FIX(SCAMPER_TRACE_##name));
57
+ #define DEF_CONST2(field_name, macro_name) \
58
+ rb_define_const(cTrace, #field_name, INT2FIX(SCAMPER_TRACE_##macro_name));
55
59
 
60
+ #define DEF_CONST(name) DEF_CONST2(name, name)
56
61
 
57
62
  /*-------------------------------------------------------------------------*/
58
63
 
@@ -142,6 +147,7 @@ static scamper_trace_hop_t *find_trace_hop(scamper_trace_t *trace,
142
147
  #define DEF_HOP_ATTR(name) \
143
148
  rb_define_method(cTrace, #name, sctrace_attr_##name, -1);
144
149
 
150
+
145
151
  /* Because this declares variables, this macro must occur
146
152
  immediately after the variable declarations in a function. */
147
153
  #define PROCESS_HOP_PARAMS \
@@ -150,14 +156,18 @@ static scamper_trace_hop_t *find_trace_hop(scamper_trace_t *trace,
150
156
  response = INT2FIX(0); \
151
157
  }
152
158
 
153
- #define NUM_HOP_ATTR_FIELD_FUN(name,field) \
154
- static VALUE sctrace_attr_hop_##name(int argc, VALUE *argv, VALUE self) \
155
- { \
159
+ #define HOP_METHOD_BODY_BEGINNING \
156
160
  scamper_trace_t *trace; \
157
161
  scamper_trace_hop_t *trace_hop; \
158
162
  PROCESS_HOP_PARAMS; \
159
163
  Data_Get_Struct(self, scamper_trace_t, trace); \
160
164
  trace_hop = find_trace_hop(trace, NUM2INT(hop), NUM2INT(response)); \
165
+
166
+
167
+ #define NUM_HOP_ATTR_FIELD_FUN(name,field) \
168
+ static VALUE sctrace_attr_hop_##name(int argc, VALUE *argv, VALUE self) \
169
+ { \
170
+ HOP_METHOD_BODY_BEGINNING; \
161
171
  if (!trace_hop) { \
162
172
  return Qnil; \
163
173
  } \
@@ -191,29 +201,151 @@ NUM_HOP_ATTR_FUN(probe_ttl);
191
201
  NUM_HOP_ATTR_FUN(reply_ttl);
192
202
  NUM_HOP_ATTR_FUN(probe_size);
193
203
  NUM_HOP_ATTR_FUN(reply_size);
194
- NUM_HOP_ATTR_FUN(icmp_type);
195
- NUM_HOP_ATTR_FUN(icmp_code);
196
- NUM_HOP_ATTR_FUN(tcp_flags);
197
204
  NUM_HOP_ATTR_FIELD_FUN(rtt_sec, rtt.tv_sec);
198
205
  NUM_HOP_ATTR_FIELD_FUN(rtt_usec, rtt.tv_usec);
199
206
 
207
+ /*-------------------------------------------------------------------------*/
208
+
209
+ #define HOP_FLAG_FUN(name,flag) \
210
+ static VALUE sctrace_hop_##name(int argc, VALUE *argv, VALUE self) \
211
+ { \
212
+ HOP_METHOD_BODY_BEGINNING; \
213
+ if (!trace_hop) { \
214
+ return Qnil; \
215
+ } \
216
+ return ((trace_hop->hop_flags & SCAMPER_TRACE_HOP_FLAG_##flag) \
217
+ ? Qtrue : Qfalse);\
218
+ }
219
+
220
+ #define HOP_NOT_FLAG_FUN(name,flag) \
221
+ static VALUE sctrace_hop_##name(int argc, VALUE *argv, VALUE self) \
222
+ { \
223
+ HOP_METHOD_BODY_BEGINNING; \
224
+ if (!trace_hop) { \
225
+ return Qnil; \
226
+ } \
227
+ return ((trace_hop->hop_flags & SCAMPER_TRACE_HOP_FLAG_##flag) \
228
+ ? Qfalse : Qtrue);\
229
+ }
230
+
231
+ /*
232
+ ** If a trace doesn't have a reply TTL, then the hop_reply_ttl accessor
233
+ ** returns 0. The user should call hop_has_reply_ttl? to distinguish
234
+ ** a true 0 reply TTL from a missing reply TTL.
235
+ */
236
+ HOP_FLAG_FUN(has_reply_ttl, REPLY_TTL);
237
+
238
+ /*
239
+ ** The scamper_trace_hop.hop_un.hop_tcp_flags field is only valid if the TCP
240
+ ** flag is set. Similarly, scamper_trace_hop.hop_un.hop_icmp_{type,code}
241
+ ** fields are only valid if the TCP flag is NOT set.
242
+ */
243
+ HOP_FLAG_FUN(has_tcp_reply, TCP);
244
+ HOP_NOT_FLAG_FUN(has_icmp_reply, TCP);
200
245
 
201
246
  /*-------------------------------------------------------------------------*/
202
247
 
203
- #define DEF_HOP_ICMP_QUERY(name) \
204
- rb_define_method(cTrace, "hop_icmp_" #name "?", sctrace_hop_icmp_##name, -1);
248
+ #define NUM_HOP_ATTR_FLAG_FUN(name,flag) \
249
+ static VALUE sctrace_attr_hop_##name(int argc, VALUE *argv, VALUE self) \
250
+ { \
251
+ HOP_METHOD_BODY_BEGINNING; \
252
+ if (!trace_hop \
253
+ || (trace_hop->hop_flags & SCAMPER_TRACE_HOP_FLAG_##flag) == 0) { \
254
+ return Qnil; \
255
+ } \
256
+ return UINT2NUM(trace_hop->hop_##name); \
257
+ }
205
258
 
206
- #define HOP_ICMP_QUERY_FUN(name,macro) \
207
- static VALUE sctrace_hop_icmp_##name(int argc, VALUE *argv, VALUE self) \
259
+ #define NUM_HOP_ATTR_NOT_FLAG_FUN(name,flag) \
260
+ static VALUE sctrace_attr_hop_##name(int argc, VALUE *argv, VALUE self) \
261
+ { \
262
+ HOP_METHOD_BODY_BEGINNING; \
263
+ if (!trace_hop \
264
+ || (trace_hop->hop_flags & SCAMPER_TRACE_HOP_FLAG_##flag)) { \
265
+ return Qnil; \
266
+ } \
267
+ return UINT2NUM(trace_hop->hop_##name); \
268
+ }
269
+
270
+ NUM_HOP_ATTR_NOT_FLAG_FUN(icmp_type, TCP);
271
+ NUM_HOP_ATTR_NOT_FLAG_FUN(icmp_code, TCP);
272
+ NUM_HOP_ATTR_FLAG_FUN(tcp_flags, TCP);
273
+
274
+ /*-------------------------------------------------------------------------*/
275
+
276
+ #define DEF_HOP_TLV(name) \
277
+ rb_define_method(cTrace, #name, sctrace_tlv_##name, -1);
278
+
279
+ #define NUM_HOP_TLV_FUN(name,type,size) \
280
+ static VALUE sctrace_tlv_hop_##name(int argc, VALUE *argv, VALUE self) \
281
+ { \
282
+ scamper_trace_t *trace; \
283
+ scamper_trace_hop_t *trace_hop; \
284
+ const scamper_tlv_t *tlv; \
285
+ PROCESS_HOP_PARAMS; \
286
+ Data_Get_Struct(self, scamper_trace_t, trace); \
287
+ trace_hop = find_trace_hop(trace, NUM2INT(hop), NUM2INT(response)); \
288
+ if (!trace_hop) { \
289
+ return Qnil; \
290
+ } \
291
+ tlv = scamper_tlv_get(trace_hop->hop_tlvs, SCAMPER_TRACE_HOP_TLV_##type); \
292
+ return (tlv ? UINT2NUM(tlv->tlv_u.val_##size) : Qnil); \
293
+ }
294
+
295
+ #define NUM_HOP_TLV_WITH_DEFAULT_FUN(name,type,size,default_value) \
296
+ static VALUE sctrace_tlv_hop_##name(int argc, VALUE *argv, VALUE self) \
208
297
  { \
209
298
  scamper_trace_t *trace; \
210
299
  scamper_trace_hop_t *trace_hop; \
300
+ const scamper_tlv_t *tlv; \
211
301
  PROCESS_HOP_PARAMS; \
212
302
  Data_Get_Struct(self, scamper_trace_t, trace); \
213
303
  trace_hop = find_trace_hop(trace, NUM2INT(hop), NUM2INT(response)); \
214
304
  if (!trace_hop) { \
215
305
  return Qnil; \
216
306
  } \
307
+ tlv = scamper_tlv_get(trace_hop->hop_tlvs, SCAMPER_TRACE_HOP_TLV_##type); \
308
+ return UINT2NUM(tlv ? tlv->tlv_u.val_##size : default_value); \
309
+ }
310
+
311
+ NUM_HOP_TLV_FUN(reply_ipid, REPLY_IPID, 16);
312
+ NUM_HOP_TLV_FUN(reply_iptos, REPLY_IPTOS, 8);
313
+ NUM_HOP_TLV_FUN(next_hop_mtu, NHMTU, 16);
314
+ NUM_HOP_TLV_WITH_DEFAULT_FUN(inner_iplen, INNER_IPLEN, 16,
315
+ trace_hop->hop_probe_size);
316
+ NUM_HOP_TLV_WITH_DEFAULT_FUN(inner_ipttl, INNER_IPTTL, 8, 1);
317
+
318
+ /*
319
+ * INNER_IPTOS was introduced in scamper-cvs-20070523j.new (Jan 20,
320
+ * 2008). Some care is needed, however, because a missing inner iptos
321
+ * tlv can mean two completely different things: (A) the inner iptos
322
+ * is the same as the probe iptos (scamper j.new or later), or (B) the
323
+ * inner iptos may or may not be the same as the probe iptos (scamper
324
+ * prior to j.new).
325
+ *
326
+ * It would be nice to have the inner_iptos accessor method return the
327
+ * probe tos if no tlv is found, but that would be misleading for older
328
+ * trace files. Hence, this returns nil when no tlv is found, and leaves
329
+ * it to the user to disambiguate this result based on external knowledge.
330
+ */
331
+ #ifndef SCAMPER_TRACE_HOP_TLV_INNER_IPTOS
332
+ #define SCAMPER_TRACE_HOP_TLV_INNER_IPTOS 0x06 /* 1 byte */
333
+ #endif
334
+
335
+ NUM_HOP_TLV_FUN(inner_iptos, INNER_IPTOS, 8);
336
+
337
+ /*-------------------------------------------------------------------------*/
338
+
339
+ #define DEF_HOP_ICMP_QUERY(name) \
340
+ rb_define_method(cTrace, "hop_icmp_" #name "?", sctrace_hop_icmp_##name, -1);
341
+
342
+ #define HOP_ICMP_QUERY_FUN(name,macro) \
343
+ static VALUE sctrace_hop_icmp_##name(int argc, VALUE *argv, VALUE self) \
344
+ { \
345
+ HOP_METHOD_BODY_BEGINNING; \
346
+ if (!trace_hop) { \
347
+ return Qnil; \
348
+ } \
217
349
  return SCAMPER_TRACE_HOP_IS_ICMP_##macro(trace_hop) ? Qtrue : Qfalse; \
218
350
  }
219
351
 
@@ -284,7 +416,7 @@ static VALUE sctrace_src(VALUE self)
284
416
  }
285
417
 
286
418
 
287
- static VALUE sctrace_dst(VALUE self)
419
+ static VALUE sctrace_dest(VALUE self)
288
420
  {
289
421
  scamper_trace_t *trace;
290
422
  char buf[128];
@@ -314,7 +446,7 @@ static VALUE sctrace_src_cmp(VALUE self, VALUE other)
314
446
  }
315
447
 
316
448
 
317
- static VALUE sctrace_dst_cmp(VALUE self, VALUE other)
449
+ static VALUE sctrace_dest_cmp(VALUE self, VALUE other)
318
450
  {
319
451
  scamper_trace_t *self_trace;
320
452
  scamper_trace_t *other_trace;
@@ -403,6 +535,33 @@ static VALUE sctrace_set_cycle(VALUE self, VALUE cycle_v)
403
535
 
404
536
  /*-------------------------------------------------------------------------*/
405
537
 
538
+ static VALUE sctrace_hop_tcp_flags_breakdown(int argc, VALUE *argv, VALUE self)
539
+ {
540
+ scamper_trace_t *trace;
541
+ scamper_trace_hop_t *th;
542
+ VALUE retval;
543
+
544
+ PROCESS_HOP_PARAMS;
545
+ Data_Get_Struct(self, scamper_trace_t, trace);
546
+ th = find_trace_hop(trace, NUM2INT(hop), NUM2INT(response));
547
+ if (!th || (th->hop_flags & SCAMPER_TRACE_HOP_FLAG_TCP) == 0) {
548
+ return Qnil;
549
+ }
550
+
551
+ retval = rb_ary_new();
552
+ if (th->hop_tcp_flags & 0x01) { rb_ary_push(retval, rb_str_new2("fin")); }
553
+ if (th->hop_tcp_flags & 0x02) { rb_ary_push(retval, rb_str_new2("syn")); }
554
+ if (th->hop_tcp_flags & 0x04) { rb_ary_push(retval, rb_str_new2("rst")); }
555
+ if (th->hop_tcp_flags & 0x08) { rb_ary_push(retval, rb_str_new2("psh")); }
556
+ if (th->hop_tcp_flags & 0x10) { rb_ary_push(retval, rb_str_new2("ack")); }
557
+ if (th->hop_tcp_flags & 0x20) { rb_ary_push(retval, rb_str_new2("urg")); }
558
+ if (th->hop_tcp_flags & 0x40) { rb_ary_push(retval, rb_str_new2("ece")); }
559
+ if (th->hop_tcp_flags & 0x80) { rb_ary_push(retval, rb_str_new2("cwr")); }
560
+ /* there are only 8 flag bits, so no more possible */
561
+ return retval;
562
+ }
563
+
564
+
406
565
  static VALUE sctrace_attr_hop_addr(int argc, VALUE *argv, VALUE self)
407
566
  {
408
567
  scamper_trace_t *trace;
@@ -761,10 +920,21 @@ void Init_sctrace(void)
761
920
  DEF_CONST(STOP_UNREACH);
762
921
  DEF_CONST(STOP_ICMP);
763
922
  DEF_CONST(STOP_LOOP);
764
- DEF_CONST(STOP_DEAD);
923
+
924
+ #ifdef SCAMPER_TRACE_STOP_GAPLIMIT /* scamper-cvs-20070523j.new (20080120) */
925
+ DEF_CONST2(STOP_DEAD, STOP_GAPLIMIT); /* deprecated */
926
+ DEF_CONST(STOP_GAPLIMIT);
927
+ #else
928
+ DEF_CONST(STOP_DEAD); /* deprecated */
929
+ DEF_CONST2(STOP_GAPLIMIT, STOP_DEAD);
930
+ #endif
931
+
765
932
  DEF_CONST(STOP_ERROR);
933
+
766
934
  #ifdef SCAMPER_TRACE_STOP_HOPLIMIT /* scamper-cvs-20070523 */
767
935
  DEF_CONST(STOP_HOPLIMIT);
936
+ #else
937
+ DEF_CONST2(STOP_HOPLIMIT, 0x07);
768
938
  #endif
769
939
 
770
940
  DEF_CONST(FLAG_ALLATTEMPTS);
@@ -782,6 +952,7 @@ void Init_sctrace(void)
782
952
  DEF_CONST(HOP_FLAG_TS_DL_RX);
783
953
  DEF_CONST(HOP_FLAG_TS_TSC);
784
954
  DEF_CONST(HOP_FLAG_REPLY_TTL);
955
+ DEF_CONST(HOP_FLAG_TCP);
785
956
 
786
957
  DEF_ATTR(list_id);
787
958
  DEF_ATTR(list_name);
@@ -827,20 +998,32 @@ void Init_sctrace(void)
827
998
  DEF_HOP_ATTR(hop_rtt_sec);
828
999
  DEF_HOP_ATTR(hop_rtt_usec);
829
1000
 
1001
+ DEF_HOP_TLV(hop_reply_ipid);
1002
+ DEF_HOP_TLV(hop_reply_iptos);
1003
+ DEF_HOP_TLV(hop_next_hop_mtu);
1004
+ DEF_HOP_TLV(hop_inner_iplen);
1005
+ DEF_HOP_TLV(hop_inner_ipttl);
1006
+ DEF_HOP_TLV(hop_inner_iptos);
1007
+
830
1008
  rb_define_alloc_func(cTrace, sctrace_alloc);
831
1009
 
832
1010
  rb_define_attr(cTrace, "element_type", 1, 0);
833
1011
 
834
1012
  rb_define_method(cTrace, "initialize", sctrace_init, 0);
835
1013
  rb_define_method(cTrace, "src", sctrace_src, 0);
836
- rb_define_method(cTrace, "dst", sctrace_dst, 0);
1014
+ rb_define_method(cTrace, "dest", sctrace_dest, 0);
837
1015
  rb_define_method(cTrace, "src_cmp", sctrace_src_cmp, 1);
838
- rb_define_method(cTrace, "dst_cmp", sctrace_dst_cmp, 1);
1016
+ rb_define_method(cTrace, "dest_cmp", sctrace_dest_cmp, 1);
839
1017
  rb_define_method(cTrace, "write_to", sctrace_write_to, 1);
840
1018
  rb_define_method(cTrace, "list", sctrace_list, 0);
841
1019
  rb_define_method(cTrace, "cycle", sctrace_cycle, 0);
842
1020
  rb_define_method(cTrace, "cycle=", sctrace_set_cycle, 1);
843
1021
  rb_define_method(cTrace, "hop_exists?", sctrace_hop_exists, -1);
1022
+ rb_define_method(cTrace, "hop_has_reply_ttl?", sctrace_hop_has_reply_ttl, -1);
1023
+ rb_define_method(cTrace, "hop_has_tcp_reply?", sctrace_hop_has_tcp_reply, -1);
1024
+ rb_define_method(cTrace, "hop_has_icmp_reply?",sctrace_hop_has_icmp_reply,-1);
1025
+ rb_define_method(cTrace, "hop_tcp_flags_breakdown",
1026
+ sctrace_hop_tcp_flags_breakdown, -1);
844
1027
  rb_define_method(cTrace, "hop_dest_response?", sctrace_hop_dest_response,-1);
845
1028
  rb_define_method(cTrace, "find_dest_response", sctrace_find_dest_response,0);
846
1029
  rb_define_method(cTrace, "complete?", sctrace_complete, 0);
@@ -858,6 +1041,10 @@ void Init_sctrace(void)
858
1041
  rb_define_alias(cTrace, "each_attempt", "each_response");
859
1042
  rb_define_alias(cTrace, "each_hop_and_attempt", "each_hop_and_response");
860
1043
 
1044
+ /* deprecated methods as of v0.9.13 */
1045
+ rb_define_alias(cTrace, "dst", "dest");
1046
+ rb_define_alias(cTrace, "dst_cmp", "dest_cmp");
1047
+
861
1048
  DEF_HOP_ICMP_QUERY(ttl_exp);
862
1049
  DEF_HOP_ICMP_QUERY(ttl_exp_trans);
863
1050
  DEF_HOP_ICMP_QUERY(packet_too_big);
@@ -19,7 +19,7 @@
19
19
  ** along with this program; if not, write to the Free Software
20
20
  ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
21
  **
22
- ** $Id: sctrace.h,v 1.3 2007/11/29 01:33:42 youngh Exp $
22
+ ** $Id: sctrace.h,v 1.4 2008/01/22 23:49:09 youngh Exp $
23
23
  **/
24
24
 
25
25
  #ifndef __SCFILE_H
@@ -32,4 +32,5 @@
32
32
  VALUE sctrace_create(scamper_trace_t *trace);
33
33
  void Init_sctrace(void);
34
34
 
35
- #endif # __SCFILE_H
35
+ #endif /* __SCFILE_H */
36
+