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
-----Original Message-----
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!!