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?
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.
I'm a big fan of dynamic configuration, also known in the trade as 'auto
magic' or 'automatic nice things'.
------------------------------------------------------------------------
On 3/10/20 9:40 AM, Paul Koning wrote:
Thanks, sorry for leaving that dangling. I'll test that and merge it into my code.
paul
> ------------------------------------------------------------------------
> On Mar 10, 2020, at 4:28 AM, Keith Halewood <Keith.Halewood at pitbulluk.org>
wrote:
>
> Hi,
>
> These are the changes:
>
> In Ethernet.py:
>
> class _TapEth (_Ethernet):
> def open (self):
> fd = os.open('/dev/net/tun', os.O_RDWR | os.O_NONBLOCK)
> ifr = struct.pack('16sH', self.dev.encode('utf-8'),
IFF_TAP | IFF_NO_PI)
> ioctl(fd, TUNSETIFF, ifr)
> self.tap = fd
> self.sellist = ( fd, )
> # Turn the interface on -- needed only on Mac OS
>
> With the definitions of those constants up near the top:
>
> TUNSETIFF = 0x400454ca
> TUNSETOWNER = TUNSETIFF + 2
> IFF_TUN = 0x0001
> IFF_TAP = 0x0002
> IFF_NO_PI = 0x1000
>
>
>
>
> Keith
>
> ------------------------------------------------------------------------
> From: owner-hecnet at Update.UU.SE [mailto:owner-hecnet at Update.UU.SE] On Behalf Of
David Moylan
> Sent: 10 March 2020 07:46
> To: hecnet at Update.UU.SE
> Subject: RE: [HECnet] Intermittent Connection with PyDECnet?
>
> Robert Armstrong said on Tuesday, 10 March 2020 4:17 AM
>> FWIW, the "tap:" option in pyDECnet never worked for me. I use pcap
> to
>> access tap devices -
>>
>> circuit TAP-0 Ethernet pcap:tap0 --single-address --cost=2
>>
>> works for me with Ubuntu 18.04...
> 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
>
> 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.
>
> 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.
>
> With the code changes, tap works a dream for me.
>
> circuit tap-1022 Ethernet tap:tap1022 --random-address
>
> cheers, Wiz!!
>