packet_via_dmem 0.0.11 → 0.0.12

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 30022f1c19afff5159d4f43092da6619ae53b6d9
4
- data.tar.gz: add5c8735dd246c16836b521c1f6ff83452240c7
3
+ metadata.gz: c3437cddffd7d621744b7ac1d8fbfac6243d5b7f
4
+ data.tar.gz: b50cb9dc98e3faeabb9be6f8d89cf96d28941edb
5
5
  SHA512:
6
- metadata.gz: ff3425c4f05434bf82adfe2f6d0a6e0cb2e668398e1f813d6697e17a2cdfc0086823fb8d88d82c39e86b0d8106e171edd4d16a1f88070ff5f40d39774f13e357
7
- data.tar.gz: bf23433d3758baefec722ef50680ef4dc39602bfd01638cc9fe4bd69d305098d3e37923710aef43bd2d0c06f8d67e2c553e9101a2c1c9370e7e0db06b0e11c01
6
+ metadata.gz: 299fbfc90cc15cdf0e122f850092995423757ad118878feef5811dfcd6b15d362c936e0dd8793bfe033ce7da08c0bd040da4c9a9fd1ecedaecffc41e52517028
7
+ data.tar.gz: 741a8465e4209dce7d095d20ef888feac578f4bb3a33156919d425d0c6ff7094054008445c4c33c9a6986da756ac4c4fd00615c577ee6b6401793ba7480ad394
data/Gemfile CHANGED
@@ -1,428 +1,3 @@
1
+ source 'https://rubygems.org'
1
2
 
2
-
3
-
4
-
5
- <!DOCTYPE html>
6
- <html lang="en" class="">
7
- <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#">
8
- <meta charset='utf-8'>
9
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
10
- <meta http-equiv="Content-Language" content="en">
11
-
12
-
13
- <title>ring-sqa/Gemfile at master · NLNOG/ring-sqa · GitHub</title>
14
- <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
15
- <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
16
- <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png">
17
- <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png">
18
- <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png">
19
- <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png">
20
- <meta property="fb:app_id" content="1401488693436528">
21
-
22
- <meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="NLNOG/ring-sqa" name="twitter:title" /><meta content="ring-sqa - RING partial outage monitor" name="twitter:description" /><meta content="https://avatars3.githubusercontent.com/u/2427817?v=3&amp;s=400" name="twitter:image:src" />
23
- <meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="https://avatars3.githubusercontent.com/u/2427817?v=3&amp;s=400" property="og:image" /><meta content="NLNOG/ring-sqa" property="og:title" /><meta content="https://github.com/NLNOG/ring-sqa" property="og:url" /><meta content="ring-sqa - RING partial outage monitor" property="og:description" />
24
-
25
- <meta name="browser-stats-url" content="/_stats">
26
- <link rel="assets" href="https://assets-cdn.github.com/">
27
- <link rel="conduit-xhr" href="https://ghconduit.com:25035">
28
-
29
- <meta name="pjax-timeout" content="1000">
30
-
31
-
32
- <meta name="msapplication-TileImage" content="/windows-tile.png">
33
- <meta name="msapplication-TileColor" content="#ffffff">
34
- <meta name="selected-link" value="repo_source" data-pjax-transient>
35
- <meta name="google-analytics" content="UA-3769691-2">
36
-
37
- <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="C26407E3:42ED:7480246:54BBC4C7" name="octolytics-dimension-request_id" />
38
-
39
- <meta content="Rails, view, blob#blame" name="analytics-event" />
40
-
41
-
42
-
43
- <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
44
-
45
-
46
- <meta content="authenticity_token" name="csrf-param" />
47
- <meta content="XiutHhAHb6BqRcbR3mv8Z8J1pnCsoE+ARrtLo4JM0S8g3IlDyr/xwKxJVJecjBwooJTn5ypBjk8AyU2Cm/Wx8g==" name="csrf-token" />
48
-
49
- <link href="https://assets-cdn.github.com/assets/github-7260055e0c41349b130992d6233e9ff4ea6a1cf3a4df3560583e3e9aeefa7d05.css" media="all" rel="stylesheet" type="text/css" />
50
- <link href="https://assets-cdn.github.com/assets/github2-e7924c378dad46ea63ea0dde73420a00d3d5ec266553156300933053ebebdfd3.css" media="all" rel="stylesheet" type="text/css" />
51
-
52
-
53
-
54
-
55
- <meta http-equiv="x-pjax-version" content="4890ab13c8781cbb5fe52d61c31101a9">
56
-
57
-
58
- <meta name="description" content="ring-sqa - RING partial outage monitor">
59
- <meta name="go-import" content="github.com/NLNOG/ring-sqa git https://github.com/NLNOG/ring-sqa.git">
60
-
61
- <meta content="2427817" name="octolytics-dimension-user_id" /><meta content="NLNOG" name="octolytics-dimension-user_login" /><meta content="22012833" name="octolytics-dimension-repository_id" /><meta content="NLNOG/ring-sqa" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="22012833" name="octolytics-dimension-repository_network_root_id" /><meta content="NLNOG/ring-sqa" name="octolytics-dimension-repository_network_root_nwo" />
62
- <link href="https://github.com/NLNOG/ring-sqa/commits/master.atom" rel="alternate" title="Recent Commits to ring-sqa:master" type="application/atom+xml">
63
-
64
- </head>
65
-
66
-
67
- <body class="logged_out env-production vis-public">
68
- <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
69
- <div class="wrapper">
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
- <div class="header header-logged-out" role="banner">
78
- <div class="container clearfix">
79
-
80
- <a class="header-logo-wordmark" href="https://github.com/" ga-data-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
81
- <span class="mega-octicon octicon-logo-github"></span>
82
- </a>
83
-
84
- <div class="header-actions" role="navigation">
85
- <a class="button primary" href="/join" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a>
86
- <a class="button" href="/login?return_to=%2FNLNOG%2Fring-sqa%2Fblame%2Fmaster%2FGemfile" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a>
87
- </div>
88
-
89
- <div class="site-search repo-scope js-site-search" role="search">
90
- <form accept-charset="UTF-8" action="/NLNOG/ring-sqa/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/NLNOG/ring-sqa/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
91
- <input type="text"
92
- class="js-site-search-field is-clearable"
93
- data-hotkey="s"
94
- name="q"
95
- placeholder="Search"
96
- data-global-scope-placeholder="Search GitHub"
97
- data-repo-scope-placeholder="Search"
98
- tabindex="1"
99
- autocapitalize="off">
100
- <div class="scope-badge">This repository</div>
101
- </form>
102
- </div>
103
-
104
- <ul class="header-nav left" role="navigation">
105
- <li class="header-nav-item">
106
- <a class="header-nav-link" href="/explore" data-ga-click="(Logged out) Header, go to explore, text:explore">Explore</a>
107
- </li>
108
- <li class="header-nav-item">
109
- <a class="header-nav-link" href="/features" data-ga-click="(Logged out) Header, go to features, text:features">Features</a>
110
- </li>
111
- <li class="header-nav-item">
112
- <a class="header-nav-link" href="https://enterprise.github.com/" data-ga-click="(Logged out) Header, go to enterprise, text:enterprise">Enterprise</a>
113
- </li>
114
- <li class="header-nav-item">
115
- <a class="header-nav-link" href="/blog" data-ga-click="(Logged out) Header, go to blog, text:blog">Blog</a>
116
- </li>
117
- </ul>
118
-
119
- </div>
120
- </div>
121
-
122
-
123
-
124
- <div id="start-of-content" class="accessibility-aid"></div>
125
- <div class="site" itemscope itemtype="http://schema.org/WebPage">
126
- <div id="js-flash-container">
127
-
128
- </div>
129
- <div class="pagehead repohead instapaper_ignore readability-menu">
130
- <div class="container">
131
-
132
- <ul class="pagehead-actions">
133
-
134
-
135
- <li>
136
- <a href="/login?return_to=%2FNLNOG%2Fring-sqa"
137
- class="minibutton with-count star-button tooltipped tooltipped-n"
138
- aria-label="You must be signed in to star a repository" rel="nofollow">
139
- <span class="octicon octicon-star"></span>
140
- Star
141
- </a>
142
-
143
- <a class="social-count js-social-count" href="/NLNOG/ring-sqa/stargazers">
144
- 2
145
- </a>
146
-
147
- </li>
148
-
149
- <li>
150
- <a href="/login?return_to=%2FNLNOG%2Fring-sqa"
151
- class="minibutton with-count js-toggler-target fork-button tooltipped tooltipped-n"
152
- aria-label="You must be signed in to fork a repository" rel="nofollow">
153
- <span class="octicon octicon-repo-forked"></span>
154
- Fork
155
- </a>
156
- <a href="/NLNOG/ring-sqa/network" class="social-count">
157
- 1
158
- </a>
159
- </li>
160
- </ul>
161
-
162
- <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
163
- <span class="mega-octicon octicon-repo"></span>
164
- <span class="author"><a href="/NLNOG" class="url fn" itemprop="url" rel="author"><span itemprop="title">NLNOG</span></a></span><!--
165
- --><span class="path-divider">/</span><!--
166
- --><strong><a href="/NLNOG/ring-sqa" class="js-current-repository" data-pjax="#js-repo-pjax-container">ring-sqa</a></strong>
167
-
168
- <span class="page-context-loader">
169
- <img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
170
- </span>
171
-
172
- </h1>
173
- </div><!-- /.container -->
174
- </div><!-- /.repohead -->
175
-
176
- <div class="container">
177
- <div class="repository-with-sidebar repo-container new-discussion-timeline ">
178
- <div class="repository-sidebar clearfix">
179
-
180
- <nav class="sunken-menu repo-nav js-repo-nav js-sidenav-container-pjax js-octicon-loaders"
181
- role="navigation"
182
- data-pjax="#js-repo-pjax-container"
183
- data-issue-count-url="/NLNOG/ring-sqa/issues/counts">
184
- <ul class="sunken-menu-group">
185
- <li class="tooltipped tooltipped-w" aria-label="Code">
186
- <a href="/NLNOG/ring-sqa" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /NLNOG/ring-sqa">
187
- <span class="octicon octicon-code"></span> <span class="full-word">Code</span>
188
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
189
- </a> </li>
190
-
191
- <li class="tooltipped tooltipped-w" aria-label="Issues">
192
- <a href="/NLNOG/ring-sqa/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /NLNOG/ring-sqa/issues">
193
- <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
194
- <span class="js-issue-replace-counter"></span>
195
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
196
- </a> </li>
197
-
198
- <li class="tooltipped tooltipped-w" aria-label="Pull Requests">
199
- <a href="/NLNOG/ring-sqa/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g p" data-selected-links="repo_pulls /NLNOG/ring-sqa/pulls">
200
- <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
201
- <span class="js-pull-replace-counter"></span>
202
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
203
- </a> </li>
204
-
205
-
206
- </ul>
207
- <div class="sunken-menu-separator"></div>
208
- <ul class="sunken-menu-group">
209
-
210
- <li class="tooltipped tooltipped-w" aria-label="Pulse">
211
- <a href="/NLNOG/ring-sqa/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-selected-links="pulse /NLNOG/ring-sqa/pulse">
212
- <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
213
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
214
- </a> </li>
215
-
216
- <li class="tooltipped tooltipped-w" aria-label="Graphs">
217
- <a href="/NLNOG/ring-sqa/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-selected-links="repo_graphs repo_contributors /NLNOG/ring-sqa/graphs">
218
- <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
219
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
220
- </a> </li>
221
- </ul>
222
-
223
-
224
- </nav>
225
-
226
- <div class="only-with-full-nav">
227
-
228
-
229
- <div class="clone-url open"
230
- data-protocol-type="http"
231
- data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=clone">
232
- <h3><span class="text-emphasized">HTTPS</span> clone URL</h3>
233
- <div class="input-group js-zeroclipboard-container">
234
- <input type="text" class="input-mini input-monospace js-url-field js-zeroclipboard-target"
235
- value="https://github.com/NLNOG/ring-sqa.git" readonly="readonly">
236
- <span class="input-group-button">
237
- <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
238
- </span>
239
- </div>
240
- </div>
241
-
242
-
243
- <div class="clone-url "
244
- data-protocol-type="subversion"
245
- data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=clone">
246
- <h3><span class="text-emphasized">Subversion</span> checkout URL</h3>
247
- <div class="input-group js-zeroclipboard-container">
248
- <input type="text" class="input-mini input-monospace js-url-field js-zeroclipboard-target"
249
- value="https://github.com/NLNOG/ring-sqa" readonly="readonly">
250
- <span class="input-group-button">
251
- <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
252
- </span>
253
- </div>
254
- </div>
255
-
256
-
257
-
258
- <p class="clone-options">You can clone with
259
- <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a> or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
260
- <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you.">
261
- <span class="octicon octicon-question"></span>
262
- </a>
263
- </p>
264
-
265
-
266
-
267
- <a href="/NLNOG/ring-sqa/archive/master.zip"
268
- class="minibutton sidebar-button"
269
- aria-label="Download the contents of NLNOG/ring-sqa as a zip file"
270
- title="Download the contents of NLNOG/ring-sqa as a zip file"
271
- rel="nofollow">
272
- <span class="octicon octicon-cloud-download"></span>
273
- Download ZIP
274
- </a>
275
- </div>
276
- </div><!-- /.repository-sidebar -->
277
-
278
- <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
279
-
280
- <a href="/NLNOG/ring-sqa/blame/2b77a58e8392563916dd7d9c529d7b0820962c48/Gemfile" class="hidden js-permalink-shortcut" data-hotkey="y">Permalink</a>
281
-
282
-
283
-
284
- <div class="breadcrumb css-truncate blame-breadcrumb js-zeroclipboard-container">
285
- <span class="css-truncate-target js-zeroclipboard-target"><span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/NLNOG/ring-sqa" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">ring-sqa</span></a></span></span><span class="separator">/</span><strong class="final-path">Gemfile</strong></span>
286
- <button aria-label="Copy file path to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
287
- </div>
288
-
289
- <div class="line-age-legend">
290
- <span>Newer</span>
291
- <ol>
292
- <li class="heat1"></li>
293
- <li class="heat2"></li>
294
- <li class="heat3"></li>
295
- <li class="heat4"></li>
296
- <li class="heat5"></li>
297
- <li class="heat6"></li>
298
- <li class="heat7"></li>
299
- <li class="heat8"></li>
300
- <li class="heat9"></li>
301
- <li class="heat10"></li>
302
- </ol>
303
- <span>Older</span>
304
- </div>
305
-
306
- <div class="file-box">
307
- <div class="file">
308
- <div class="meta">
309
- <div class="info">
310
- <span class="icon"><span class="octicon octicon-file-text"></span></span>
311
- <span class="mode" title="File Mode">100644</span>
312
- <span class="meta-divider"></span>
313
- <span>3 lines (2 sloc)</span>
314
- <span class="meta-divider"></span>
315
- <span>0.038 kb</span>
316
- </div>
317
- <div class="actions">
318
- <div class="button-group">
319
- <a href="/NLNOG/ring-sqa/raw/master/Gemfile" class="minibutton" id="raw-url">Raw</a>
320
- <a href="/NLNOG/ring-sqa/blob/master/Gemfile" class="minibutton js-update-url-with-hash">Normal view</a>
321
- <a href="/NLNOG/ring-sqa/commits/master/Gemfile" class="minibutton" rel="nofollow">History</a>
322
- </div>
323
- </div>
324
- </div>
325
-
326
- <div class="blob-wrapper">
327
- <table class="blame-container highlight data js-file-line-container">
328
- <tr class="blame-commit">
329
- <td class="blame-commit-info" rowspan="3">
330
- <a href="/NLNOG/ring-sqa/commit/ef6203cc8bfaa017e7d6b7f65845f4de97facce3" class="blame-sha">ef6203c</a>
331
- <img alt="ytti" class="avatar blame-commit-avatar" data-user="200527" height="32" src="https://avatars2.githubusercontent.com/u/200527?v=3&amp;s=64" width="32" />
332
- <a href="/NLNOG/ring-sqa/commit/ef6203cc8bfaa017e7d6b7f65845f4de97facce3" class="blame-commit-title" title="initial commit">initial commit</a>
333
- <div class="blame-commit-meta">
334
- <a href="/ytti" class="muted-link" rel="contributor">ytti</a> authored
335
- <time datetime="2014-07-19T15:42:38Z" is="relative-time">Jul 19, 2014</time>
336
- </div>
337
- </td>
338
- </tr>
339
- <tr class="blame-line">
340
- <td class="line-age heat10"></td>
341
- <td class="blob-num blame-blob-num js-line-number" id="L1">1</td>
342
- <td class="blob-code js-file-line" id="LC1">source <span class="pl-s1"><span class="pl-pds">&#39;</span>https://rubygems.org<span class="pl-pds">&#39;</span></span></td>
343
- </tr>
344
- <tr class="blame-line">
345
- <td class="line-age heat10"></td>
346
- <td class="blob-num blame-blob-num js-line-number" id="L2">2</td>
347
- <td class="blob-code js-file-line" id="LC2">gemspec</td>
348
- </tr>
349
- </table>
350
- </div>
351
-
352
- </div>
353
- </div>
354
-
355
-
356
- </div>
357
-
358
- </div><!-- /.repo-container -->
359
- <div class="modal-backdrop"></div>
360
- </div><!-- /.container -->
361
- </div><!-- /.site -->
362
-
363
-
364
- </div><!-- /.wrapper -->
365
-
366
- <div class="container">
367
- <div class="site-footer" role="contentinfo">
368
- <ul class="site-footer-links right">
369
- <li><a href="https://status.github.com/">Status</a></li>
370
- <li><a href="https://developer.github.com">API</a></li>
371
- <li><a href="http://training.github.com">Training</a></li>
372
- <li><a href="http://shop.github.com">Shop</a></li>
373
- <li><a href="/blog">Blog</a></li>
374
- <li><a href="/about">About</a></li>
375
-
376
- </ul>
377
-
378
- <a href="/" aria-label="Homepage">
379
- <span class="mega-octicon octicon-mark-github" title="GitHub"></span>
380
- </a>
381
-
382
- <ul class="site-footer-links">
383
- <li>&copy; 2015 <span title="0.02539s from github-fe129-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
384
- <li><a href="/site/terms">Terms</a></li>
385
- <li><a href="/site/privacy">Privacy</a></li>
386
- <li><a href="/security">Security</a></li>
387
- <li><a href="/contact">Contact</a></li>
388
- </ul>
389
- </div><!-- /.site-footer -->
390
- </div><!-- /.container -->
391
-
392
-
393
- <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
394
- <div class="fullscreen-container js-suggester-container">
395
- <div class="textarea-wrap">
396
- <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents" placeholder=""></textarea>
397
- <div class="suggester-container">
398
- <div class="suggester fullscreen-suggester js-suggester js-navigation-container"></div>
399
- </div>
400
- </div>
401
- </div>
402
- <div class="fullscreen-sidebar">
403
- <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode">
404
- <span class="mega-octicon octicon-screen-normal"></span>
405
- </a>
406
- <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w"
407
- aria-label="Switch themes">
408
- <span class="octicon octicon-color-mode"></span>
409
- </a>
410
- </div>
411
- </div>
412
-
413
-
414
-
415
- <div id="ajax-error-message" class="flash flash-error">
416
- <span class="octicon octicon-alert"></span>
417
- <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a>
418
- Something went wrong with that request. Please try again.
419
- </div>
420
-
421
-
422
- <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-7e989cd35c6790acb51890a1e7abd63edb596bed83c3b99ac299180550d5b096.js" type="text/javascript"></script>
423
- <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-350c37c6a4c50cfbe8793e5edc796e187b61253f257e91c6c902159734308ffe.js" type="text/javascript"></script>
424
-
425
-
426
- </body>
427
- </html>
428
-
3
+ gemspec
data/capture/generate.rb CHANGED
@@ -25,7 +25,7 @@ class PacketViaDMEM
25
25
  when :sent then sent << packet.packet.join
26
26
  else raise StandardError, "invalid type #{type}"
27
27
  end
28
- headers << packet.header.to_s
28
+ headers << packet.header.to_s.split(/\n/).join('---')
29
29
  originals << packet.original.join
30
30
  end
31
31
  File.write('header-' + name + '.txt', headers.join("\n"))
@@ -35,7 +35,7 @@ class PacketViaDMEM
35
35
  end
36
36
  packet = @opts.original? ? pkt.pretty_original : pkt.pretty_packet
37
37
  packet = pkt.pretty pkt.pop(pop) if pop
38
- puts '# Pkt#%d # %s' % [count+=1, pkt.header]
38
+ puts pkt.header.to_s count+=1
39
39
  puts packet
40
40
  $stderr.puts pkt.header.join(' ') if @opts.headers?
41
41
  puts
@@ -7,13 +7,23 @@ class Header
7
7
  :offset,
8
8
  :size,
9
9
  :port,
10
- :type
10
+ :type,
11
+ :magic1,
12
+ :magic2,
13
+ :magic3 # this is sent only AFAIK, but guarded here just in case
11
14
 
12
- def to_s
13
- ssize = ''
14
- ssize = "size: %d # " % size if msg_type > 0
15
- "RX: %sport: %d (%s) # strm: %d # type: 0x%x # tbl: %d # o: %d" %
16
- [ ssize, port, port.divmod(64).join('/'), stream, type, table, offset ]
15
+ def to_s(packet_number=1)
16
+ str = ''
17
+ str << '# RX %03d # ' % packet_number
18
+ str << 'bytes: %d # ' % size if msg_type > 0
19
+ str << 'stream: %d # ' % stream
20
+ str << 'port: %d (%s) # ' % [port, port.divmod(64).join('/')]
21
+ str << "type: %d\n" % type
22
+ str << '# '
23
+ str << 'table: %d # ' % table
24
+ str << 'offset: %d # ' % offset
25
+ str << 'magic: %x/%x' % [magic1, magic2] if magic1
26
+ str
17
27
  end
18
28
  end
19
29
  end
@@ -16,22 +16,34 @@ class Header
16
16
  :life,
17
17
  :queue_number,
18
18
  :port,
19
- :type
19
+ :type,
20
+ :magic1,
21
+ :magic2,
22
+ :magic3
20
23
 
21
- def to_s
22
- type_str = 'unk'
23
- type_str = 'wan' if msg_type == 8
24
- type_str = 'fab' if msg_type == 0
25
- flags = ''
26
- flags << (statistics ? 'S' : 's')
27
- flags << (increment_reference ? 'I' : 'i')
28
- flags << (fragment_info ? 'F' : 'f')
29
- flags << (drop_hash ? 'H' : 'h')
30
- flags << (decrement_reference ? 'D' : 'd')
31
- flags << (prequeue_priority ? 'P' : 'p')
32
- "TX: %s # %s # P:%d(%s) # Ty:%x # Q(%d@%d) # C:%d # D:%d # O:%d # T:%d # L:%d" %
33
- [ type_str, flags, port, port.divmod(64).join('/'), type, queue_number,
34
- queue_system, color, queue_drop_opcode, offset, table, life ]
24
+ def to_s(packet_number=1)
25
+ str = ''
26
+ str << '# TX %03d # ' % packet_number
27
+ str << (statistics ? 'S' : 's')
28
+ str << (increment_reference ? 'I' : 'i')
29
+ str << (fragment_info ? 'F' : 'f')
30
+ str << (drop_hash ? 'H' : 'h')
31
+ str << (decrement_reference ? 'D' : 'd')
32
+ str << (prequeue_priority ? 'P' : 'p')
33
+ str << ' # '
34
+ str << 'port: %d (%s) # ' % [port, port.divmod(64) ]
35
+ str << 'type: %d # ' % type
36
+ str << 'QoS: %d@%d # ' % [queue_number, queue_system]
37
+ str << "QueueDropOp: %d\n" % [queue_drop_opcode]
38
+ str << '# '
39
+ str << 'color: %d # ' % color
40
+ str << 'offset: %d # ' % offset
41
+ str << 'table: %d # ' % table
42
+ str << 'life: %d # ' % life
43
+ str << 'magic: '
44
+ str << '%x/%x' % [magic1, magic2] if magic1
45
+ str << '/%x' % magic3 if magic3
46
+ str
35
47
  end
36
48
  end
37
49
  end
@@ -8,14 +8,6 @@ class PacketViaDMEM
8
8
  @original[bytes..-1]
9
9
  end
10
10
 
11
- def popped_and_packet packet, pop_bytes, push_bytes
12
- popped = packet[0..pop_bytes-1]
13
- payload = packet[pop_bytes..-1]
14
- raise NoPayload, "no payload for #{packet}" unless payload
15
- payload = push_bytes + payload
16
- [popped, payload]
17
- end
18
-
19
11
  def to_s
20
12
  pretty_packet
21
13
  end
@@ -51,58 +43,63 @@ class PacketViaDMEM
51
43
 
52
44
  private
53
45
 
54
- def get_pop_push pkt, type, port, macs
55
- pop, push = 0, []
56
- case type
57
- when *Type::MPLS
58
- pop, push = general_pop_push(pkt, pop, macs, FAKE[:etype_mpls])
59
- when *Type::SELF
60
- pop, push = self_pop_push(pkt, port, macs, pop)
61
- when *Type::NOPOP
62
- # no op, DMAC follows
46
+ def popped_and_packet packet, pop_bytes, push_bytes
47
+ popped = packet[0..pop_bytes-1]
48
+ payload = packet[pop_bytes..-1]
49
+ raise NoPayload, "no payload for #{packet}" unless payload
50
+ payload = push_bytes + payload
51
+ [popped, payload]
52
+ end
53
+
54
+ def get_pop_push pkt, header
55
+ header.port = pkt.shift.to_i(16)
56
+ header.type = pkt.shift.to_i(16)
57
+ case header.type
58
+ when *Type::MPLS, *Type::SELF, *Type::SENT
59
+ header.magic1 = pkt.shift.to_i(16)
60
+ header.magic2 = pkt.shift.to_i(16)
61
+ magic pkt, header
62
+ when *Type::NOPOP # no-op, DMAC follows
63
+ [0, []]
63
64
  end
64
- [pop, push]
65
65
  end
66
66
 
67
- def general_pop_push pkt, pop, macs, ether_type
68
- pop += 2
69
- if macs
70
- pop+=12
71
- push = pkt[2..13] + ether_type
72
- [pop, push]
73
- else
74
- pop+=3
75
- push = FAKE[:dmac] + FAKE[:smac] + ether_type
76
- [pop, push]
67
+ def magic pkt, header
68
+ case header.magic1
69
+ when 0x00 # the super dodgy one
70
+ magic_self pkt, header
71
+ when 0x01 # we're missing ethertype, need more data to discover etype
72
+ push = pkt[0..11] + FAKE[:etype_mpls]
73
+ [ 12 , push ]
74
+ when 0x20 # we have extra crap
75
+ [ 21, [] ]
76
+ when 0x80 # sent... only?
77
+ header.magic3 = pkt.shift.to_i(16)
78
+ [ 0, [] ]
77
79
  end
78
80
  end
79
81
 
80
- def self_pop_push pkt, port, macs, pop
81
- push = []
82
- case port
82
+ def magic_self pkt, header
83
+ case header.port
83
84
  when 0x80
84
- pop+=14
85
+ [ 12 , [] ]
85
86
  when 0x1f
86
- pop+=7
87
87
  push = FAKE[:dmac] + FAKE[:smac] + FAKE[:etype_ipv4] + FAKE[:ipv4]
88
+ [ 5, push ]
89
+ when 0x20
90
+ push = FAKE[:dmac] + FAKE[:smac] + FAKE[:etype_ipv4]
91
+ [ 3, push ]
88
92
  else
89
- if macs and port == 0x20
90
- pop+=23
91
- else
92
- pop, push = general_pop_push(pkt, pop, macs, FAKE[:etype_ipv4])
93
- end
93
+ $stderr.puts "magic_self: magic: (%x/%x), port: %x'" % [header.magic1, header.magic2, header.port] if @debug
94
94
  end
95
- [pop, push]
96
95
  end
97
96
 
98
-
99
-
100
97
  module Type
101
98
  SELF = [ 0x00, 0x40 ]
102
- NOPOP = [ 0x08, 0x80 ]
103
99
  MPLS = [ 0x20 ]
100
+ SENT = [ 0x12, 0x0e ]
101
+ NOPOP = [ 0x08, 0x80 ]
104
102
  end
105
103
 
106
-
107
104
  end
108
105
  end
@@ -15,24 +15,18 @@ class PacketViaDMEM
15
15
  def parse_packet pkt
16
16
  head = pkt.shift(4).join.to_i(16)
17
17
 
18
- @header.msg_type = (head & 0xf0000000) >> 28
19
- @header.table = (head & 0xfff8000) >> 15
20
- @header.stream = (head & 0x7ff0) >> 4
18
+ @header.msg_type = (head & 0xffffffff) >> 28
19
+ @header.table = (head & 0xfffffff) >> 15
20
+ @header.stream = (head & 0x7fff) >> 4
21
21
  @header.offset = (head & 0xe) >> 1
22
22
  @header.size = (head & 0x1) << 16
23
-
24
23
  @header.size += pkt.shift(2).join.to_i(16) if @header.msg_type == PACKET_HEAD
25
- @header.port = pkt.shift.to_i(16)
26
- @header.type = pkt.shift.to_i(16)
27
-
28
- pop, push = 0, []
29
- macs = pkt.first.to_i(16) > 0 # macs, maybe...
30
24
 
31
- pop, push = get_pop_push pkt, @header.type, @header.port, macs
25
+ pop, push = get_pop_push pkt, @header
32
26
  popped_and_packet pkt, pop, push
33
27
  end
34
28
 
35
- PACKET = 0
29
+ PACKET = 0
36
30
  PACKET_HEAD = 1
37
31
  end
38
32
  end
@@ -32,21 +32,9 @@ class PacketViaDMEM
32
32
  @header.life = (head & 0x7fffff) >> 21
33
33
  @header.queue_number = (head & 0x1fffff)
34
34
 
35
- pop, push = 0, []
36
- @header.port = pkt.shift.to_i(16)
37
- @header.type = pkt.shift.to_i(16)
38
- macs = pkt.first.to_i(16) > 0 # macs, maybe..
39
- # uuhhohh, msg_type is always
40
- if not @header.statistics
41
- pop, push = get_pop_push pkt, @header.type, @header.port, macs
42
- else
43
- pop = 3
44
- end
35
+ pop, push = get_pop_push pkt, @header
45
36
  popped_and_packet pkt, pop, push
46
37
  end
47
38
 
48
- FABRIC = 0
49
- WAN = 8
50
-
51
39
  end
52
40
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'packet_via_dmem'
3
- s.version = '0.0.11'
3
+ s.version = '0.0.12'
4
4
  s.licenses = %w( Apache-2.0 )
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = [ 'Saku Ytti' ]
@@ -43,7 +43,7 @@ describe PacketViaDMEM do
43
43
  it 'produces correct headers' do
44
44
  @parsed.each do |name, packets|
45
45
  packets.each_with_index do |packet, index|
46
- packet.header.to_s.must_equal @header[name][index], "header #{name} at line #{index+1}"
46
+ packet.header.to_s.split(/\n/).join('---').must_equal @header[name][index], "header #{name} at line #{index+1}"
47
47
  end
48
48
  packets.size.must_equal @header[name].size, "header #{name} has incorrect amount of packets"
49
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packet_via_dmem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saku Ytti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-28 00:00:00.000000000 Z
11
+ date: 2015-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop