rb-wartslib 0.9.12 → 0.9.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: wl-file.rb,v 1.8 2007/11/29 01:25:42 youngh Exp $
21
+ ## $Id: wl-file.rb,v 1.9 2008/02/02 00:23:40 youngh Exp $
22
22
  #############################################################################
23
23
 
24
24
  module Warts
@@ -50,7 +50,8 @@ class File
50
50
  end
51
51
 
52
52
  if mode == "r" && command
53
- io = IO.popen "#{command} #{path}"
53
+ ENV['RBWARTSLIB_FILE_OPEN_PATH'] = path
54
+ io = IO.popen "#{command} \"$RBWARTSLIB_FILE_OPEN_PATH\""
54
55
  begin
55
56
  retval = __raw_open io, mode, type, &block
56
57
  unless block
@@ -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: wl-trace.rb,v 1.5 2007/11/29 01:26:43 youngh Exp $
21
+ ## $Id: wl-trace.rb,v 1.11 2008/01/25 00:25:59 youngh Exp $
22
22
  #############################################################################
23
23
 
24
24
  module Warts
@@ -32,10 +32,78 @@ class Trace
32
32
  HALT_REASON[Warts::Trace::STOP_NONE] = "S"
33
33
  HALT_REASON[Warts::Trace::STOP_UNREACH] = "U"
34
34
  HALT_REASON[Warts::Trace::STOP_LOOP] = "L"
35
- HALT_REASON[Warts::Trace::STOP_DEAD] = "G"
35
+ HALT_REASON[Warts::Trace::STOP_GAPLIMIT] = "G"
36
36
 
37
37
  public
38
38
 
39
+ # from scamper_trace.h:SCAMPER_TRACE_STOP_*
40
+ STOP_REASON_TEXT = Hash.new { |h, k| "<<UNKNOWN STOP CODE #{k}>>" }
41
+ STOP_REASON_TEXT.merge!({
42
+ Warts::Trace::STOP_NONE => "none (null reason)",
43
+ Warts::Trace::STOP_COMPLETED => "completed (got an ICMP port unreach)",
44
+ Warts::Trace::STOP_UNREACH => "unreach (got an other ICMP unreach code)",
45
+ Warts::Trace::STOP_ICMP => "icmp (got an ICMP msg, not unreach)",
46
+ Warts::Trace::STOP_LOOP => "loop (loop detected)",
47
+ Warts::Trace::STOP_GAPLIMIT => "gaplimit (gaplimit exceeded)",
48
+ Warts::Trace::STOP_ERROR => "error (sendto error)",
49
+ Warts::Trace::STOP_HOPLIMIT => "hoplimit (hoplimit reached)"
50
+ })
51
+
52
+
53
+ # Just a convenience function. This returns the same strings as warts-dump.
54
+ def self.decompose_tcp_flags(flags)
55
+ retval = []
56
+ retval << "fin" if (flags & 0x01) != 0
57
+ retval << "syn" if (flags & 0x02) != 0
58
+ retval << "rst" if (flags & 0x04) != 0
59
+ retval << "psh" if (flags & 0x08) != 0
60
+ retval << "ack" if (flags & 0x10) != 0
61
+ retval << "urg" if (flags & 0x20) != 0
62
+ retval << "ece" if (flags & 0x40) != 0
63
+ retval << "cwr" if (flags & 0x80) != 0
64
+ retval
65
+ end
66
+
67
+
68
+ # Just a convenience function.
69
+ # This returns the same strings as warts-dump, except for "gapcont" which
70
+ # arts-dump doesn't return. See scamper_trace.h:SCAMPER_TRACE_FLAG_*
71
+ def self.decompose_flags(flags)
72
+ retval = []
73
+ retval << "all_attempts" if (flags & Warts::Trace::FLAG_ALLATTEMPTS) != 0
74
+ retval << "pmtud" if (flags & Warts::Trace::FLAG_PMTUD) != 0
75
+ retval << "dltxts" if (flags & Warts::Trace::FLAG_DL) != 0
76
+ retval
77
+ end
78
+
79
+
80
+ # Just a convenience function.
81
+ # This returns the same strings as warts-dump, except for "tcpresp" which
82
+ # arts-dump doesn't return. See scamper_trace.h:SCAMPER_TRACE_HOP_FLAG_*.
83
+ # I commented out printing of REPLY_TTL and TCP because they're mostly of
84
+ # internal interest, and they can be got through accessor methods anyway.
85
+ def self.decompose_hop_flags(flags)
86
+ retval = []
87
+ retval << "sockrxts" if (flags & Warts::Trace::HOP_FLAG_TS_SOCK_RX) != 0
88
+ retval << "dltxts" if (flags & Warts::Trace::HOP_FLAG_TS_DL_TX) != 0
89
+ retval << "dlrxts" if (flags & Warts::Trace::HOP_FLAG_TS_DL_RX) != 0
90
+ retval << "tscrtt" if (flags & Warts::Trace::HOP_FLAG_TS_TSC) != 0
91
+ #retval << "replyttl" if (flags & Warts::Trace::HOP_FLAG_REPLY_TTL) != 0
92
+ #retval << "tcpresp" if (flags & Warts::Trace::HOP_FLAG_TCP) != 0
93
+ retval
94
+ end
95
+
96
+
97
+ def flags_breakdown
98
+ Warts::Trace.decompose_flags flags
99
+ end
100
+
101
+
102
+ def hop_flags_breakdown(hop, response=0)
103
+ Warts::Trace.decompose_hop_flags hop_flags(hop, response)
104
+ end
105
+
106
+
39
107
  # The length of the path (in hops), taking any responding destination into
40
108
  # account.
41
109
  #
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: rb-wartslib
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.9.12
7
- date: 2008-01-18 00:00:00 -08:00
6
+ version: 0.9.13
7
+ date: 2008-02-01 00:00:00 -08:00
8
8
  summary: Ruby extension for reading/writing warts files
9
9
  require_paths:
10
10
  - lib