packet_via_dmem 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
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