<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Me too. My position is that most assuredly isn't what this is.<br>
<br>
I will admit that my background does effect some of my opinions
here. I was part owner of a company that developed software. If
something broke or didn't work, that meant an annoyed user, reduced
NPS, escalation from the help desk to development and then delays.<br>
You <i>really</i> did not want the user picking up the phone to
open a trouble ticket. You wanted them happily using your product
to run their business.<br>
<br>
So I don't feel this is simply 'layers' because it is visible
tangible value. It's a simple decision that saves somebody some
annoyance or possibly throwing up their hands or bothering you.
It's just too easy to run out of bandwidth for something that is
obviously not a heavy lift and is trivial to comment should there be
any maintenance concerns.<br>
<br>
<div class="moz-cite-prefix">On 3/10/20 5:46 PM, Keith Halewood
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:f6d68fb6131e482c9ed84d75d3e1fd1a@MERLIN.pitbulluk.local">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]-->
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
p.MailQuote, li.MailQuote, div.MailQuote
{mso-style-name:"Mail Quote";
mso-style-priority:99;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.EmailStyle21
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:#1F497D;}
span.EmailStyle22
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I
chose the code change I made simply because I don’t use
pcap. I also don’t like layers for layers sake.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif"
lang="EN-US">From:</span></b><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif"
lang="EN-US"> <a class="moz-txt-link-abbreviated" href="mailto:owner-hecnet@Update.UU.SE">owner-hecnet@Update.UU.SE</a>
[<a class="moz-txt-link-freetext" href="mailto:owner-hecnet@Update.UU.SE">mailto:owner-hecnet@Update.UU.SE</a>]
<b>On Behalf Of </b>David Moylan<br>
<b>Sent:</b> 10 March 2020 21:19<br>
<b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:hecnet@Update.UU.SE">hecnet@Update.UU.SE</a><br>
<b>Subject:</b> RE: [HECnet] Intermittent Connection
with PyDECnet?<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US">I’m all for backwards compatibility, however
the /dev/net/tun interface has been in linux since the 2.6
days. A quick google shows that people back in 2010 have
been using it, and browsing on kernel.org for the oldest
archived kernel entry of 2.6.11 shows code examples for
/dev/net/tun dated 2005.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US"><a
href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/networking/tuntap.txt?h=linux-2.6.11.y"
moz-do-not-send="true">https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/networking/tuntap.txt?h=linux-2.6.11.y</a><o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US">I think the starting date for support of
/dev/net/tun is earlier than that of the discontinuation of
support for /dev/tapx.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US">Given that the whole goal of pyDECnet is to
permit usage of decnet on more modern environments, I think
having code that supports back to 2005 is a pretty solid
move.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US">Cheers, Wiz!!<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"
lang="EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm
0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma",sans-serif"
lang="EN-US">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma",sans-serif"
lang="EN-US">
<a href="mailto:owner-hecnet@Update.UU.SE"
moz-do-not-send="true">owner-hecnet@Update.UU.SE</a>
[<a href="mailto:owner-hecnet@Update.UU.SE"
moz-do-not-send="true">mailto:owner-hecnet@Update.UU.SE</a>]
<b>On Behalf Of </b>Thomas DeBellis<br>
<b>Sent:</b> Wednesday, 11 March 2020 2:08 AM<br>
<b>To:</b> <a href="mailto:hecnet@Update.UU.SE"
moz-do-not-send="true">hecnet@Update.UU.SE</a><br>
<b>Subject:</b> Re: [HECnet] Intermittent Connection
with PyDECnet?<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p><span lang="EN-US">Since you may be running both on newer
and older kernels, does it make sense to test for which
tunnel type interface exists and simply use that?<o:p></o:p></span></p>
<p><span lang="EN-US">You don't even need to test versions,
but rather try /dev/net/tun and if it works, use that or
if it fails, use /dev/tapx.<o:p></o:p></span></p>
<p><span lang="EN-US">I'm a big fan of dynamic configuration,
also known in the trade as 'auto magic' or 'automatic nice
things'.<o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div class="MsoNormal" style="text-align:center"
align="center"><span lang="EN-US">
<hr width="100%" size="2" align="center">
</span></div>
<pre><span lang="EN-US">On 3/10/20 9:40 AM, Paul Koning wrote:<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">Thanks, sorry for leaving that dangling. I'll test that and merge it into my code.<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US"> paul<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div class="MsoNormal" style="text-align:center"
align="center"><span lang="EN-US">
<hr width="100%" size="2" align="center">
</span></div>
<pre><span lang="EN-US">On Mar 10, 2020, at 4:28 AM, Keith Halewood <a href="mailto:Keith.Halewood@pitbulluk.org" moz-do-not-send="true"><Keith.Halewood@pitbulluk.org></a> wrote:<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">Hi,<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">These are the changes:<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">In Ethernet.py:<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US"> class _TapEth (_Ethernet):<o:p></o:p></span></pre>
<pre><span lang="EN-US"> def open (self):<o:p></o:p></span></pre>
<pre><span lang="EN-US"> fd = os.open('/dev/net/tun', os.O_RDWR | os.O_NONBLOCK)<o:p></o:p></span></pre>
<pre><span lang="EN-US"> ifr = struct.pack('16sH', self.dev.encode('utf-8'), IFF_TAP | IFF_NO_PI)<o:p></o:p></span></pre>
<pre><span lang="EN-US"> ioctl(fd, TUNSETIFF, ifr)<o:p></o:p></span></pre>
<pre><span lang="EN-US"> self.tap = fd<o:p></o:p></span></pre>
<pre><span lang="EN-US"> self.sellist = ( fd, )<o:p></o:p></span></pre>
<pre><span lang="EN-US"> # Turn the interface on -- needed only on Mac OS<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">With the definitions of those constants up near the top:<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">TUNSETIFF = 0x400454ca<o:p></o:p></span></pre>
<pre><span lang="EN-US">TUNSETOWNER = TUNSETIFF + 2<o:p></o:p></span></pre>
<pre><span lang="EN-US">IFF_TUN = 0x0001<o:p></o:p></span></pre>
<pre><span lang="EN-US">IFF_TAP = 0x0002<o:p></o:p></span></pre>
<pre><span lang="EN-US">IFF_NO_PI = 0x1000<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">Keith<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<div class="MsoNormal" style="text-align:center"
align="center"><span lang="EN-US">
<hr width="100%" size="2" align="center">
</span></div>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">From: <a href="mailto:owner-hecnet@Update.UU.SE" moz-do-not-send="true">owner-hecnet@Update.UU.SE</a> [<a href="mailto:owner-hecnet@Update.UU.SE" moz-do-not-send="true">mailto:owner-hecnet@Update.UU.SE</a>] On Behalf Of David Moylan<o:p></o:p></span></pre>
<pre><span lang="EN-US">Sent: 10 March 2020 07:46<o:p></o:p></span></pre>
<pre><span lang="EN-US">To: <a href="mailto:hecnet@Update.UU.SE" moz-do-not-send="true">hecnet@Update.UU.SE</a><o:p></o:p></span></pre>
<pre><span lang="EN-US">Subject: RE: [HECnet] Intermittent Connection with PyDECnet?<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">Robert Armstrong said on Tuesday, 10 March 2020 4:17 AM<o:p></o:p></span></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US"> FWIW, the "tap:" option in pyDECnet never worked for me. I use pcap<o:p></o:p></span></pre>
</blockquote>
<pre><span lang="EN-US">to<o:p></o:p></span></pre>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre><span lang="EN-US">access tap devices -<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US"> circuit TAP-0 Ethernet pcap:tap0 --single-address --cost=2<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">works for me with Ubuntu 18.04...<o:p></o:p></span></pre>
</blockquote>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">When I first went to play with pyDECnet under Ubuntu 18, I also discovered issues with the tap adapter. Fundamentally the issue comes down to newer kernels (such as in Ubuntu 18) that use a /dev/net/tun interface to communicate instead of /dev/tapx<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">I heard on the list that Keith Halewood had modified Paul's code to work with the newer interface standard, so I reached out to him and he provided me with the changes. It's only a few lines of code that need modification.<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">I believe Keith has provided Paul with the changes. I'd love to see them become mainstream in pyDECnet, as at the moment if I pull down a new build, I have to make the modifications by hand again. <o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">With the code changes, tap works a dream for me. <o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">circuit tap-1022 Ethernet tap:tap1022 --random-address<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
<pre><span lang="EN-US">cheers, Wiz!!<o:p></o:p></span></pre>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
</blockquote>
<pre><span lang="EN-US"><o:p> </o:p></span></pre>
</blockquote>
</div>
</div>
</blockquote>
</body>
</html>