PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Allgemein] Python mit IPv6-Support



SpaceRat
16.12.2013, 17:14
Hallo liebe Entwickler! :)

Dieser Patch

diff --git a/tdt/cvs/cdk/make/contrib-libs.mk b/tdt/cvs/cdk/make/contrib-libs.mk
index c3d0475..8bc166f 100644
--- a/tdt/cvs/cdk/make/contrib-libs.mk
+++ b/tdt/cvs/cdk/make/contrib-libs.mk
@@ -1280,7 +1280,7 @@ $(DEPDIR)/python: bootstrap host_python openssl-dev sqlite libreadline bzip2 @DE
--prefix=/usr \
--sysconfdir=/etc \
--enable-shared \
- --disable-ipv6 \
+ --enable-ipv6 \
--without-cxx-main \
--with-threads \
--with-pymalloc \

gegen max-tdt branch enigma2
baut Python mit IPv6-Support.

Was spricht dafür:
- Plugin-Entwickler können ihre Plugins IPv6-tauglich machen (OpenWebif ist es schon)

Was spricht dagegen:
- Nichts, denn die Python-Scripte müssen zusätzlich noch gezielt umgeschrieben werden, um Dual Stack Sockets zu erzeugen. Noch nicht IPv6-taugliche Plugins merken also gar nichts davon.

How-to Plugin IPv6-tauglich machen:

Beispiel OpenWebif:
Aus

listener.append(reactor.listenTCP(port,site))
(Impliziert "Alle IPv4-Interfaces - Standard, wenn keines angegeben)
mache

listener.append(reactor.listenTCP(port,site,interf ace='::'))
(Impliziert "Alle Interfaces, IPv6 und IPv4")

Da nicht jedes Image IPv6-tauglich ist (Damit ein Plugin IPv6-tauglich gemacht werden kann, müssen es zuerst der Linux-Kernel, dann Python und schlußendlich auch Twisted sein), sollte man einen Fallback einbauen:

...
from socket import gethostname, has_ipv6
...
if has_ipv6 and fileExists('/proc/net/if_inet6') and twisted.version.major >= 12:
# use ipv6
listener.append( reactor.listenTCP(port, site, interface='::') )
else:
# ipv4 only
listener.append( reactor.listenTCP(port, site) )

Wenn fileExists('/proc/net/if_inet6') wahr ist, hat der Linux-Kernel IPv6
socket.has_ipv6 wird wahr, wenn Python mit IPv6-Support gebaut wurde
und
twisted.version.major >= 12
testet auf Twisted 12.x oder höher, wobei Twisted 12.0 die erste Version mit IPv6-Support war.