Hallo liebe Entwickler!
Dieser Patch
gegen max-tdt branch enigma2Code: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 \
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
Code:listener.append(reactor.listenTCP(port,site))
(Impliziert "Alle IPv4-Interfaces - Standard, wenn keines angegeben)
mache
(Impliziert "Alle Interfaces, IPv6 und IPv4")Code:listener.append(reactor.listenTCP(port,site,interface='::'))
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:
Wenn fileExists('/proc/net/if_inet6') wahr ist, hat der Linux-Kernel IPv6Code:... 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) )
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.