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 +4 -4
- data/Gemfile +2 -427
- data/capture/generate.rb +1 -1
- data/lib/packet_via_dmem/cli.rb +1 -1
- data/lib/packet_via_dmem/header/received.rb +16 -6
- data/lib/packet_via_dmem/header/sent.rb +27 -15
- data/lib/packet_via_dmem/packet.rb +40 -43
- data/lib/packet_via_dmem/received.rb +5 -11
- data/lib/packet_via_dmem/sent.rb +1 -13
- data/packet_via_dmem.gemspec +1 -1
- data/spec/packet_via_dmem_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c3437cddffd7d621744b7ac1d8fbfac6243d5b7f
|
|
4
|
+
data.tar.gz: b50cb9dc98e3faeabb9be6f8d89cf96d28941edb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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&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&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="✓" /></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&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&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&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">'</span>https://rubygems.org<span class="pl-pds">'</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>© 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"))
|
data/lib/packet_via_dmem/cli.rb
CHANGED
|
@@ -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
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
[
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
|
81
|
-
|
|
82
|
-
case port
|
|
82
|
+
def magic_self pkt, header
|
|
83
|
+
case header.port
|
|
83
84
|
when 0x80
|
|
84
|
-
|
|
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
|
-
|
|
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 &
|
|
19
|
-
@header.table = (head &
|
|
20
|
-
@header.stream = (head &
|
|
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
|
|
25
|
+
pop, push = get_pop_push pkt, @header
|
|
32
26
|
popped_and_packet pkt, pop, push
|
|
33
27
|
end
|
|
34
28
|
|
|
35
|
-
PACKET
|
|
29
|
+
PACKET = 0
|
|
36
30
|
PACKET_HEAD = 1
|
|
37
31
|
end
|
|
38
32
|
end
|
data/lib/packet_via_dmem/sent.rb
CHANGED
|
@@ -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 =
|
|
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
|
data/packet_via_dmem.gemspec
CHANGED
|
@@ -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.
|
|
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-
|
|
11
|
+
date: 2015-03-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: slop
|