[HECnet] Intermittent Connection with PyDECnet?

Keith Halewood Keith.Halewood at pitbulluk.org
Tue Mar 10 01:28:59 PDT 2020


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




More information about the Hecnet-list mailing list