pio 0.1.1 → 0.2.1

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.
@@ -0,0 +1,16 @@
1
+ require "pio/type/mac-address"
2
+
3
+
4
+ module Pio
5
+ module Type
6
+ module EthernetHeader
7
+ def ethernet_header options
8
+ class_eval do
9
+ mac_address :destination_mac
10
+ mac_address :source_mac
11
+ uint16 :ether_type, :value => options[ :ether_type ]
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ require "bindata"
2
+
3
+
4
+ module Pio
5
+ module Type
6
+ # IP address
7
+ class IpAddress < BinData::Primitive
8
+ array :octets, :type => :uint8, :initial_length => 4
9
+
10
+
11
+ def set value
12
+ self.octets = value
13
+ end
14
+
15
+
16
+ def get
17
+ IP.new octets.collect { | each | "%d" % each }.join( "." )
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+
24
+ ### Local variables:
25
+ ### mode: Ruby
26
+ ### coding: utf-8-unix
27
+ ### indent-tabs-mode: nil
28
+ ### End:
@@ -1,20 +1,21 @@
1
1
  require "bindata"
2
+ require "pio/mac"
2
3
 
3
4
 
4
5
  module Pio
5
- class Lldp
6
+ module Type
6
7
  # MAC address
7
8
  class MacAddress < BinData::Primitive
8
9
  array :octets, :type => :uint8, :initial_length => 6
9
10
 
10
11
 
11
12
  def set value
12
- self.octets = value.split( /:/ ).collect { | each | each.hex }
13
+ self.octets = value
13
14
  end
14
15
 
15
16
 
16
17
  def get
17
- octets.inject( "" ) { | str, each | str + ( "%02x" % each ) }.hex
18
+ Mac.new( octets.inject( "" ) { | str, each | str + ( "%02x" % each ) }.hex )
18
19
  end
19
20
  end
20
21
  end
@@ -1,25 +1,7 @@
1
- #
2
- # Copyright (C) 2013 NEC Corporation
3
- #
4
- # This program is free software; you can redistribute it and/or modify
5
- # it under the terms of the GNU General Public License, version 3, as
6
- # published by the Free Software Foundation.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License along
14
- # with this program; if not, write to the Free Software Foundation, Inc.,
15
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
- #
17
-
18
-
19
1
  # Base module.
20
2
  module Pio
21
3
  # gem version.
22
- VERSION = "0.1.1"
4
+ VERSION = "0.2.1"
23
5
  end
24
6
 
25
7
 
data/pio.org ADDED
@@ -0,0 +1,518 @@
1
+ #+TITLE: Pio の TODO
2
+ #+FILETAGS: PIO
3
+ #+ICALENDAR_EXCLUDE_TAGS: noex
4
+
5
+ GitHub のリポジトリはこちら https://github.com/trema/pio
6
+
7
+ * Special Dates
8
+ * Notes
9
+ ** ARP フォーマット :NOTE:
10
+ :LOGBOOK:
11
+ CLOCK: [2013-09-05 木 17:30]--[2013-09-05 木 17:31] => 0:01
12
+ :END:
13
+ [2013-09-05 木 17:30]
14
+
15
+ 近藤さんおすすめの ARP フォーマット解説。
16
+ http://www.n-study.com/network/arpheader.htm
17
+ ** ターミナルでペアプロするための設定 :NOTE:
18
+ :LOGBOOK:
19
+ CLOCK: [2013-07-22 月 09:29]--[2013-07-22 月 09:30] => 0:01
20
+ :END:
21
+ :PROPERTIES:
22
+ :orgtrello-id: 5201cfedc4c8f14e25000f99
23
+ :ID: B40E64E6-BFD3-4ABA-8F02-E7C180AF2737
24
+ :END:
25
+ [2013-07-22 月 09:29]
26
+
27
+ http://www.zeespencer.com/articles/building-a-remote-pairing-setup/
28
+ * Tasks
29
+ このアイテムをそれぞれのリリースに割り振る。
30
+ ** NEXT git パスワードを省略できるように
31
+ [2013-09-13 金 17:07]
32
+ ** WAITING 鈴木さんルータの ARP 部分を Pio で書き直してもらう :WAITING:
33
+ - State "WAITING" from "TODO" [2013-09-18 水 12:04] \\
34
+ ARP のコードが実機で動いてから
35
+ :LOGBOOK:
36
+ CLOCK: [2013-09-14 土 10:20]--[2013-09-14 土 10:21] => 0:01
37
+ :END:
38
+ [2013-09-14 土 10:20]
39
+ ** WAITING 鈴木さんの IPv4Address への PR を Pio へ誘導 :WAITING:
40
+ - State "WAITING" from "TODO" [2013-09-18 水 12:05] \\
41
+ 本体にマージし 0.2.0 をリリースしてから。
42
+ [2013-09-14 土 10:22]
43
+
44
+ https://github.com/trema/trema-edge/pull/22
45
+ ** TODO flay に PR を送る (FlayTask が動かない件)
46
+ :LOGBOOK:
47
+ CLOCK: [2013-09-18 水 17:20]--[2013-09-18 水 17:21] => 0:01
48
+ :END:
49
+ [2013-09-18 水 17:20]
50
+ ** TODO bindata 1.6.0 の changelog をチェック
51
+ [2013-09-05 木 21:32]
52
+ ** TODO 各 OpenFlow メッセージのパーサを作る
53
+ [2013-09-06 金 19:27]
54
+ ** TODO Nick さんに README の英語をチェックしてもらう
55
+ [2013-09-18 水 12:01]
56
+ * Research and Development
57
+ ** TODO 0.2.0 リリース
58
+ :LOGBOOK:
59
+ CLOCK: [2013-09-13 金 16:30]--[2013-09-13 金 17:02] => 0:32
60
+ CLOCK: [2013-09-13 金 16:29]--[2013-09-13 金 16:30] => 0:01
61
+ CLOCK: [2013-09-13 金 16:28]--[2013-09-13 金 16:29] => 0:01
62
+ CLOCK: [2013-09-13 金 16:26]--[2013-09-13 金 16:27] => 0:01
63
+ CLOCK: [2013-09-13 金 16:13]--[2013-09-13 金 16:26] => 0:13
64
+ CLOCK: [2013-09-13 金 16:07]--[2013-09-13 金 16:11] => 0:04
65
+ CLOCK: [2013-09-13 金 15:53]--[2013-09-13 金 15:54] => 0:01
66
+ CLOCK: [2013-09-13 金 15:45]--[2013-09-13 金 15:48] => 0:03
67
+ CLOCK: [2013-09-13 金 14:05]--[2013-09-13 金 15:43] => 1:38
68
+ CLOCK: [2013-09-13 金 13:25]--[2013-09-13 金 13:28] => 0:03
69
+ CLOCK: [2013-09-13 金 11:40]--[2013-09-13 金 11:56] => 0:16
70
+ CLOCK: [2013-09-13 金 11:27]--[2013-09-13 金 11:28] => 0:01
71
+ CLOCK: [2013-09-13 金 10:32]--[2013-09-13 金 10:33] => 0:01
72
+ CLOCK: [2013-09-13 金 10:27]--[2013-09-13 金 10:31] => 0:04
73
+ CLOCK: [2013-09-13 金 10:06]--[2013-09-13 金 10:07] => 0:01
74
+ CLOCK: [2013-09-13 金 09:59]--[2013-09-13 金 10:05] => 0:06
75
+ CLOCK: [2013-09-05 木 11:04]--[2013-09-05 木 11:05] => 0:01
76
+ :END:
77
+ [2013-09-05 木 11:04]
78
+ *** DONE 実機で検証
79
+ CLOSED: [2013-09-19 木 13:56]
80
+ - State "DONE" from "WAITING" [2013-09-19 木 13:56]
81
+ - State "WAITING" from "TODO" [2013-09-18 水 12:00] \\
82
+ 近藤さんに再度実機でのテストを依頼中。
83
+ :LOGBOOK:
84
+ CLOCK: [2013-09-06 金 16:05]--[2013-09-06 金 16:06] => 0:01
85
+ :END:
86
+ [2013-09-06 金 16:05]
87
+
88
+ 近藤さんが実機検証環境を作り中。
89
+
90
+ その上で Arp Request をつかまえてパースしたり、Arp Request を送るだけの
91
+ 簡単なコントローラを動かし、しばらく動かしてバグがないかを確認してもら
92
+ う。
93
+
94
+ もし何か問題があれば、コードにフィードバックする。
95
+
96
+ **** DONE 実機環境を構築
97
+ CLOSED: [2013-09-18 水 12:00]
98
+ [2013-09-13 金 09:44]
99
+ *** DONE Arp::{Request,Reply} の #mandatory_options をリファクタリング
100
+ CLOSED: [2013-09-19 木 10:29] SCHEDULED: <2013-09-19 木>
101
+ :LOGBOOK:
102
+ CLOCK: [2013-09-19 木 10:23]--[2013-09-19 木 10:29] => 0:06
103
+ CLOCK: [2013-09-19 木 10:07]--[2013-09-19 木 10:08] => 0:01
104
+ :END:
105
+ :PROPERTIES:
106
+ :Effort: 0:30
107
+ :END:
108
+ [2013-09-19 木 10:07]
109
+
110
+ 今の実装だと、「必須オプション」と「それぞれの型」という 2 つの情報が
111
+ 入ってしまっている。「それぞれの型」の情報は、Arp::Message に引き上げ
112
+ たほうがいいと思う。
113
+ *** DONE FlayTask が正しく動いてるか確認
114
+ CLOSED: [2013-09-18 水 17:17] SCHEDULED: <2013-09-18 水>
115
+ [2013-09-18 水 16:54]
116
+
117
+ 最小の FlayTask だけを含んだ Rakefile を作ってみたけどやっぱりダメだっ
118
+ た。なぜか verbose = trueにしたときだけレポートが表示される。FlayTask
119
+ のバグか?
120
+ *** DONE 近藤さんからもらったキャプチャデータを試す
121
+ CLOSED: [2013-09-18 水 16:35] SCHEDULED: <2013-09-18 水>
122
+ :LOGBOOK:
123
+ CLOCK: [2013-09-18 水 16:24]--[2013-09-18 水 16:35] => 0:11
124
+ :END:
125
+ :PROPERTIES:
126
+ :Effort: 1:00
127
+ :END:
128
+ [2013-09-18 水 15:04]
129
+
130
+ https://gist.github.com/shun159/6604955
131
+ *** DONE ruby_topology を新しい Lldp.new に合わせて直す
132
+ CLOSED: [2013-09-18 水 11:12] SCHEDULED: <2013-09-18 水>
133
+ :LOGBOOK:
134
+ CLOCK: [2013-09-18 水 10:45]--[2013-09-18 水 11:12] => 0:27
135
+ CLOCK: [2013-09-17 火 22:45]--[2013-09-17 火 22:46] => 0:01
136
+ :END:
137
+ :PROPERTIES:
138
+ :Effort: 0:30
139
+ :END:
140
+ [2013-09-17 火 22:45]
141
+ *** DONE README.md に ARP の例を追加
142
+ CLOSED: [2013-09-18 水 10:19] SCHEDULED: <2013-09-18 水>
143
+ [2013-09-13 金 16:29]
144
+
145
+ できれば .org から tangle して生成したいけどそれはまた今度の話?
146
+ *** DONE ARP のオプション処理をリファクタリング
147
+ CLOSED: [2013-09-18 水 10:07] SCHEDULED: <2013-09-18 水>
148
+ :LOGBOOK:
149
+ CLOCK: [2013-09-18 水 09:19]--[2013-09-18 水 10:07] => 0:48
150
+ :END:
151
+ :PROPERTIES:
152
+ :Effort: 0:30
153
+ :END:
154
+ [2013-09-18 水 09:17]
155
+ *** DONE require "pio" ですべてロードされるようにする
156
+ CLOSED: [2013-09-17 火 15:20] SCHEDULED: <2013-09-17 火>
157
+ :LOGBOOK:
158
+ CLOCK: [2013-09-13 金 16:27]--[2013-09-13 金 16:28] => 0:01
159
+ :END:
160
+ [2013-09-13 金 16:27]
161
+
162
+ README.md にはそのように書いてあるけど、実際にはそうなっていない。
163
+ *** DONE Lldp のリファクタリング
164
+ CLOSED: [2013-09-17 火 23:01] SCHEDULED: <2013-09-17 火>
165
+ [2013-09-13 金 16:26]
166
+
167
+ ARP のテストのように Lldp.new と Lldp.read のテストだけに絞ってシンプル
168
+ にする。
169
+
170
+ **** DONE lldp_spec.rb にパーサのテストを補強
171
+ CLOSED: [2013-09-17 火 14:27] SCHEDULED: <2013-09-17 火>
172
+ :LOGBOOK:
173
+ CLOCK: [2013-09-17 火 11:08]--[2013-09-17 火 14:27] => 3:19
174
+ CLOCK: [2013-09-17 火 10:52]--[2013-09-17 火 10:53] => 0:01
175
+ :END:
176
+ :PROPERTIES:
177
+ :Effort: 0:30
178
+ :END:
179
+ [2013-09-17 火 10:52]
180
+ **** DONE lldp_spec.rb にジェネレータのテストを補強
181
+ CLOSED: [2013-09-17 火 17:43] SCHEDULED: <2013-09-17 火>
182
+ :LOGBOOK:
183
+ CLOCK: [2013-09-17 火 10:53]--[2013-09-17 火 10:54] => 0:01
184
+ :END:
185
+ :PROPERTIES:
186
+ :Effort: 2:00
187
+ :END:
188
+ [2013-09-17 火 10:53]
189
+ **** DONE README.md の Lldp の使いかたを更新
190
+ CLOSED: [2013-09-17 火 17:50] SCHEDULED: <2013-09-17 火>
191
+ :LOGBOOK:
192
+ CLOCK: [2013-09-17 火 17:45]--[2013-09-17 火 17:46] => 0:01
193
+ :END:
194
+ [2013-09-17 火 17:45]
195
+ **** DONE rake quality の警告をつぶす
196
+ CLOSED: [2013-09-17 火 21:58] SCHEDULED: <2013-09-17 火>
197
+ :LOGBOOK:
198
+ CLOCK: [2013-09-17 火 21:33]--[2013-09-17 火 21:58] => 0:25
199
+ :END:
200
+ [2013-09-17 火 21:32]
201
+ **** DONE rake spec のエラーを直す
202
+ CLOSED: [2013-09-17 火 22:06] SCHEDULED: <2013-09-17 火>
203
+ :LOGBOOK:
204
+ CLOCK: [2013-09-17 火 22:04]--[2013-09-17 火 22:06] => 0:02
205
+ CLOCK: [2013-09-17 火 22:02]--[2013-09-17 火 22:03] => 0:01
206
+ :END:
207
+ [2013-09-17 火 22:02]
208
+
209
+ 2.0 系だけ?MacBook Air で実行したら次のエラーが出た。
210
+
211
+ #+BEGIN_SRC shell
212
+ /Users/yasuhito/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/json/common.rb:270:in `pretty_generate': uninitialized constant JSON::State (NameError)
213
+ from /Users/yasuhito/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/json.rb:16:in `dump'
214
+ from /Users/yasuhito/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/result_merger.rb:69:in `block in store_result'
215
+ from /Users/yasuhito/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/result_merger.rb:68:in `open'
216
+ from /Users/yasuhito/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/result_merger.rb:68:in `store_result'
217
+ from /Users/yasuhito/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov.rb:48:in `result'
218
+ from /Users/yasuhito/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/configuration.rb:133:in `block in at_exit'
219
+ from /Users/yasuhito/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/defaults.rb:52:in `call'
220
+ from /Users/yasuhito/.rvm/gems/ruby-2.0.0-p247/gems/simplecov-0.7.1/lib/simplecov/defaults.rb:52:in `block in <top (required)>'
221
+ /Users/yasuhito/.rvm/rubies/ruby-2.0.0-p247/bin/ruby -S rspec ./spec/pio/arp/reply_spec.rb ./spec/pio/arp/request_spec.rb ./spec/pio/arp_spec.rb ./spec/pio/ip_spec.rb ./spec/pio/lldp/chassis-id-tlv_spec.rb ./spec/pio/lldp/end-of-lldpdu-value_spec.rb ./spec/pio/lldp/frame_spec.rb ./spec/pio/lldp/optional-tlv_spec.rb ./spec/pio/lldp/port-id-tlv_spec.rb ./spec/pio/lldp/ttl-tlv_spec.rb ./spec/pio/lldp_spec.rb ./spec/pio/mac_spec.rb failed
222
+ #+END_SRC
223
+ **** DONE いらないテストを消す
224
+ CLOSED: [2013-09-17 火 22:08] SCHEDULED: <2013-09-17 火>
225
+ :LOGBOOK:
226
+ CLOCK: [2013-09-17 火 22:06]--[2013-09-17 火 22:07] => 0:01
227
+ :END:
228
+ [2013-09-17 火 22:06]
229
+ *** DONE quality タスクの description を追加
230
+ CLOSED: [2013-09-13 金 16:13] SCHEDULED: <2013-09-13 金>
231
+ :LOGBOOK:
232
+ CLOCK: [2013-09-13 金 16:11]--[2013-09-13 金 16:13] => 0:02
233
+ :END:
234
+ [2013-09-05 木 21:32]
235
+ *** DONE Pio::Mac のテストコードを Trema から移植
236
+ CLOSED: [2013-09-13 金 16:07] SCHEDULED: <2013-09-13 金>
237
+ :LOGBOOK:
238
+ CLOCK: [2013-09-13 金 15:54]--[2013-09-13 金 16:07] => 0:13
239
+ CLOCK: [2013-09-13 金 15:44]--[2013-09-13 金 15:45] => 0:01
240
+ :END:
241
+ [2013-09-13 金 15:44]
242
+ *** DONE Pio::IP のテストコードを Trema から移植
243
+ CLOSED: [2013-09-13 金 15:53] SCHEDULED: <2013-09-13 金>
244
+ :LOGBOOK:
245
+ CLOCK: [2013-09-13 金 15:48]--[2013-09-13 金 15:53] => 0:05
246
+ CLOCK: [2013-09-13 金 15:43]--[2013-09-13 金 15:44] => 0:01
247
+ :END:
248
+ [2013-09-13 金 15:43]
249
+ *** DONE Pio::Arp::Reply#initialize の flog 警告を直す
250
+ CLOSED: [2013-09-13 金 13:25] SCHEDULED: <2013-09-13 金>
251
+ :LOGBOOK:
252
+ CLOCK: [2013-09-13 金 11:56]--[2013-09-13 金 13:25] => 1:29
253
+ CLOCK: [2013-09-13 金 10:31]--[2013-09-13 金 10:32] => 0:01
254
+ :END:
255
+ [2013-09-13 金 10:31]
256
+ *** DONE Pio::Arp::Request#initialize の flog 警告を直す
257
+ CLOSED: [2013-09-13 金 11:27] SCHEDULED: <2013-09-13 金>
258
+ :LOGBOOK:
259
+ CLOCK: [2013-09-13 金 10:33]--[2013-09-13 金 11:27] => 0:54
260
+ :END:
261
+ [2013-09-13 金 10:32]
262
+ *** DONE Pio::IP#prefixlen の reek 警告部分を直す
263
+ CLOSED: [2013-09-13 金 10:27] SCHEDULED: <2013-09-13 金>
264
+ :LOGBOOK:
265
+ CLOCK: [2013-09-13 金 10:07]--[2013-09-13 金 10:27] => 0:20
266
+ CLOCK: [2013-09-13 金 10:05]--[2013-09-13 金 10:06] => 0:01
267
+ :END:
268
+ [2013-09-13 金 10:05]
269
+
270
+ 次の警告が出ている。
271
+
272
+ #+BEGIN_SRC shell
273
+ % rake quality
274
+ lib/pio/ip.rb -- 3 warnings:
275
+ Pio::IP#prefixlen has approx 6 statements (TooManyStatements)
276
+ Pio::IP#prefixlen refers to mask more than self (FeatureEnvy)
277
+ Pio::IP#prefixlen refers to range more than self (FeatureEnvy)
278
+ 3 total warnings
279
+ #+END_SRC
280
+ *** DONE rake quality が最後まで走るようにする
281
+ CLOSED: [2013-09-13 金 09:59] SCHEDULED: <2013-09-13 金>
282
+ :LOGBOOK:
283
+ CLOCK: [2013-09-13 金 09:57]--[2013-09-13 金 09:59] => 0:02
284
+ CLOCK: [2013-09-13 金 09:50]--[2013-09-13 金 09:51] => 0:01
285
+ :END:
286
+ [2013-09-13 金 09:50]
287
+
288
+ いまの reek, flog タスク等は問題があったときに例外を上げてそこで止まっ
289
+ てしまうので、次のタスクに行かない。そうではなくて、エラーメッセージだ
290
+ け出して quality タスク全体をひととおり実行するように直す。
291
+ *** DONE ARP パーサを作る (Pio::Arp.read)
292
+ CLOSED: [2013-09-12 木 14:57]
293
+ [2013-08-02 金 17:19]
294
+ **** DONE rake quality にかける
295
+ CLOSED: [2013-09-12 木 11:48] SCHEDULED: <2013-09-12 木>
296
+ [2013-09-12 木 09:09]
297
+ **** DONE RSpec の見直し
298
+ CLOSED: [2013-09-12 木 11:36] SCHEDULED: <2013-09-12 木>
299
+ :LOGBOOK:
300
+ CLOCK: [2013-09-12 木 10:30]--[2013-09-12 木 11:36] => 1:06
301
+ CLOCK: [2013-09-11 水 21:36]--[2013-09-11 水 21:37] => 0:01
302
+ :END:
303
+ [2013-09-11 水 21:36]
304
+
305
+ ここに書いてあるベストプラクティスを参考に、ひととおり見直す。
306
+ http://betterspecs.org/jp/
307
+ **** DONE Arp.read でパースした結果の各フィールドのテストを追加
308
+ CLOSED: [2013-09-12 木 10:08] SCHEDULED: <2013-09-12 木>
309
+ [2013-09-11 水 15:47]
310
+ **** DONE pio/lldp/mac-address.rb -> pio/mac-address.rb に変更
311
+ CLOSED: [2013-09-09 月 13:52]
312
+ :LOGBOOK:
313
+ CLOCK: [2013-09-06 金 16:02]--[2013-09-06 金 16:03] => 0:01
314
+ :END:
315
+ [2013-09-06 金 16:02]
316
+ **** DONE ARP Reply のテストを追加
317
+ CLOSED: [2013-09-09 月 14:17] SCHEDULED: <2013-09-09 月>
318
+ [2013-09-06 金 16:04]
319
+ **** DONE operation の値で ArpRequest と ArpReply クラスを変える
320
+ CLOSED: [2013-09-11 水 14:30]
321
+ :LOGBOOK:
322
+ CLOCK: [2013-09-06 金 16:23]--[2013-09-06 金 16:24] => 0:01
323
+ :END:
324
+ [2013-09-06 金 16:23]
325
+ **** DONE 金曜日分の作業を近藤さんリポジトリに push する
326
+ CLOSED: [2013-09-06 金 16:22]
327
+ :LOGBOOK:
328
+ CLOCK: [2013-09-06 金 16:14]--[2013-09-06 金 16:15] => 0:01
329
+ :END:
330
+ [2013-09-06 金 16:14]
331
+ **** DONE Arp.read で ArpRequest or ArpReply が返ってくる部分のテストを書く
332
+ CLOSED: [2013-09-11 水 14:30]
333
+ [2013-09-11 水 14:10]
334
+ **** DONE いらないファイルがないか探して消す
335
+ CLOSED: [2013-09-11 水 14:54]
336
+ [2013-09-09 月 14:19]
337
+ **** DONE lib/pio/arp/ip-address.rb -> lib/pio/type/ip-address.rb
338
+ CLOSED: [2013-09-11 水 15:45]
339
+ :LOGBOOK:
340
+ CLOCK: [2013-09-11 水 15:43]--[2013-09-11 水 15:44] => 0:01
341
+ :END:
342
+ [2013-09-11 水 15:43]
343
+ **** DONE lib/pio/mac-address.rb -> lib/pio/type/mac-address.rb
344
+ CLOSED: [2013-09-11 水 15:42]
345
+ :LOGBOOK:
346
+ CLOCK: [2013-09-11 水 15:38]--[2013-09-11 水 15:39] => 0:01
347
+ :END:
348
+ [2013-09-11 水 15:38]
349
+ **** DONE 調べる: ARP request と reply でパディングが付くのはどんなとき?
350
+ CLOSED: [2013-09-11 水 15:06]
351
+ :LOGBOOK:
352
+ CLOCK: [2013-09-09 月 14:02]--[2013-09-09 月 14:03] => 0:01
353
+ :END:
354
+ [2013-09-09 月 14:02]
355
+
356
+ 近藤さんが時間のあるときに調べる。
357
+ **** DONE リネーム ArpRequest -> Arp::Request
358
+ CLOSED: [2013-09-11 水 15:01]
359
+ [2013-09-11 水 14:56]
360
+ **** DONE リネーム ArpReply -> Arp::Reply
361
+ CLOSED: [2013-09-11 水 15:05]
362
+ [2013-09-11 水 14:57]
363
+ *** DONE Arp Request のジェネレータを作る (Pio::Arp::Request.new) :Request:
364
+ CLOSED: [2013-09-12 木 14:57]
365
+ :LOGBOOK:
366
+ CLOCK: [2013-09-10 火 11:36]--[2013-09-10 火 11:38] => 0:02
367
+ CLOCK: [2013-09-10 火 11:08]--[2013-09-10 火 11:10] => 0:02
368
+ CLOCK: [2013-09-10 火 10:47]--[2013-09-10 火 10:48] => 0:01
369
+ :END:
370
+ [2013-09-09 月 15:23]
371
+ **** DONE #to_binary を追加
372
+ CLOSED: [2013-09-12 木 14:36] SCHEDULED: <2013-09-12 木>
373
+ [2013-09-12 木 11:51]
374
+ **** DONE RSpec の見直し
375
+ CLOSED: [2013-09-12 木 14:36] SCHEDULED: <2013-09-12 木>
376
+ :LOGBOOK:
377
+ CLOCK: [2013-09-12 木 13:34]--[2013-09-12 木 14:09] => 0:35
378
+ CLOCK: [2013-09-11 水 21:36]--[2013-09-11 水 21:37] => 0:01
379
+ :END:
380
+ [2013-09-11 水 21:36]
381
+
382
+ ここに書いてあるベストプラクティスを参考に、ひととおり見直す。
383
+ http://betterspecs.org/jp/
384
+ **** DONE rake quality にかける
385
+ CLOSED: [2013-09-12 木 14:44] SCHEDULED: <2013-09-12 木>
386
+ [2013-09-12 木 08:47]
387
+ **** DONE Trema の IP アドレスクラスを持ってくる
388
+ CLOSED: [2013-09-11 水 14:05]
389
+ [2013-09-11 水 13:41]
390
+ **** DONE Trema の Mac クラスを Pio に持ってくる
391
+ CLOSED: [2013-09-11 水 13:40] SCHEDULED: <2013-09-11 水>
392
+ :LOGBOOK:
393
+ CLOCK: [2013-09-11 水 11:17]--[2013-09-11 水 11:18] => 0:01
394
+ :END:
395
+ [2013-09-11 水 11:17]
396
+ **** DONE #new に必須オプションが渡されてないときのエラー処理
397
+ CLOSED: [2013-09-11 水 11:03]
398
+ [2013-09-10 火 11:38]
399
+ **** DONE 整数 -> 8bit int の Array に変換するエレガントな書き方
400
+ CLOSED: [2013-09-10 火 11:36] SCHEDULED: <2013-09-10 火>
401
+ :LOGBOOK:
402
+ CLOCK: [2013-09-10 火 11:10]--[2013-09-10 火 11:36] => 0:26
403
+ :END:
404
+ [2013-09-09 月 17:13]
405
+ **** DONE IP アドレスを文字列で指定できるようにする
406
+ CLOSED: [2013-09-10 火 11:08] SCHEDULED: <2013-09-10 火>
407
+ :LOGBOOK:
408
+ CLOCK: [2013-09-10 火 10:48]--[2013-09-10 火 11:08] => 0:20
409
+ :END:
410
+ [2013-09-09 月 17:10]
411
+ **** DONE 00:00:00:00:00:00 な MAC アドレスの名前を調べる
412
+ CLOSED: [2013-09-10 火 10:47] SCHEDULED: <2013-09-10 火>
413
+ :LOGBOOK:
414
+ CLOCK: [2013-09-10 火 10:45]--[2013-09-10 火 10:47] => 0:02
415
+ :END:
416
+ [2013-09-09 月 15:53]
417
+ **** DONE MAC アドレスを文字列で指定できるようにする
418
+ CLOSED: [2013-09-09 月 17:10]
419
+ [2013-09-09 月 15:58]
420
+ **** DONE ARP Request を生成するテストを追加
421
+ CLOSED: [2013-09-09 月 15:56]
422
+ [2013-09-09 月 14:25]
423
+ *** DONE Arp Reply のジェネレータを作る (Pio::Arp::Reply.new) :Reply:
424
+ CLOSED: [2013-09-12 木 14:57]
425
+ [2013-09-09 月 15:26]
426
+ **** DONE #to_binary を追加
427
+ CLOSED: [2013-09-12 木 14:36] SCHEDULED: <2013-09-12 木>
428
+ [2013-09-12 木 11:51]
429
+ **** DONE RSpec の見直し
430
+ CLOSED: [2013-09-12 木 14:36] SCHEDULED: <2013-09-12 木>
431
+ :LOGBOOK:
432
+ CLOCK: [2013-09-12 木 14:09]--[2013-09-12 木 14:36] => 0:27
433
+ CLOCK: [2013-09-11 水 21:36]--[2013-09-11 水 21:37] => 0:01
434
+ :END:
435
+ [2013-09-11 水 21:36]
436
+
437
+ ここに書いてあるベストプラクティスを参考に、ひととおり見直す。
438
+ http://betterspecs.org/jp/
439
+ **** DONE rake quality にかける
440
+ CLOSED: [2013-09-12 木 14:44] SCHEDULED: <2013-09-12 木>
441
+ :LOGBOOK:
442
+ CLOCK: [2013-09-12 木 09:09]--[2013-09-12 木 09:10] => 0:01
443
+ :END:
444
+ [2013-09-12 木 09:09]
445
+ **** DONE ARP Reply を生成するテストを追加
446
+ [2013-09-09 月 14:27]
447
+ *** DONE Arp::Frame と Lldp::Frame の Ethernet ヘッダ部分を共通化
448
+ CLOSED: [2013-09-12 木 15:15] SCHEDULED: <2013-09-12 木>
449
+ :LOGBOOK:
450
+ CLOCK: [2013-09-12 木 14:58]--[2013-09-12 木 15:15] => 0:17
451
+ CLOCK: [2013-09-06 金 16:10]--[2013-09-06 金 16:13] => 0:03
452
+ :END:
453
+ [2013-09-06 金 16:10]
454
+
455
+ たとえば、以下のように 3 つのフィールドがひとつにまとまることになる。
456
+
457
+ #+BEGIN_SRC ruby
458
+ mac_address :destination_mac
459
+ mac_address :source_mac
460
+ uint16 :ether_type, :value => 0x0806
461
+
462
+ #=>
463
+
464
+ ethernet :ethernet
465
+ # or
466
+ ehternet :l2
467
+ #+END_SRC
468
+
469
+ みたいな感じ?
470
+ *** DONE Lldp の :ethertype -> :ether_type に名前を変更
471
+ CLOSED: [2013-09-12 木 15:18] SCHEDULED: <2013-09-12 木>
472
+ :LOGBOOK:
473
+ CLOCK: [2013-09-12 木 15:16]--[2013-09-12 木 15:18] => 0:02
474
+ CLOCK: [2013-09-06 金 20:38]--[2013-09-06 金 20:39] => 0:01
475
+ :END:
476
+ [2013-09-06 金 20:38]
477
+ *** DONE guard の "ambiguous option stat" を直す
478
+ CLOSED: [2013-09-12 木 09:35] SCHEDULED: <2013-09-12 木>
479
+ :LOGBOOK:
480
+ CLOCK: [2013-09-12 木 09:19]--[2013-09-12 木 09:35] => 0:16
481
+ CLOCK: [2013-09-12 木 09:16]--[2013-09-12 木 09:17] => 0:01
482
+ :END:
483
+ [2013-09-12 木 09:16]
484
+ *** DONE フィールド名を修正
485
+ :LOGBOOK:
486
+ CLOCK: [2013-09-10 火 14:46]--[2013-09-10 火 14:48] => 0:02
487
+ :END:
488
+ [2013-09-10 火 14:46]
489
+
490
+ - :source_hardware_address -> :sender_hardware_address
491
+ - :source_protocol_address -> :sender_protocol_address
492
+ *** DONE Arp::Request と Arp::Reply の共通部分をクラスに引き上げ
493
+ CLOSED: [2013-09-13 金 14:05] SCHEDULED: <2013-09-13 金>
494
+ :LOGBOOK:
495
+ CLOCK: [2013-09-13 金 13:28]--[2013-09-13 金 14:05] => 0:37
496
+ :END:
497
+ [2013-09-13 金 13:28]
498
+ ** WAITING 0.3.0 リリース :WAITING:
499
+ - State "WAITING" from "TODO" [2013-09-06 金 17:17] \\
500
+ 0.2.0 が無事に出てから
501
+ [2013-09-05 木 17:29]
502
+ *** TODO ICMP パーサを作る
503
+ [2013-08-02 金 17:19]
504
+ *** NEXT YARD の警告をつぶす
505
+ SCHEDULED: <2014-08-19 火>
506
+ :PROPERTIES:
507
+ :Effort: 0:30
508
+ :END:
509
+ [2013-07-31 水 15:32]
510
+ ** WAITING 0.4.0 リリース :WAITING:
511
+ - State "WAITING" from "TODO" [2013-09-06 金 17:18] \\
512
+ 0.3.0 が無事に出てから。
513
+ [2013-09-06 金 16:30]
514
+ *** TODO DHCP パーサを作る
515
+ [2013-08-02 金 17:17]
516
+
517
+ 近藤さんがすでにコーディング中。Pull-Request が来たらいっしょにリファ
518
+ クタリングして取り込む予定。