Merge pull request #44 from ayhanyalcinsoy/master
NM and deps moved into main repo for pisi 2.0
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import shelltools
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
# use python2.x
|
||||||
|
pisitools.dosed("configure", "(\/usr\/include\/)python\*", r"\1python2*")
|
||||||
|
# fix unused direct dependency
|
||||||
|
pisitools.dosed("Makefile.in", "(PLFLAGS=)`\$\$pyconfig --libs`", r"\1'-lpython2.7'")
|
||||||
|
pisitools.dosed("Makefile.in", "(PLDFLAGS=)`\$\$pyconfig --ldflags`", r"\1'-lpython2.7 -Xlinker -export-dynamic'")
|
||||||
|
|
||||||
|
shelltools.echo("config.h.in", "#define USE_INTERP_RESULT 1")
|
||||||
|
shelltools.export("PYTHON", "/usr/bin/python2.7")
|
||||||
|
autotools.configure("\
|
||||||
|
--with-gpm-support \
|
||||||
|
")
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make()
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.install()
|
||||||
|
|
||||||
|
# remove static lib
|
||||||
|
pisitools.remove("/usr/lib/libnewt.a")
|
||||||
|
|
||||||
|
pisitools.dodoc("CHANGES", "COPYING")
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>newt</Name>
|
||||||
|
<Homepage>https://fedorahosted.org/newt/</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>GPLv2</License>
|
||||||
|
<IsA>library</IsA>
|
||||||
|
<IsA>app:console</IsA>
|
||||||
|
<Summary>A windowing toolkit for text mode</Summary>
|
||||||
|
<Description>newt is a windowing toolkit for text mode, which provides many widgets and stackable windows.</Description>
|
||||||
|
<Archive sha1sum="9204940f8cd80910a1d0e80c9bc1b946eb6e730d" type="targz">https://fedorahosted.org/releases/n/e/newt/newt-0.52.17.tar.gz</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency versionFrom="8.6.0">tcl-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>newt</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency versionFrom="8.6.0">tcl</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="executable">/usr/bin</Path>
|
||||||
|
<Path fileType="library">/usr/lib</Path>
|
||||||
|
<Path fileType="localedata">/usr/share/locale</Path>
|
||||||
|
<Path fileType="doc">/usr/share/doc</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>newt-devel</Name>
|
||||||
|
<Summary>Development files for newt</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency release="current">newt</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="header">/usr/include</Path>
|
||||||
|
<Path fileType="data">/usr/lib/pkgconfig</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="5">
|
||||||
|
<Date>2014-07-05</Date>
|
||||||
|
<Version>0.52.17</Version>
|
||||||
|
<Comment>Version bump.</Comment>
|
||||||
|
<Name>Serdar Soytetir</Name>
|
||||||
|
<Email>kaptan@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="4">
|
||||||
|
<Date>2013-11-05</Date>
|
||||||
|
<Version>0.52.16</Version>
|
||||||
|
<Comment>Version bump.</Comment>
|
||||||
|
<Name>Serdar Soytetir</Name>
|
||||||
|
<Email>kaptan@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2013-08-26</Date>
|
||||||
|
<Version>0.52.14</Version>
|
||||||
|
<Comment>Release bump.</Comment>
|
||||||
|
<Name>Serdar Soytetir</Name>
|
||||||
|
<Email>kaptan@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2013-01-30</Date>
|
||||||
|
<Version>0.52.14</Version>
|
||||||
|
<Comment>Build with new relaese Tcl</Comment>
|
||||||
|
<Name>Erdinç Gültekin</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2012-09-17</Date>
|
||||||
|
<Version>0.52.14</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>Serdar Soytetir</Name>
|
||||||
|
<Email>kaptan@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>newt</Name>
|
||||||
|
<Summary xml:lang="tr">Metin tabanlı bir pencere araç seti.</Summary>
|
||||||
|
<Description xml:lang="tr">Newt, metin tabanlı bir pencere araç setidir. Pek çok alet ve istiflenebilir pencere sağlar.</Description>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>newt-devel</Name>
|
||||||
|
<Summary xml:lang="tr">newt için geliştirme dosyaları</Summary>
|
||||||
|
</Package>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
|
||||||
|
#shelltools.system("sed -i -e '/SystemdService/d' obexd/src/org.bluez.obex.service.in")
|
||||||
|
pisitools.dosed("obexd/src/org.bluez.obex.service.in", "SystemdService", deleteLine=True)
|
||||||
|
autotools.autoreconf("-fi")
|
||||||
|
autotools.configure("--prefix=/usr \
|
||||||
|
--sysconfdir=/etc \
|
||||||
|
--localstatedir=/var \
|
||||||
|
--libexecdir=/usr/libexec/ \
|
||||||
|
--enable-sixaxis \
|
||||||
|
--enable-experimental \
|
||||||
|
--disable-android \
|
||||||
|
--enable-datafiles \
|
||||||
|
--enable-optimization \
|
||||||
|
--enable-pie \
|
||||||
|
--enable-threads \
|
||||||
|
--enable-library \
|
||||||
|
--enable-tools \
|
||||||
|
--enable-manpages \
|
||||||
|
--enable-monitor \
|
||||||
|
--enable-udev \
|
||||||
|
--enable-test \
|
||||||
|
--disable-systemd")
|
||||||
|
|
||||||
|
|
||||||
|
pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ")
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make()
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.rawInstall("DESTDIR=%s install-libexecPROGRAMS install-dbussessionbusDATA install-dbussystembusDATA install-dbusDATA install-man8" % get.installDIR())
|
||||||
|
|
||||||
|
|
||||||
|
# Install conf files
|
||||||
|
for i in ["profiles/input", "profiles/network" ,"src"]:
|
||||||
|
pisitools.insinto("/etc/bluetooth", "%s/*.conf" % (i))
|
||||||
|
|
||||||
|
|
||||||
|
# Simple test tools
|
||||||
|
for i in ["bluezutils.py",
|
||||||
|
"dbusdef.py",
|
||||||
|
"ftp-client",
|
||||||
|
"list-devices",
|
||||||
|
"map-client",
|
||||||
|
"monitor-bluetooth",
|
||||||
|
"opp-client",
|
||||||
|
"pbap-client",
|
||||||
|
"sap_client.py",
|
||||||
|
"simple-agent",
|
||||||
|
"simple-endpoint",
|
||||||
|
"simple-player",
|
||||||
|
"test-adapter",
|
||||||
|
"test-alert",
|
||||||
|
"test-cyclingspeed",
|
||||||
|
"test-device",
|
||||||
|
"test-discovery",
|
||||||
|
"test-health",
|
||||||
|
"test-health-sink",
|
||||||
|
"test-heartrate",
|
||||||
|
"test-hfp",
|
||||||
|
"test-manager",
|
||||||
|
"test-nap",
|
||||||
|
"test-network",
|
||||||
|
"test-profile",
|
||||||
|
"test-proximity",
|
||||||
|
"test-sap-server",
|
||||||
|
"test-thermometer"]:
|
||||||
|
pisitools.dobin("test/%s" % i)
|
||||||
|
# for i in
|
||||||
|
# pisitools.dodoc("doc/%s" % i)
|
||||||
|
# Install documents
|
||||||
|
pisitools.dodoc("AUTHORS", "ChangeLog", "README")
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
from comar.service import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
serviceType = "local"
|
||||||
|
serviceDesc = _({"en": "Bluetooth Service",
|
||||||
|
"tr": "Bluetooth Hizmeti"})
|
||||||
|
serviceDefault = "on"
|
||||||
|
|
||||||
|
PIDFILE="/run/bluez.pid"
|
||||||
|
DAEMON ="/usr/libexec/bluetooth/bluetoothd"
|
||||||
|
|
||||||
|
@synchronized
|
||||||
|
def start():
|
||||||
|
|
||||||
|
startService(command=DAEMON,
|
||||||
|
pidfile=PIDFILE,
|
||||||
|
detach=True,
|
||||||
|
donotify=True)
|
||||||
|
|
||||||
|
os.system("pidof bluez + /usr/libexec/bluetooth/bluetoothd > /run/bluez.pid")
|
||||||
|
|
||||||
|
@synchronized
|
||||||
|
def stop():
|
||||||
|
stopService(pidfile=PIDFILE,
|
||||||
|
donotify=True)
|
||||||
|
|
||||||
|
try:
|
||||||
|
os.unlink(PIDFILE)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def status():
|
||||||
|
return isServiceRunning(pidfile=PIDFILE)
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
Submitted By: Armin K. <krejzi at email dot com>
|
||||||
|
Date: 2013-04-29
|
||||||
|
Initial Package Version: 5.17
|
||||||
|
Upstream Status: unknown
|
||||||
|
Origin: Arch Linux (Giovanni Campagna)
|
||||||
|
Description: Allow using obexd without systemd in the user session
|
||||||
|
|
||||||
|
Not all sessions run systemd --user (actually, the majority
|
||||||
|
doesn't), so the dbus daemon must be able to spawn obexd
|
||||||
|
directly, and to do so it needs the full path of the daemon.
|
||||||
|
---
|
||||||
|
Makefile.obexd | 4 ++--
|
||||||
|
obexd/src/org.bluez.obex.service | 4 ----
|
||||||
|
obexd/src/org.bluez.obex.service.in | 4 ++++
|
||||||
|
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
delete mode 100644 obexd/src/org.bluez.obex.service
|
||||||
|
create mode 100644 obexd/src/org.bluez.obex.service.in
|
||||||
|
|
||||||
|
diff --git a/Makefile.obexd b/Makefile.obexd
|
||||||
|
index 3760867..142e7c3 100644
|
||||||
|
--- a/Makefile.obexd
|
||||||
|
+++ b/Makefile.obexd
|
||||||
|
@@ -2,12 +2,12 @@
|
||||||
|
if SYSTEMD
|
||||||
|
systemduserunitdir = @SYSTEMD_USERUNITDIR@
|
||||||
|
systemduserunit_DATA = obexd/src/obex.service
|
||||||
|
+endif
|
||||||
|
|
||||||
|
dbussessionbusdir = @DBUS_SESSIONBUSDIR@
|
||||||
|
dbussessionbus_DATA = obexd/src/org.bluez.obex.service
|
||||||
|
-endif
|
||||||
|
|
||||||
|
-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service
|
||||||
|
+EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in
|
||||||
|
|
||||||
|
obex_plugindir = $(libdir)/obex/plugins
|
||||||
|
|
||||||
|
diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service
|
||||||
|
deleted file mode 100644
|
||||||
|
index a538088..0000000
|
||||||
|
--- a/obexd/src/org.bluez.obex.service
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,4 +0,0 @@
|
||||||
|
-[D-BUS Service]
|
||||||
|
-Name=org.bluez.obex
|
||||||
|
-Exec=/bin/false
|
||||||
|
-SystemdService=dbus-org.bluez.obex.service
|
||||||
|
diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..9c815f2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/obexd/src/org.bluez.obex.service.in
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+[D-BUS Service]
|
||||||
|
+Name=org.bluez.obex
|
||||||
|
+Exec=@libexecdir@/obexd
|
||||||
|
+SystemdService=dbus-org.bluez.obex.service
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
Submitted By: Armin K. <krejzi at email dot com>
|
||||||
|
Date: 2013-04-29
|
||||||
|
Initial Package Version: 5.17
|
||||||
|
Upstream Status: unknown
|
||||||
|
Origin: Arch Linux (Giovanni Campagna)
|
||||||
|
Description: Allow using obexd without systemd in the user session
|
||||||
|
|
||||||
|
Not all sessions run systemd --user (actually, the majority
|
||||||
|
doesn't), so the dbus daemon must be able to spawn obexd
|
||||||
|
directly, and to do so it needs the full path of the daemon.
|
||||||
|
---
|
||||||
|
Makefile.obexd | 4 ++--
|
||||||
|
obexd/src/org.bluez.obex.service | 4 ----
|
||||||
|
obexd/src/org.bluez.obex.service.in | 4 ++++
|
||||||
|
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
delete mode 100644 obexd/src/org.bluez.obex.service
|
||||||
|
create mode 100644 obexd/src/org.bluez.obex.service.in
|
||||||
|
|
||||||
|
diff --git a/Makefile.obexd b/Makefile.obexd
|
||||||
|
index 3760867..142e7c3 100644
|
||||||
|
--- a/Makefile.obexd
|
||||||
|
+++ b/Makefile.obexd
|
||||||
|
@@ -2,12 +2,12 @@
|
||||||
|
if SYSTEMD
|
||||||
|
systemduserunitdir = @SYSTEMD_USERUNITDIR@
|
||||||
|
systemduserunit_DATA = obexd/src/obex.service
|
||||||
|
+endif
|
||||||
|
|
||||||
|
dbussessionbusdir = @DBUS_SESSIONBUSDIR@
|
||||||
|
dbussessionbus_DATA = obexd/src/org.bluez.obex.service
|
||||||
|
-endif
|
||||||
|
|
||||||
|
-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service
|
||||||
|
+EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in
|
||||||
|
|
||||||
|
obex_plugindir = $(libdir)/obex/plugins
|
||||||
|
|
||||||
|
diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service
|
||||||
|
deleted file mode 100644
|
||||||
|
index a538088..0000000
|
||||||
|
--- a/obexd/src/org.bluez.obex.service
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,4 +0,0 @@
|
||||||
|
-[D-BUS Service]
|
||||||
|
-Name=org.bluez.obex
|
||||||
|
-Exec=/bin/false
|
||||||
|
-SystemdService=dbus-org.bluez.obex.service
|
||||||
|
diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..9c815f2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/obexd/src/org.bluez.obex.service.in
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+[D-BUS Service]
|
||||||
|
+Name=org.bluez.obex
|
||||||
|
+Exec=@libexecdir@/obexd
|
||||||
|
+SystemdService=dbus-org.bluez.obex.service
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
Submitted By: Armin K. <krejzi at email dot com>
|
||||||
|
Date: 2013-04-29
|
||||||
|
Initial Package Version: 5.17
|
||||||
|
Upstream Status: unknown
|
||||||
|
Origin: Arch Linux (Giovanni Campagna)
|
||||||
|
Description: Allow using obexd without systemd in the user session
|
||||||
|
|
||||||
|
Not all sessions run systemd --user (actually, the majority
|
||||||
|
doesn't), so the dbus daemon must be able to spawn obexd
|
||||||
|
directly, and to do so it needs the full path of the daemon.
|
||||||
|
---
|
||||||
|
Makefile.obexd | 4 ++--
|
||||||
|
obexd/src/org.bluez.obex.service | 4 ----
|
||||||
|
obexd/src/org.bluez.obex.service.in | 4 ++++
|
||||||
|
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
delete mode 100644 obexd/src/org.bluez.obex.service
|
||||||
|
create mode 100644 obexd/src/org.bluez.obex.service.in
|
||||||
|
|
||||||
|
diff --git a/Makefile.obexd b/Makefile.obexd
|
||||||
|
index 3760867..142e7c3 100644
|
||||||
|
--- a/Makefile.obexd
|
||||||
|
+++ b/Makefile.obexd
|
||||||
|
@@ -2,12 +2,12 @@
|
||||||
|
if SYSTEMD
|
||||||
|
systemduserunitdir = @SYSTEMD_USERUNITDIR@
|
||||||
|
systemduserunit_DATA = obexd/src/obex.service
|
||||||
|
+endif
|
||||||
|
|
||||||
|
dbussessionbusdir = @DBUS_SESSIONBUSDIR@
|
||||||
|
dbussessionbus_DATA = obexd/src/org.bluez.obex.service
|
||||||
|
-endif
|
||||||
|
|
||||||
|
-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service
|
||||||
|
+EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in
|
||||||
|
|
||||||
|
obex_plugindir = $(libdir)/obex/plugins
|
||||||
|
|
||||||
|
diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service
|
||||||
|
deleted file mode 100644
|
||||||
|
index a538088..0000000
|
||||||
|
--- a/obexd/src/org.bluez.obex.service
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,4 +0,0 @@
|
||||||
|
-[D-BUS Service]
|
||||||
|
-Name=org.bluez.obex
|
||||||
|
-Exec=/bin/false
|
||||||
|
-SystemdService=dbus-org.bluez.obex.service
|
||||||
|
diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..9c815f2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/obexd/src/org.bluez.obex.service.in
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+[D-BUS Service]
|
||||||
|
+Name=org.bluez.obex
|
||||||
|
+Exec=@libexecdir@/obexd
|
||||||
|
+SystemdService=dbus-org.bluez.obex.service
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>bluez</Name>
|
||||||
|
<Homepage>http://bluez.sourceforge.net</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>GPLv2+</License>
|
||||||
|
<IsA>service</IsA>
|
||||||
|
<IsA>library</IsA>
|
||||||
|
<IsA>app:console</IsA>
|
||||||
|
<Summary>Official Linux Bluetooth protocol stack</Summary>
|
||||||
|
<Description>bluez contains the tools and libraries that provides support for the core Bluetooth layers and protocols.</Description>
|
||||||
|
<Archive sha1sum="c1707e8ae38b299c07e6c18ff3c26a4b928d03bf" type="tarxz">https://www.kernel.org/pub/linux/bluetooth/bluez-5.27.tar.xz</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>cups-devel</Dependency>
|
||||||
|
<Dependency>dbus-devel</Dependency>
|
||||||
|
<Dependency>libnl-devel</Dependency>
|
||||||
|
<Dependency>alsa-lib-devel</Dependency>
|
||||||
|
<Dependency>gstreamer-devel</Dependency>
|
||||||
|
<Dependency>libsndfile-devel</Dependency>
|
||||||
|
<Dependency>gst-plugins-base-devel</Dependency>
|
||||||
|
<Dependency>libical-devel</Dependency>
|
||||||
|
<Dependency>glib2-devel</Dependency>
|
||||||
|
<Dependency>libical-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
<Patches>
|
||||||
|
<Patch level="1">bluez-5.27-obexd_without_systemd-1.patch</Patch>
|
||||||
|
</Patches>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>bluez</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>cups</Dependency>
|
||||||
|
<Dependency>libnl</Dependency>
|
||||||
|
<Dependency>libusb</Dependency>
|
||||||
|
<Dependency>libical</Dependency>
|
||||||
|
<Dependency>alsa-lib</Dependency>
|
||||||
|
<Dependency>alsa-lib</Dependency>
|
||||||
|
<Dependency>setserial</Dependency>
|
||||||
|
<Dependency>gstreamer</Dependency>
|
||||||
|
<Dependency>libsndfile</Dependency>
|
||||||
|
<Dependency>gst-plugins-base</Dependency>
|
||||||
|
<Dependency release="current">bluez-libs</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="data">/lib/udev/rules.d</Path>
|
||||||
|
<Path fileType="data">/lib/systemd/system</Path>
|
||||||
|
<Path fileType="data">/usr/share/misc</Path>
|
||||||
|
<Path fileType="executable">/usr/bin</Path>
|
||||||
|
<Path fileType="executable">/usr/sbin</Path>
|
||||||
|
<Path fileType="executable">/lib/udev</Path>
|
||||||
|
<Path fileType="executable">/lib/bluetooth/obexd</Path>
|
||||||
|
<Path fileType="executable">/lib/bluetooth/bluetoothd</Path>
|
||||||
|
<Path fileType="library">/usr/lib</Path>
|
||||||
|
<Path fileType="executable">/usr/libexec</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
<Path fileType="data">/var/lib/bluetooth</Path>
|
||||||
|
<Path fileType="data">/usr/share/alsa/bluetooth.conf</Path>
|
||||||
|
<Path fileType="data">/usr/share/dbus-1</Path>
|
||||||
|
<Path fileType="config">/etc</Path>
|
||||||
|
</Files>
|
||||||
|
<Provides>
|
||||||
|
<COMAR script="service.py">System.Service</COMAR>
|
||||||
|
</Provides>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>bluez-libs</Name>
|
||||||
|
<Summary>Libraries for use in Bluetooth applications</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>libical</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="library">/usr/lib/libbluetooth.so*</Path>
|
||||||
|
<Path fileType="doc">/usr/share/doc</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>bluez-libs-devel</Name>
|
||||||
|
<Summary>Development files for bluez-libs</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency release="current">bluez-libs</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="header">/usr/include/bluetooth</Path>
|
||||||
|
<Path fileType="data">/usr/lib/pkgconfig</Path>
|
||||||
|
</Files>
|
||||||
|
<Provides>
|
||||||
|
</Provides>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="8">
|
||||||
|
<Date>2015-01-29</Date>
|
||||||
|
<Version>5.27</Version>
|
||||||
|
<Comment>rebuild.</Comment>
|
||||||
|
<Name>Vedat Demir</Name>
|
||||||
|
<Email>vedat@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="7">
|
||||||
|
<Date>2015-01-25</Date>
|
||||||
|
<Version>5.27</Version>
|
||||||
|
<Comment>Version bump.</Comment>
|
||||||
|
<Name>Stefan Gronewold(groni)</Name>
|
||||||
|
<Email>groni@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="6">
|
||||||
|
<Date>2014-07-05</Date>
|
||||||
|
<Version>5.21</Version>
|
||||||
|
<Comment>Version bump and bugs fix.</Comment>
|
||||||
|
<Name>Vedat Demir</Name>
|
||||||
|
<Email>vedat@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="5">
|
||||||
|
<Date>2014-05-23</Date>
|
||||||
|
<Version>5.18</Version>
|
||||||
|
<Comment>Version bump</Comment>
|
||||||
|
<Name>Burak Fazıl Ertürk</Name>
|
||||||
|
<Email>burakerturk@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="4">
|
||||||
|
<Date>2014-01-28</Date>
|
||||||
|
<Version>4.101</Version>
|
||||||
|
<Comment>Rebuild Unused</Comment>
|
||||||
|
<Name>Varol Maksutoğlu</Name>
|
||||||
|
<Email>waroi@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2013-08-27</Date>
|
||||||
|
<Version>4.101</Version>
|
||||||
|
<Comment>R.Bump</Comment>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2013-06-28</Date>
|
||||||
|
<Version>4.101</Version>
|
||||||
|
<Comment>Add patches, --enable-hid2hci --enable-wiimote</Comment>
|
||||||
|
<Name>Marcin Bojara</Name>
|
||||||
|
<Email>marcin@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2013-01-09</Date>
|
||||||
|
<Version>4.101</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>Erdinç Gültekin</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>bluez</Name>
|
||||||
|
<Summary xml:lang="tr">Linux resmi Bluetooth protokol yığını</Summary>
|
||||||
|
<Description xml:lang="tr">Bu projenin genel amacı Linux'ta Bluetooth kablosuz standartların ayrıntılarını yerine getirmektir.</Description>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>bluez-libs</Name>
|
||||||
|
<Summary xml:lang="tr">Uygulamalar için bluetooth erişim kitaplığı</Summary>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>bluez-libs-devel</Name>
|
||||||
|
<Summary xml:lang="tr">bluez-libs için geliştirme dosyaları</Summary>
|
||||||
|
</Package>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import shelltools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
#shelltools.system("./autogen.sh")
|
||||||
|
autotools.configure("--disable-static \
|
||||||
|
--enable-more-warnings=yes \
|
||||||
|
--with-udev-base-dir=/lib/udev \
|
||||||
|
--with-tests=yes \
|
||||||
|
--with-polkit=no")
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make()
|
||||||
|
|
||||||
|
def check():
|
||||||
|
autotools.make("check")
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
|
||||||
|
|
||||||
|
pisitools.dodoc("README", "COPYING")
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>ModemManager</Name>
|
||||||
|
<Homepage>http://projects.gnome.org/NetworkManager</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>LGPLv2.1</License>
|
||||||
|
<IsA>app:console</IsA>
|
||||||
|
<IsA>service</IsA>
|
||||||
|
<Summary>A manager framework for mobile broadband modems</Summary>
|
||||||
|
<Description>ModemManager provides a unified high level API for communicating with mobile broadband modems.</Description>
|
||||||
|
<Archive sha1sum="1e17965716a1b27a8b250e813dbeb135d88b0bb9" type="tarxz">http://www.freedesktop.org/software/ModemManager/ModemManager-1.2.0.tar.xz</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>ppp-devel</Dependency>
|
||||||
|
<Dependency>libqmi-devel</Dependency>
|
||||||
|
<Dependency>libmbim-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>ModemManager</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>ppp</Dependency>
|
||||||
|
<Dependency>libqmi</Dependency>
|
||||||
|
<Dependency>libmbim</Dependency>
|
||||||
|
<Dependency>libmm-glib</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="doc">/usr/share/doc</Path>
|
||||||
|
<Path fileType="executable">/usr/sbin</Path>
|
||||||
|
<Path fileType="data">/usr/share/icons</Path>
|
||||||
|
<Path fileType="localedata">/usr/share/locale</Path>
|
||||||
|
<Path fileType="data">/usr/share/dbus-1</Path>
|
||||||
|
<Path fileType="data">/usr/share/gir-1.0/ModemManager-1.0.gir</Path>
|
||||||
|
<Path fileType="data">/lib/udev/rules.d/</Path>
|
||||||
|
<Path fileType="data">/etc/dbus-1/system.d/</Path>
|
||||||
|
<Path fileType="library">/usr/lib/ModemManager</Path>
|
||||||
|
<Path fileType="library">/usr/lib/girepository-1.0/ModemManager-1.0.typelib</Path>
|
||||||
|
<Path fileType="man">/usr/share/man/man8/ModemManager.8</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>ModemManager-devel</Name>
|
||||||
|
<Summary>Development files for ModemManager</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency release="current">ModemManager</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="header">/usr/include/ModemManager/</Path>
|
||||||
|
<Path fileType="data">/usr/lib/pkgconfig/ModemManager.pc</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>libmm-glib</Name>
|
||||||
|
<Summary>D-Bus service for managing modems - shared libraries</Summary>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="executable">/usr/bin</Path>
|
||||||
|
<Path fileType="data">/usr/share/vala/vapi/libmm-glib.vapi </Path>
|
||||||
|
<Path fileType="data">/usr/share/vala/vapi/libmm-glib.deps </Path>
|
||||||
|
<Path fileType="data">/usr/lib/libmm-glib.so*</Path>
|
||||||
|
<Path fileType="man">/usr/share/man/man8/mmcli.8</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>libmm-glib-devel</Name>
|
||||||
|
<Summary>Development files for libmm-glib</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>ModemManager-devel</Dependency>
|
||||||
|
<Dependency release="current">libmm-glib</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="header">/usr/include/libmm-glib/</Path>
|
||||||
|
<Path fileType="data">/usr/lib/pkgconfig/mm-glib.pc</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2014-02-17</Date>
|
||||||
|
<Version>1.2.0</Version>
|
||||||
|
<Comment>Version bump.</Comment>
|
||||||
|
<Name>Yusuf Aydemir</Name>
|
||||||
|
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2014-01-20</Date>
|
||||||
|
<Version>1.0.0</Version>
|
||||||
|
<Comment>Version Bump</Comment>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2012-08-28</Date>
|
||||||
|
<Version>5.3.96</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>ModemManager</Name>
|
||||||
|
<Summary xml:lang="tr">Mobil modemler için yönetim katmanı</Summary>
|
||||||
|
<Description xml:lang="tr">ModemManager, 3G ve GSM gibi mobil genişbant modemlerle D-Bus üzerinden iletişimi sağlayan bir sistem hizmetidir.</Description>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>ModemManager-devel</Name>
|
||||||
|
<Summary xml:lang="tr">ModemManager için geliştirme dosyaları</Summary>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>libmm-glib</Name>
|
||||||
|
<Summary xml:lang="en">D-Bus service for managing modems - shared libraries</Summary>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>libmm-glib-devel</Name>
|
||||||
|
<Summary xml:lang="en">Development files for libmm-glib</Summary>
|
||||||
|
<Summary xml:lang="tr">libmm-glib için geliştirme dosyaları</Summary>
|
||||||
|
</Package>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
autotools.configure("--disable-static")
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make("-j1")
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.rawInstall("DESTDIR=%s man_prefix=/usr/share/man" % get.installDIR())
|
||||||
|
pisitools.insinto("/etc", "src/config/hosts.atm")
|
||||||
|
|
||||||
|
pisitools.dodoc("AUTHORS", "THANKS", "ChangeLog", "BUGS", "NEWS", "README")
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
diff -Nur linux-atm-2.5.0-old/src/led/main.c linux-atm-2.5.0/src/led/main.c
|
||||||
|
--- linux-atm-2.5.0-old/src/led/main.c 2008-04-25 03:39:28.000000000 +0300
|
||||||
|
+++ linux-atm-2.5.0/src/led/main.c 2008-04-25 03:39:43.000000000 +0300
|
||||||
|
@@ -46,6 +46,7 @@
|
||||||
|
#include <atmd.h>
|
||||||
|
|
||||||
|
#include <linux/atmlec.h>
|
||||||
|
+#include <limits.h>
|
||||||
|
|
||||||
|
/* Local incs */
|
||||||
|
#include "join.h"
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- linux-atm/src/ilmid/Makefile.am~ 2007-07-11 17:07:57.000000000 +0100
|
||||||
|
+++ linux-atm/src/ilmid/Makefile.am 2007-08-23 09:22:45.000000000 +0100
|
||||||
|
@@ -2,7 +2,7 @@ SUBDIRS = asn1
|
||||||
|
|
||||||
|
INCLUDES = -I$(srcdir)/../ilmid/asn1
|
||||||
|
|
||||||
|
-sbin_PROGRAMS = ilmid ilmidiag
|
||||||
|
+sbin_PROGRAMS = ilmid
|
||||||
|
|
||||||
|
ilmid_SOURCES = rfc1157_snmp.c rfc1157_snmp.h rfc1155_smi.c rfc1155_smi.h \
|
||||||
|
util.c util.h io.c io.h message.c message.h \
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- linux-atm/src/maint/atmtcp.c~ 2007-08-22 14:59:21.000000000 +0100
|
||||||
|
+++ linux-atm/src/maint/atmtcp.c 2007-08-22 18:27:24.000000000 +0100
|
||||||
|
@@ -109,7 +109,7 @@ static void control(int in_link,struct a
|
||||||
|
switch (msg->type) {
|
||||||
|
case ATMTCP_CTRL_OPEN:
|
||||||
|
if (out->ops->open)
|
||||||
|
- changed += out->ops->open(out,in_link,msg);
|
||||||
|
+ changed += (out->ops->open)(out,in_link,msg);
|
||||||
|
break;
|
||||||
|
case ATMTCP_CTRL_CLOSE:
|
||||||
|
if (out->ops->close)
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
diff -up linux-atm-2.5.1/src/led/zeppelin.8.fixman linux-atm-2.5.1/src/led/zeppelin.8
|
||||||
|
--- linux-atm-2.5.1/src/led/zeppelin.8.fixman 2003-05-02 19:35:04.000000000 +0200
|
||||||
|
+++ linux-atm-2.5.1/src/led/zeppelin.8 2010-10-13 12:58:18.000000000 +0200
|
||||||
|
@@ -99,7 +99,7 @@ Ring and ATM parts of the ELAN, so using
|
||||||
|
recommended. Token Ring support has received less testing than its
|
||||||
|
Ethernet counterpart.
|
||||||
|
.SH FILES
|
||||||
|
-.IP \fI/var/run/lec[interface number].pid\fP
|
||||||
|
+\fI/var/run/lec[interface number].pid\fP
|
||||||
|
The file containing the process id of zeppelin.
|
||||||
|
.SH BUGS
|
||||||
|
John Bonham died 1980 and Led Zeppelin broke.
|
||||||
|
diff -up linux-atm-2.5.1/src/mpoad/mpcd.8.fixman linux-atm-2.5.1/src/mpoad/mpcd.8
|
||||||
|
--- linux-atm-2.5.1/src/mpoad/mpcd.8.fixman 2001-10-10 00:33:07.000000000 +0200
|
||||||
|
+++ linux-atm-2.5.1/src/mpoad/mpcd.8 2010-10-13 12:59:14.000000000 +0200
|
||||||
|
@@ -28,7 +28,7 @@ mpcd \- ATM MPOA (Multi\-Protocol Over A
|
||||||
|
.B ]]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
MPOA client
|
||||||
|
-.SM(MPC) is responsible for creating and receiving
|
||||||
|
+.SM (MPC) is responsible for creating and receiving
|
||||||
|
internetwork layer shortcuts. Using these shortcuts MPCs forward
|
||||||
|
unicast internetwork layer packets effectively over ATM without need
|
||||||
|
for routing protocols.
|
||||||
|
@@ -43,7 +43,7 @@ accepts shortcuts and packets arriving o
|
||||||
|
shortcuts is done with the help of
|
||||||
|
.SM MPOA
|
||||||
|
server
|
||||||
|
-.SM(MPS).
|
||||||
|
+.SM (MPS).
|
||||||
|
.PP
|
||||||
|
Just as the Linux
|
||||||
|
.SM LAN
|
||||||
|
diff -up linux-atm-2.5.1/src/sigd/atmsigd.conf.4.fixman linux-atm-2.5.1/src/sigd/atmsigd.conf.4
|
||||||
|
--- linux-atm-2.5.1/src/sigd/atmsigd.conf.4.fixman 2001-10-10 00:33:07.000000000 +0200
|
||||||
|
+++ linux-atm-2.5.1/src/sigd/atmsigd.conf.4 2010-10-13 12:58:49.000000000 +0200
|
||||||
|
@@ -125,7 +125,7 @@ a comment. The `#' character cannot be e
|
||||||
|
.P
|
||||||
|
If an option is specified in \fBatmsigd.conf\fP and on the command
|
||||||
|
line, the command line has priority.
|
||||||
|
-.COMPATIBILITY
|
||||||
|
+.SH COMPATIBILITY
|
||||||
|
Certain options used by past versions of \fBatmsigd\fP but no longer documented
|
||||||
|
on the man page are still recognized and supported, but they also yield a
|
||||||
|
warning message. Future versions of \fBatmsigd\fP will not recognize those
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
diff -Nur linux-atm-2.5.0-old/src/arpd/arp.c linux-atm-2.5.0/src/arpd/arp.c
|
||||||
|
--- linux-atm-2.5.0-old/src/arpd/arp.c 2008-04-25 03:34:35.000000000 +0300
|
||||||
|
+++ linux-atm-2.5.0/src/arpd/arp.c 2008-04-25 03:34:51.000000000 +0300
|
||||||
|
@@ -15,7 +15,6 @@
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h> /* for linux/if_arp.h */
|
||||||
|
#include <netinet/in.h> /* for ntohs, etc. */
|
||||||
|
-#define _LINUX_NETDEVICE_H /* very crude hack for glibc2 */
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/if_arp.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
diff -Nur linux-atm-2.5.0-old/src/arpd/io.c linux-atm-2.5.0/src/arpd/io.c
|
||||||
|
--- linux-atm-2.5.0-old/src/arpd/io.c 2008-04-25 03:34:35.000000000 +0300
|
||||||
|
+++ linux-atm-2.5.0/src/arpd/io.c 2008-04-25 03:34:51.000000000 +0300
|
||||||
|
@@ -21,7 +21,6 @@
|
||||||
|
#include <atm.h>
|
||||||
|
#include <linux/atmclip.h> /* for CLIP_DEFAULT_IDLETIMER */
|
||||||
|
#include <linux/atmarp.h>
|
||||||
|
-#define _LINUX_NETDEVICE_H /* glibc2 */
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/if_arp.h>
|
||||||
|
|
||||||
|
diff -Nur linux-atm-2.5.0-old/src/arpd/itf.c linux-atm-2.5.0/src/arpd/itf.c
|
||||||
|
--- linux-atm-2.5.0-old/src/arpd/itf.c 2008-04-25 03:34:35.000000000 +0300
|
||||||
|
+++ linux-atm-2.5.0/src/arpd/itf.c 2008-04-25 03:34:51.000000000 +0300
|
||||||
|
@@ -12,7 +12,6 @@
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <linux/atmclip.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
-#define _LINUX_NETDEVICE_H /* glibc2 */
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/if_arp.h>
|
||||||
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
Index: linux-atm-2.5.1/src/config/Makefile.in
|
||||||
|
===================================================================
|
||||||
|
--- linux-atm-2.5.1.orig/src/config/Makefile.in
|
||||||
|
+++ linux-atm-2.5.1/src/config/Makefile.in
|
||||||
|
@@ -413,10 +413,10 @@ uninstall-am: uninstall-local uninstall-
|
||||||
|
|
||||||
|
|
||||||
|
install-exec-local:
|
||||||
|
- -cp hosts.atm /etc
|
||||||
|
+ -cp hosts.atm $(DESTDIR)$(sysconfdir)
|
||||||
|
|
||||||
|
uninstall-local:
|
||||||
|
- -rm /etc/hosts.atm
|
||||||
|
+ -rm $(DESTDIR)$(sysconfdir)/hosts.atm
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>linux-atm</Name>
|
||||||
|
<Homepage>http://linux-atm.sourceforge.net/</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>GPLv2</License>
|
||||||
|
<IsA>app:console</IsA>
|
||||||
|
<IsA>library</IsA>
|
||||||
|
<Summary>Tools to support ATM networking under Liunx</Summary>
|
||||||
|
<Description>linux-atm contains tools for Asynchronous Transfer Mode. Supports raw ATM connections (PVCs and SVCs), IP over ATM, LAN emulation, MPOA, Arequipa, and some others.</Description>
|
||||||
|
<Archive sha1sum="5a64964415bf19f855fb9a481b066ede3010aa2a" type="targz">mirrors://sourceforge/project/linux-atm/linux-atm/2.5.2/linux-atm-2.5.2.tar.gz</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>flex</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
<Patches>
|
||||||
|
<Patch level="1">man-pages.patch</Patch>
|
||||||
|
<!--<Patch level="1">linux-atm-2.5.0-open-macro.patch</Patch>
|
||||||
|
<Patch level="1">linux-atm-2.5.0-disable-ilmidiag.patch</Patch>
|
||||||
|
<Patch level="1">gcc43.patch</Patch>
|
||||||
|
<Patch level="1">netdevice.patch</Patch>-->
|
||||||
|
</Patches>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>linux-atm</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>flex</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="firmware">/lib/firmware</Path>
|
||||||
|
<Path fileType="executable">/usr/sbin</Path>
|
||||||
|
<Path fileType="executable">/usr/bin</Path>
|
||||||
|
<Path fileType="config">/etc</Path>
|
||||||
|
<Path fileType="library">/usr/lib</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
<Path fileType="doc">/usr/share/doc</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>linux-atm-devel</Name>
|
||||||
|
<Summary>Development files for linux-atm</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency release="current">linux-atm</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="header">/usr/include</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2015-04-13</Date>
|
||||||
|
<Version>2.5.2</Version>
|
||||||
|
<Comment>Version bump.</Comment>
|
||||||
|
<Name>Ertuğrul Erata</Name>
|
||||||
|
<Email>ertugrulerata@gmail.com</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2010-10-13</Date>
|
||||||
|
<Version>2.5.1</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>Gökcen Eraslan</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>linux-atm</Name>
|
||||||
|
<Summary xml:lang="tr">ATM ağ bağlantısı desteği için araçlar</Summary>
|
||||||
|
<Description xml:lang="tr">linux-atm ATM (Asynchronous Transfer Mode) bağlantısı için gerekli çeşitli araçlar ve kitaplıklarını içerir.</Description>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>linux-atm-devel</Name>
|
||||||
|
<Summary xml:lang="tr">linux-atm için geliştirme dosyaları</Summary>
|
||||||
|
</Package>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt.
|
||||||
|
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
autotools.configure()
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make()
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
|
||||||
|
|
||||||
|
pisitools.dodoc("ChangeLog", "COPYING", "README*")
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>mobile-broadband-provider-info</Name>
|
||||||
|
<Homepage>http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>public-domain</License>
|
||||||
|
<IsA>data</IsA>
|
||||||
|
<Summary>Service provider specific settings of mobile broadband providers in different countries</Summary>
|
||||||
|
<Description>The mobile-broadband-provider-info package contains listings of mobile broadband (3G) providers and associated network and plan information.</Description>
|
||||||
|
<Archive sha1sum="cb09ed36024d08a7ed836d930e1cbc6a45eb4ba1" type="tarxz">ftp://ftp.gnome.org/pub/gnome/sources/mobile-broadband-provider-info/20120614/mobile-broadband-provider-info-20120614.tar.xz</Archive>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>mobile-broadband-provider-info</Name>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="data">/usr/share</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2012-08-28</Date>
|
||||||
|
<Version>20120614</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>mobile-broadband-provider-info</Name>
|
||||||
|
<Summary xml:lang="tr">Çeşitli ülkelerdeki mobil genişbant servis sağlayıcıları hakkında bilgileri içeren ayar veritabanı</Summary>
|
||||||
|
<Description xml:lang="tr">mobile-broadband-provider-info paketi, dünya üzerindeki mobil genişbant sağlayıcılarının ve ilgili tarifelerinin listesini tutan bir veritabanıdır.</Description>
|
||||||
|
</Source>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import shelltools
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
pisitools.cflags.add("-fPIC", "-D_GNU_SOURCE")
|
||||||
|
shelltools.copytree("%s/dhcp" % get.workDIR(), "pppd/plugins")
|
||||||
|
pisitools.dosed("pppd/plugins/dhcp/Makefile.linux", "^(CFLAGS=.+)\s-O2", "\\1 %s" % get.CFLAGS())
|
||||||
|
|
||||||
|
# Enable atm
|
||||||
|
pisitools.dosed("pppd/Makefile.linux", "^#(HAVE_LIBATM=yes)", "\\1")
|
||||||
|
# Enable pam
|
||||||
|
pisitools.dosed("pppd/Makefile.linux", "^#(USE_PAM=y)", "\\1")
|
||||||
|
# Enable CBCP
|
||||||
|
pisitools.dosed("pppd/Makefile.linux", "^#(CBCP=y)", "\\1")
|
||||||
|
# Enable IPv6
|
||||||
|
pisitools.dosed("pppd/Makefile.linux", "^#(HAVE_INET6)", "\\1")
|
||||||
|
# Enable dhcp
|
||||||
|
pisitools.dosed("pppd/plugins/Makefile.linux", "^(SUBDIRS\s:=.+)", "\\1 dhcp")
|
||||||
|
|
||||||
|
autotools.configure()
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make()
|
||||||
|
|
||||||
|
def install():
|
||||||
|
# The build mechanism is crap. Don't remove \/usr from DESTDIR or else the paths will fail
|
||||||
|
autotools.rawInstall("DESTDIR=%s/usr INSTROOT=%s install-etcppp" % ((get.installDIR(),)*2))
|
||||||
|
|
||||||
|
# No suid libraries
|
||||||
|
shelltools.chmod("%s/usr/lib/pppd/%s/*.so" % (get.installDIR(),get.srcVERSION()), 0755)
|
||||||
|
|
||||||
|
# Install Radius config files
|
||||||
|
pisitools.insinto("/etc/radiusclient", "pppd/plugins/radius/etc/*")
|
||||||
|
|
||||||
|
# Create peers directory
|
||||||
|
pisitools.dodir("/run/ppp")
|
||||||
|
pisitools.dodir("/etc/ppp/peers")
|
||||||
|
|
||||||
|
pisitools.dodoc("Changes*", "README*", "FAQ")
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# /etc/ppp/chat-default:
|
||||||
|
|
||||||
|
'ABORT' 'BUSY'
|
||||||
|
'ABORT' 'ERROR'
|
||||||
|
'ABORT' 'NO ANSWER'
|
||||||
|
'ABORT' 'NO CARRIER'
|
||||||
|
'ABORT' 'NO DIALTONE'
|
||||||
|
'ABORT' 'Invalid Login'
|
||||||
|
'ABORT' 'Login incorrect'
|
||||||
|
'' 'ATZ'
|
||||||
|
'OK' 'ATDT$NUMBER'
|
||||||
|
'CONNECT' ''
|
||||||
|
'TIMEOUT' '5'
|
||||||
|
'~--' ''
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# /etc/conf.d/net.ppp0:
|
||||||
|
|
||||||
|
# Config file for /etc/init.d/net.ppp0
|
||||||
|
|
||||||
|
PEER="MyPeer" # Define peer (aka ISP)
|
||||||
|
DEBUG="no" # Turn on debugging
|
||||||
|
PERSIST="no" # Redial after being dropped
|
||||||
|
ONDEMAND="no" # Only bring the interface up on demand?
|
||||||
|
MODEMPORT="/dev/ttyS1" # TTY device modem is connected to
|
||||||
|
LINESPEED="115200" # Speed pppd should try to connect at
|
||||||
|
INITSTRING="" # Extra init string for the modem
|
||||||
|
DEFROUTE="yes" # Must pppd set the default route?
|
||||||
|
HARDFLOWCTL="yes" # Use hardware flow control?
|
||||||
|
ESCAPECHARS="yes" # Use escape caracters ?
|
||||||
|
PPPOPTIONS="" # Extra options for pppd
|
||||||
|
USERNAME="user" # The PAP/CHAP username
|
||||||
|
PASSWORD="passwd" # Your password/secret. Ugly I know, but i
|
||||||
|
# will work on something more secure later
|
||||||
|
# on. 700 permission on /etc/init.d/net.ppp0
|
||||||
|
# should be enouth for now.
|
||||||
|
NUMBER="9180000" # The telephone number of your ISP
|
||||||
|
# leave blank for leased-line operation.
|
||||||
|
REMIP="" # The ip of the remote box if it should be set
|
||||||
|
NETMASK="" # Netmask
|
||||||
|
IPADDR="" # Our IP if we have a static one
|
||||||
|
MRU="768" # Sets the MRU
|
||||||
|
MTU="768" # Sets the MTU
|
||||||
|
RETRYTIMEOUT="60" # Retry timeout for when ONDEMAND="yes" or
|
||||||
|
# PERSIST="yes"
|
||||||
|
IDLETIMEOUT="600" # Idle timeout for when ONDEMAND="yes"
|
||||||
|
PEERDNS="no" # Should pppd set the peer dns?
|
||||||
|
|
||||||
|
AUTOCFGFILES="yes" # By default this scripts will generate
|
||||||
|
# /etc/ppp/chat-isp, /etc/ppp/chap-secrets,
|
||||||
|
# /etc/ppp/pap-secrets and /etc/ppp/peers/isp
|
||||||
|
# automatically. Set to "no" if you experience
|
||||||
|
# problems, or need specialized scripts. You
|
||||||
|
# will have to create these files by hand then.
|
||||||
|
|
||||||
|
AUTOCHATSCRIPT="yes" # By default this script iwll generate
|
||||||
|
# /etc/ppp/chat-${PEER} automatically. Set to "no"
|
||||||
|
# if you experience problems, or need specialized
|
||||||
|
# scripts. You will have to create these files by
|
||||||
|
# hand then.
|
||||||
|
|
||||||
|
|
||||||
|
# Directory where the templates is stored
|
||||||
|
TEMPLATEDIR=/etc/ppp
|
||||||
@@ -0,0 +1,194 @@
|
|||||||
|
diff -ur ppp-2.4.5.orig/chat/Makefile.linux ppp-2.4.5/chat/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/chat/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/chat/Makefile.linux 2010-08-08 09:19:38.000000000 +0200
|
||||||
|
@@ -10,7 +10,6 @@
|
||||||
|
CDEF4= -DFNDELAY=O_NDELAY # Old name value
|
||||||
|
CDEFS= $(CDEF1) $(CDEF2) $(CDEF3) $(CDEF4)
|
||||||
|
|
||||||
|
-COPTS= -O2 -g -pipe
|
||||||
|
CFLAGS= $(COPTS) $(CDEFS)
|
||||||
|
|
||||||
|
INSTALL= install
|
||||||
|
@@ -18,7 +17,7 @@
|
||||||
|
all: chat
|
||||||
|
|
||||||
|
chat: chat.o
|
||||||
|
- $(CC) -o chat chat.o
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
|
||||||
|
|
||||||
|
chat.o: chat.c
|
||||||
|
$(CC) -c $(CFLAGS) -o chat.o chat.c
|
||||||
|
diff -ur ppp-2.4.5.orig/pppd/Makefile.linux ppp-2.4.5/pppd/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppd/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/Makefile.linux 2010-08-08 09:19:38.000000000 +0200
|
||||||
|
@@ -32,7 +32,7 @@
|
||||||
|
|
||||||
|
# CC = gcc
|
||||||
|
#
|
||||||
|
-COPTS = -O2 -pipe -Wall -g
|
||||||
|
+COPTS+= -Wall
|
||||||
|
LIBS =
|
||||||
|
|
||||||
|
# Uncomment the next 2 lines to include support for Microsoft's
|
||||||
|
diff -ur ppp-2.4.5.orig/pppd/plugins/Makefile.linux ppp-2.4.5/pppd/plugins/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/Makefile.linux 2010-08-08 09:19:38.000000000 +0200
|
||||||
|
@@ -1,7 +1,11 @@
|
||||||
|
#CC = gcc
|
||||||
|
-COPTS = -O2 -g
|
||||||
|
CFLAGS = $(COPTS) -I.. -I../../include -fPIC
|
||||||
|
-LDFLAGS = -shared
|
||||||
|
+LDFLAGS_PROG := $(LDFLAGS)
|
||||||
|
+export LDFLAGS LDFLAGS_PROG
|
||||||
|
+LDFLAGS += -shared
|
||||||
|
+# need the following option, otherwise linking plugins might fail with undef errors (Gentoo bug 210837)
|
||||||
|
+LDFLAGS += -Wl,--allow-shlib-undefined
|
||||||
|
+LIBS =
|
||||||
|
INSTALL = install
|
||||||
|
|
||||||
|
DESTDIR = $(INSTROOT)@DESTDIR@
|
||||||
|
@@ -23,7 +27,7 @@
|
||||||
|
for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all; done
|
||||||
|
|
||||||
|
%.so: %.c
|
||||||
|
- $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../patchlevel.h)
|
||||||
|
|
||||||
|
diff -ur ppp-2.4.5.orig/pppd/plugins/pppoatm/Makefile.linux ppp-2.4.5/pppd/plugins/pppoatm/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/pppoatm/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/pppoatm/Makefile.linux 2010-08-08 09:19:38.000000000 +0200
|
||||||
|
@@ -1,7 +1,5 @@
|
||||||
|
#CC = gcc
|
||||||
|
-COPTS = -O2 -g
|
||||||
|
CFLAGS = $(COPTS) -I../.. -I../../../include -fPIC
|
||||||
|
-LDFLAGS = -shared
|
||||||
|
INSTALL = install
|
||||||
|
|
||||||
|
#***********************************************************************
|
||||||
|
@@ -33,7 +31,7 @@
|
||||||
|
all: $(PLUGIN)
|
||||||
|
|
||||||
|
$(PLUGIN): $(PLUGIN_OBJS)
|
||||||
|
- $(CC) $(CFLAGS) -o $@ -shared $^ $(LIBS)
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
install: all
|
||||||
|
$(INSTALL) -d -m 755 $(LIBDIR)
|
||||||
|
diff -ur ppp-2.4.5.orig/pppd/plugins/pppol2tp/Makefile.linux ppp-2.4.5/pppd/plugins/pppol2tp/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/pppol2tp/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/pppol2tp/Makefile.linux 2010-08-08 09:20:02.000000000 +0200
|
||||||
|
@@ -1,7 +1,5 @@
|
||||||
|
#CC = gcc
|
||||||
|
-COPTS = -O2 -g
|
||||||
|
CFLAGS = $(COPTS) -I. -I../.. -I../../../include -fPIC
|
||||||
|
-LDFLAGS = -shared
|
||||||
|
INSTALL = install
|
||||||
|
|
||||||
|
#***********************************************************************
|
||||||
|
@@ -16,7 +14,7 @@
|
||||||
|
all: $(PLUGINS)
|
||||||
|
|
||||||
|
%.so: %.o
|
||||||
|
- $(CC) $(CFLAGS) -o $@ -shared $^ $(LIBS)
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
install: all
|
||||||
|
$(INSTALL) -d -m 755 $(LIBDIR)
|
||||||
|
diff -ur ppp-2.4.5.orig/pppd/plugins/radius/Makefile.linux ppp-2.4.5/pppd/plugins/radius/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/radius/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/radius/Makefile.linux 2010-08-08 09:19:38.000000000 +0200
|
||||||
|
@@ -12,7 +12,7 @@
|
||||||
|
INSTALL = install
|
||||||
|
|
||||||
|
PLUGIN=radius.so radattr.so radrealms.so
|
||||||
|
-CFLAGS=-I. -I../.. -I../../../include -O2 -fPIC -DRC_LOG_FACILITY=LOG_DAEMON
|
||||||
|
+CFLAGS=$(COPTS) -I. -I../.. -I../../../include -fPIC -DRC_LOG_FACILITY=LOG_DAEMON
|
||||||
|
|
||||||
|
# Uncomment the next line to include support for Microsoft's
|
||||||
|
# MS-CHAP authentication protocol.
|
||||||
|
@@ -43,13 +43,13 @@
|
||||||
|
$(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)
|
||||||
|
|
||||||
|
radius.so: radius.o libradiusclient.a
|
||||||
|
- $(CC) -o radius.so -shared radius.o libradiusclient.a
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
|
||||||
|
|
||||||
|
radattr.so: radattr.o
|
||||||
|
- $(CC) -o radattr.so -shared radattr.o
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
|
||||||
|
|
||||||
|
radrealms.so: radrealms.o
|
||||||
|
- $(CC) -o radrealms.so -shared radrealms.o
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
|
||||||
|
|
||||||
|
CLIENTOBJS = avpair.o buildreq.o config.o dict.o ip_util.o \
|
||||||
|
clientid.o sendserver.o lock.o util.o md5.o
|
||||||
|
diff -ur ppp-2.4.5.orig/pppd/plugins/rp-pppoe/Makefile.linux ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/rp-pppoe/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux 2010-08-08 09:19:38.000000000 +0200
|
||||||
|
@@ -25,12 +25,11 @@
|
||||||
|
# Version is set ONLY IN THE MAKEFILE! Don't delete this!
|
||||||
|
RP_VERSION=3.8p
|
||||||
|
|
||||||
|
-COPTS=-O2 -g
|
||||||
|
CFLAGS=$(COPTS) -I../../../include '-DRP_VERSION="$(RP_VERSION)"'
|
||||||
|
all: rp-pppoe.so pppoe-discovery
|
||||||
|
|
||||||
|
pppoe-discovery: pppoe-discovery.o debug.o
|
||||||
|
- $(CC) -o pppoe-discovery pppoe-discovery.o debug.o
|
||||||
|
+ $(CC) $(LDFLAGS_PROG) $(CFLAGS) -o pppoe-discovery pppoe-discovery.o debug.o
|
||||||
|
|
||||||
|
pppoe-discovery.o: pppoe-discovery.c
|
||||||
|
$(CC) $(CFLAGS) -c -o pppoe-discovery.o pppoe-discovery.c
|
||||||
|
@@ -39,7 +38,7 @@
|
||||||
|
$(CC) $(CFLAGS) -c -o debug.o debug.c
|
||||||
|
|
||||||
|
rp-pppoe.so: plugin.o discovery.o if.o common.o
|
||||||
|
- $(CC) -o rp-pppoe.so -shared plugin.o discovery.o if.o common.o
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o rp-pppoe.so plugin.o discovery.o if.o common.o
|
||||||
|
|
||||||
|
install: all
|
||||||
|
$(INSTALL) -d -m 755 $(LIBDIR)
|
||||||
|
diff -ur ppp-2.4.5.orig/pppdump/Makefile.linux ppp-2.4.5/pppdump/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppdump/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppdump/Makefile.linux 2010-08-08 09:19:38.000000000 +0200
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
BINDIR = $(DESTDIR)/sbin
|
||||||
|
MANDIR = $(DESTDIR)/share/man/man8
|
||||||
|
|
||||||
|
-CFLAGS= -O -I../include/net
|
||||||
|
+CFLAGS=$(COPTS) -I../include/net
|
||||||
|
OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
|
||||||
|
|
||||||
|
INSTALL= install
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
all: pppdump
|
||||||
|
|
||||||
|
pppdump: $(OBJS)
|
||||||
|
- $(CC) -o pppdump $(OBJS)
|
||||||
|
+ $(CC) $(LDFLAGS) -o pppdump $(OBJS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f pppdump $(OBJS) *~
|
||||||
|
diff -ur ppp-2.4.5.orig/pppstats/Makefile.linux ppp-2.4.5/pppstats/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppstats/Makefile.linux 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppstats/Makefile.linux 2010-08-08 09:19:38.000000000 +0200
|
||||||
|
@@ -10,7 +10,6 @@
|
||||||
|
PPPSTATOBJS = pppstats.o
|
||||||
|
|
||||||
|
#CC = gcc
|
||||||
|
-COPTS = -O
|
||||||
|
COMPILE_FLAGS = -I../include
|
||||||
|
LIBS =
|
||||||
|
|
||||||
|
@@ -26,7 +25,7 @@
|
||||||
|
$(INSTALL) -c -m 444 pppstats.8 $(MANDIR)
|
||||||
|
|
||||||
|
pppstats: $(PPPSTATSRCS)
|
||||||
|
- $(CC) $(CFLAGS) -o pppstats pppstats.c $(LIBS)
|
||||||
|
+ $(CC) $(CFLAGS) $(LDFLAGS) -o pppstats pppstats.c $(LIBS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f pppstats *~ #* core
|
||||||
@@ -0,0 +1,431 @@
|
|||||||
|
diff -Nur ppp-2.4.5.orig/pppd/main.c ppp-2.4.5/pppd/main.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/main.c 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/main.c 2010-08-08 09:30:23.000000000 +0200
|
||||||
|
@@ -96,6 +96,9 @@
|
||||||
|
#include "fsm.h"
|
||||||
|
#include "lcp.h"
|
||||||
|
#include "ipcp.h"
|
||||||
|
+
|
||||||
|
+#include "mplscp.h"
|
||||||
|
+
|
||||||
|
#ifdef INET6
|
||||||
|
#include "ipv6cp.h"
|
||||||
|
#endif
|
||||||
|
@@ -283,6 +286,7 @@
|
||||||
|
&cbcp_protent,
|
||||||
|
#endif
|
||||||
|
&ipcp_protent,
|
||||||
|
+ &mplscp_protent,
|
||||||
|
#ifdef INET6
|
||||||
|
&ipv6cp_protent,
|
||||||
|
#endif
|
||||||
|
diff -Nur ppp-2.4.5.orig/pppd/Makefile.linux ppp-2.4.5/pppd/Makefile.linux
|
||||||
|
--- ppp-2.4.5.orig/pppd/Makefile.linux 2010-08-08 09:22:22.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/Makefile.linux 2010-08-08 09:31:43.000000000 +0200
|
||||||
|
@@ -13,16 +13,16 @@
|
||||||
|
|
||||||
|
PPPDSRCS = main.c magic.c fsm.c lcp.c ipcp.c upap.c chap-new.c md5.c ccp.c \
|
||||||
|
ecp.c ipxcp.c auth.c options.c sys-linux.c md4.c chap_ms.c \
|
||||||
|
- demand.c utils.c tty.c eap.c chap-md5.c session.c
|
||||||
|
+ demand.c utils.c tty.c eap.c chap-md5.c session.c mplscp.c
|
||||||
|
|
||||||
|
HEADERS = ccp.h session.h chap-new.h ecp.h fsm.h ipcp.h \
|
||||||
|
ipxcp.h lcp.h magic.h md5.h patchlevel.h pathnames.h pppd.h \
|
||||||
|
- upap.h eap.h
|
||||||
|
+ upap.h eap.h mplscp.h
|
||||||
|
|
||||||
|
MANPAGES = pppd.8
|
||||||
|
PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap-new.o md5.o ccp.o \
|
||||||
|
ecp.o auth.o options.o demand.o utils.o sys-linux.o ipxcp.o tty.o \
|
||||||
|
- eap.o chap-md5.o session.o
|
||||||
|
+ eap.o chap-md5.o session.o mplscp.o
|
||||||
|
|
||||||
|
#
|
||||||
|
# include dependencies if present
|
||||||
|
diff -Nur ppp-2.4.5.orig/pppd/mplscp.c ppp-2.4.5/pppd/mplscp.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/mplscp.c 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/mplscp.c 2010-08-08 09:30:23.000000000 +0200
|
||||||
|
@@ -0,0 +1,371 @@
|
||||||
|
+
|
||||||
|
+/* MPLSCP - Serge.Krier@advalvas.be (C) 2001 */
|
||||||
|
+
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <netdb.h>
|
||||||
|
+#include <sys/param.h>
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/socket.h>
|
||||||
|
+#include <netinet/in.h>
|
||||||
|
+#include <arpa/inet.h>
|
||||||
|
+
|
||||||
|
+#include "pppd.h"
|
||||||
|
+#include "fsm.h"
|
||||||
|
+#include "mplscp.h"
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/* local vars */
|
||||||
|
+/* static int mplscp_is_up; */ /* have called np_up() */
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Callbacks for fsm code. (CI = Configuration Information)
|
||||||
|
+ */
|
||||||
|
+static void mplscp_resetci __P((fsm *)); /* Reset our CI */
|
||||||
|
+static int mplscp_cilen __P((fsm *)); /* Return length of our CI */
|
||||||
|
+static void mplscp_addci __P((fsm *, u_char *, int *)); /* Add our CI */
|
||||||
|
+static int mplscp_ackci __P((fsm *, u_char *, int)); /* Peer ack'd our CI */
|
||||||
|
+static int mplscp_nakci __P((fsm *, u_char *, int)); /* Peer nak'd our CI */
|
||||||
|
+static int mplscp_rejci __P((fsm *, u_char *, int)); /* Peer rej'd our CI */
|
||||||
|
+static int mplscp_reqci __P((fsm *, u_char *, int *, int)); /* Rcv CI */
|
||||||
|
+static void mplscp_up __P((fsm *)); /* We're UP */
|
||||||
|
+static void mplscp_down __P((fsm *)); /* We're DOWN */
|
||||||
|
+static void mplscp_finished __P((fsm *)); /* Don't need lower layer */
|
||||||
|
+
|
||||||
|
+fsm mplscp_fsm[NUM_PPP]; /* MPLSCP fsm structure */
|
||||||
|
+
|
||||||
|
+static fsm_callbacks mplscp_callbacks = { /* MPLSCP callback routines */
|
||||||
|
+ mplscp_resetci, /* Reset our Configuration Information */
|
||||||
|
+ mplscp_cilen, /* Length of our Configuration Information */
|
||||||
|
+ mplscp_addci, /* Add our Configuration Information */
|
||||||
|
+ mplscp_ackci, /* ACK our Configuration Information */
|
||||||
|
+ mplscp_nakci, /* NAK our Configuration Information */
|
||||||
|
+ mplscp_rejci, /* Reject our Configuration Information */
|
||||||
|
+ mplscp_reqci, /* Request peer's Configuration Information */
|
||||||
|
+ mplscp_up, /* Called when fsm reaches OPENED state */
|
||||||
|
+ mplscp_down, /* Called when fsm leaves OPENED state */
|
||||||
|
+ NULL, /* Called when we want the lower layer up */
|
||||||
|
+ mplscp_finished, /* Called when we want the lower layer down */
|
||||||
|
+ NULL, /* Called when Protocol-Reject received */
|
||||||
|
+ NULL, /* Retransmission is necessary */
|
||||||
|
+ NULL, /* Called to handle protocol-specific codes */
|
||||||
|
+ "MPLSCP" /* String name of protocol */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static option_t mplscp_option_list[] = {
|
||||||
|
+ { "mpls", o_bool, &mplscp_protent.enabled_flag,
|
||||||
|
+ "Enable MPLSCP (and MPLS)", 1 },
|
||||||
|
+ { NULL } };
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Protocol entry points from main code.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static void mplscp_init __P((int));
|
||||||
|
+static void mplscp_open __P((int));
|
||||||
|
+static void mplscp_close __P((int, char *));
|
||||||
|
+static void mplscp_lowerup __P((int));
|
||||||
|
+static void mplscp_lowerdown __P((int));
|
||||||
|
+static void mplscp_input __P((int, u_char *, int));
|
||||||
|
+static void mplscp_protrej __P((int));
|
||||||
|
+static int mplscp_printpkt __P((u_char *, int,
|
||||||
|
+ void (*) __P((void *, char *, ...)), void *));
|
||||||
|
+
|
||||||
|
+struct protent mplscp_protent = {
|
||||||
|
+ PPP_MPLSCP,
|
||||||
|
+ mplscp_init,
|
||||||
|
+ mplscp_input,
|
||||||
|
+ mplscp_protrej,
|
||||||
|
+ mplscp_lowerup,
|
||||||
|
+ mplscp_lowerdown,
|
||||||
|
+ mplscp_open,
|
||||||
|
+ mplscp_close,
|
||||||
|
+ mplscp_printpkt,
|
||||||
|
+ NULL,
|
||||||
|
+ 0, /* MPLS not enabled by default */
|
||||||
|
+ "MPLSCP",
|
||||||
|
+ "MPLS",
|
||||||
|
+ mplscp_option_list,
|
||||||
|
+ NULL,
|
||||||
|
+ NULL,
|
||||||
|
+ NULL
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_init - Initialize MPLSCP.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_init(int unit) {
|
||||||
|
+
|
||||||
|
+ fsm *f = &mplscp_fsm[unit];
|
||||||
|
+
|
||||||
|
+ f->unit = unit;
|
||||||
|
+ f->protocol = PPP_MPLSCP;
|
||||||
|
+ f->callbacks = &mplscp_callbacks;
|
||||||
|
+ fsm_init(&mplscp_fsm[unit]);
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_open - MPLSCP is allowed to come up.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_open(int unit) {
|
||||||
|
+
|
||||||
|
+ fsm_open(&mplscp_fsm[unit]);
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_close - Take MPLSCP down.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_close(int unit, char *reason) {
|
||||||
|
+
|
||||||
|
+ fsm_close(&mplscp_fsm[unit], reason);
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_lowerup - The lower layer is up.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_lowerup(int unit) {
|
||||||
|
+
|
||||||
|
+ fsm_lowerup(&mplscp_fsm[unit]);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_lowerdown - The lower layer is down.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_lowerdown(int unit) {
|
||||||
|
+
|
||||||
|
+ fsm_lowerdown(&mplscp_fsm[unit]);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_input - Input MPLSCP packet.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_input(int unit, u_char *p, int len) {
|
||||||
|
+
|
||||||
|
+ fsm_input(&mplscp_fsm[unit], p, len);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_protrej - A Protocol-Reject was received for MPLSCP.
|
||||||
|
+ * Pretend the lower layer went down, so we shut up.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_protrej(int unit) {
|
||||||
|
+
|
||||||
|
+ fsm_lowerdown(&mplscp_fsm[unit]);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_resetci - Reset our CI.
|
||||||
|
+ * Called by fsm_sconfreq, Send Configure Request.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_resetci(fsm *f) {
|
||||||
|
+
|
||||||
|
+ return;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_cilen - Return length of our CI.
|
||||||
|
+ * Called by fsm_sconfreq, Send Configure Request.
|
||||||
|
+ */
|
||||||
|
+static int
|
||||||
|
+mplscp_cilen(fsm *f) {
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_addci - Add our desired CIs to a packet.
|
||||||
|
+ * Called by fsm_sconfreq, Send Configure Request.
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+mplscp_addci(fsm *f, u_char *ucp, int *lenp) {
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * ipcp_ackci - Ack our CIs.
|
||||||
|
+ * Called by fsm_rconfack, Receive Configure ACK.
|
||||||
|
+ *
|
||||||
|
+ * Returns:
|
||||||
|
+ * 0 - Ack was bad.
|
||||||
|
+ * 1 - Ack was good.
|
||||||
|
+ */
|
||||||
|
+static int
|
||||||
|
+mplscp_ackci(fsm *f, u_char *p, int len) {
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_nakci - Peer has sent a NAK for some of our CIs.
|
||||||
|
+ * This should not modify any state if the Nak is bad
|
||||||
|
+ * or if MPLSCP is in the OPENED state.
|
||||||
|
+ * Calback from fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject.
|
||||||
|
+ *
|
||||||
|
+ * Returns:
|
||||||
|
+ * 0 - Nak was bad.
|
||||||
|
+ * 1 - Nak was good.
|
||||||
|
+ */
|
||||||
|
+static int
|
||||||
|
+mplscp_nakci(fsm *f, u_char *p, int len) {
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * MPLSVP_rejci - Reject some of our CIs.
|
||||||
|
+ * Callback from fsm_rconfnakrej.
|
||||||
|
+ */
|
||||||
|
+static int
|
||||||
|
+mplscp_rejci(fsm *f, u_char *p, int len) {
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mplscp_reqci - Check the peer's requested CIs and send appropriate response.
|
||||||
|
+ * Callback from fsm_rconfreq, Receive Configure Request
|
||||||
|
+ *
|
||||||
|
+ * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified
|
||||||
|
+ * appropriately. If reject_if_disagree is non-zero, doesn't return
|
||||||
|
+ * CONFNAK; returns CONFREJ if it can't return CONFACK.
|
||||||
|
+ */
|
||||||
|
+static int
|
||||||
|
+mplscp_reqci(fsm *f, u_char *inp, int *len, int reject_if_disagree) {
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ int rc = CONFACK; /* Final packet return code */
|
||||||
|
+
|
||||||
|
+ PUTCHAR(CONFACK,inp);
|
||||||
|
+
|
||||||
|
+ return rc;
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+mplscp_up(fsm *f) {
|
||||||
|
+
|
||||||
|
+ sifnpmode(f->unit, PPP_MPLS_UC, NPMODE_PASS);
|
||||||
|
+ /* sifnpmode(f->unit, PPP_MPLS_MC, NPMODE_PASS);*/
|
||||||
|
+
|
||||||
|
+ np_up(f->unit, PPP_MPLS_UC);
|
||||||
|
+ /* np_up(f->unit, PPP_MPLS_MC);*/
|
||||||
|
+ /* ipcp_is_up = 1;*/
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+#if 1
|
||||||
|
+ printf("MPLSCP is OPENED\n");
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+mplscp_down(fsm *f) {
|
||||||
|
+
|
||||||
|
+ sifnpmode(f->unit, PPP_MPLS_UC, NPMODE_DROP);
|
||||||
|
+ /* sifnpmode(f->unit, PPP_MPLS_MC, NPMODE_DROP);*/
|
||||||
|
+
|
||||||
|
+ sifdown(f->unit);
|
||||||
|
+
|
||||||
|
+#if 1
|
||||||
|
+ printf("MPLSCP is CLOSED\n");
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+mplscp_finished(fsm *f) {
|
||||||
|
+
|
||||||
|
+ np_finished(f->unit, PPP_MPLS_UC);
|
||||||
|
+ /* np_finished(f->unit, PPP_MPLS_MC);*/
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * mpls_printpkt - print the contents of an MPLSCP packet.
|
||||||
|
+ */
|
||||||
|
+static char *mplscp_codenames[] = {
|
||||||
|
+ "ConfReq", "ConfAck", "ConfNak", "ConfRej",
|
||||||
|
+ "TermReq", "TermAck", "CodeRej"
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+mplscp_printpkt(u_char *p, int plen,
|
||||||
|
+ void (*printer) __P((void *, char *, ...)),
|
||||||
|
+ void *arg) {
|
||||||
|
+
|
||||||
|
+ int code, id, len, olen;
|
||||||
|
+ u_char *pstart, *optend;
|
||||||
|
+
|
||||||
|
+ if (plen < HEADERLEN)
|
||||||
|
+ return 0;
|
||||||
|
+ pstart = p;
|
||||||
|
+ GETCHAR(code, p);
|
||||||
|
+ GETCHAR(id, p);
|
||||||
|
+ GETSHORT(len, p);
|
||||||
|
+ if (len < HEADERLEN || len > plen)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (code >= 1 && code <= sizeof(mplscp_codenames) / sizeof(char *))
|
||||||
|
+ printer(arg, " %s", mplscp_codenames[code-1]);
|
||||||
|
+ else
|
||||||
|
+ printer(arg, " code=0x%x", code);
|
||||||
|
+ printer(arg, " id=0x%x", id);
|
||||||
|
+ len -= HEADERLEN;
|
||||||
|
+ switch (code) {
|
||||||
|
+ case CONFREQ:
|
||||||
|
+ case CONFACK:
|
||||||
|
+ case CONFNAK:
|
||||||
|
+ case CONFREJ:
|
||||||
|
+ /* print option list */
|
||||||
|
+ while (len >= 2) {
|
||||||
|
+ GETCHAR(code, p);
|
||||||
|
+ GETCHAR(olen, p);
|
||||||
|
+ p -= 2;
|
||||||
|
+ if (olen < 2 || olen > len) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ printer(arg, " <");
|
||||||
|
+ len -= olen;
|
||||||
|
+ optend = p + olen;
|
||||||
|
+ while (p < optend) {
|
||||||
|
+ GETCHAR(code, p);
|
||||||
|
+ printer(arg, " %.2x", code);
|
||||||
|
+ }
|
||||||
|
+ printer(arg, ">");
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case TERMACK:
|
||||||
|
+ case TERMREQ:
|
||||||
|
+ if (len > 0 && *p >= ' ' && *p < 0x7f) {
|
||||||
|
+ printer(arg, " ");
|
||||||
|
+ print_string((char *)p, len, printer, arg);
|
||||||
|
+ p += len;
|
||||||
|
+ len = 0;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* print the rest of the bytes in the packet */
|
||||||
|
+ for (; len > 0; --len) {
|
||||||
|
+ GETCHAR(code, p);
|
||||||
|
+ printer(arg, " %.2x", code);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return p - pstart;
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
diff -Nur ppp-2.4.5.orig/pppd/mplscp.h ppp-2.4.5/pppd/mplscp.h
|
||||||
|
--- ppp-2.4.5.orig/pppd/mplscp.h 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/mplscp.h 2010-08-08 09:30:23.000000000 +0200
|
||||||
|
@@ -0,0 +1,8 @@
|
||||||
|
+
|
||||||
|
+/* MPLSCP - Serge.Krier@advalvas.be (C) 2001 */
|
||||||
|
+
|
||||||
|
+#define PPP_MPLSCP 0x8281
|
||||||
|
+#define PPP_MPLS_UC 0x0281
|
||||||
|
+#define PPP_MPLS_MC 0x0283
|
||||||
|
+
|
||||||
|
+extern struct protent mplscp_protent;
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
diff -Nur ppp-2.4.5.orig/pppd/options.c ppp-2.4.5/pppd/options.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/options.c 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/options.c 2010-08-08 09:43:47.000000000 +0200
|
||||||
|
@@ -100,6 +100,9 @@
|
||||||
|
char user[MAXNAMELEN]; /* Username for PAP */
|
||||||
|
char passwd[MAXSECRETLEN]; /* Password for PAP */
|
||||||
|
bool persist = 0; /* Reopen link after it goes down */
|
||||||
|
+bool killoldaddr = 0; /* If our IP is reassigned on
|
||||||
|
+ reconnect, kill active TCP
|
||||||
|
+ connections using the old IP. */
|
||||||
|
char our_name[MAXNAMELEN]; /* Our name for authentication purposes */
|
||||||
|
bool demand = 0; /* do dial-on-demand */
|
||||||
|
char *ipparam = NULL; /* Extra parameter for ip up/down scripts */
|
||||||
|
@@ -231,6 +234,11 @@
|
||||||
|
{ "demand", o_bool, &demand,
|
||||||
|
"Dial on demand", OPT_INITONLY | 1, &persist },
|
||||||
|
|
||||||
|
+ { "killoldaddr", o_bool, &killoldaddr,
|
||||||
|
+ "Kill connections from an old source address", 1},
|
||||||
|
+ { "nokilloldaddr", o_bool,&killoldaddr,
|
||||||
|
+ "Don't kill connections from an old source address" },
|
||||||
|
+
|
||||||
|
{ "--version", o_special_noarg, (void *)showversion,
|
||||||
|
"Show version number" },
|
||||||
|
{ "--help", o_special_noarg, (void *)showhelp,
|
||||||
|
diff -Nur ppp-2.4.5.orig/pppd/pppd.h ppp-2.4.5/pppd/pppd.h
|
||||||
|
--- ppp-2.4.5.orig/pppd/pppd.h 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/pppd.h 2010-08-08 09:43:47.000000000 +0200
|
||||||
|
@@ -298,6 +298,9 @@
|
||||||
|
extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
|
||||||
|
extern bool explicit_remote;/* remote_name specified with remotename opt */
|
||||||
|
extern bool demand; /* Do dial-on-demand */
|
||||||
|
+extern bool killoldaddr; /* If our IP is reassigned on
|
||||||
|
+ reconnect, kill active TCP
|
||||||
|
+ connections using the old IP. */
|
||||||
|
extern char *ipparam; /* Extra parameter for ip up/down scripts */
|
||||||
|
extern bool cryptpap; /* Others' PAP passwords are encrypted */
|
||||||
|
extern int idle_time_limit;/* Shut down link if idle for this long */
|
||||||
|
diff -Nur ppp-2.4.5.orig/pppd/sys-linux.c ppp-2.4.5/pppd/sys-linux.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/sys-linux.c 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/sys-linux.c 2010-08-08 09:43:47.000000000 +0200
|
||||||
|
@@ -165,6 +165,10 @@
|
||||||
|
|
||||||
|
#endif /* INET6 */
|
||||||
|
|
||||||
|
+#ifndef SIOCKILLADDR
|
||||||
|
+#define SIOCKILLADDR 0x8939
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* We can get an EIO error on an ioctl if the modem has hung up */
|
||||||
|
#define ok_error(num) ((num)==EIO)
|
||||||
|
|
||||||
|
@@ -209,6 +213,7 @@
|
||||||
|
static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
|
||||||
|
static char proxy_arp_dev[16]; /* Device for proxy arp entry */
|
||||||
|
static u_int32_t our_old_addr; /* for detecting address changes */
|
||||||
|
+static u_int32_t our_current_addr;
|
||||||
|
static int dynaddr_set; /* 1 if ip_dynaddr set */
|
||||||
|
static int looped; /* 1 if using loop */
|
||||||
|
static int link_mtu; /* mtu for the link (not bundle) */
|
||||||
|
@@ -537,6 +542,27 @@
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void do_killaddr(u_int32_t oldaddr)
|
||||||
|
+{
|
||||||
|
+ struct ifreq ifr;
|
||||||
|
+
|
||||||
|
+ memset(&ifr,0,sizeof ifr);
|
||||||
|
+
|
||||||
|
+ SET_SA_FAMILY (ifr.ifr_addr, AF_INET);
|
||||||
|
+ SET_SA_FAMILY (ifr.ifr_dstaddr, AF_INET);
|
||||||
|
+ SET_SA_FAMILY (ifr.ifr_netmask, AF_INET);
|
||||||
|
+
|
||||||
|
+ SIN_ADDR(ifr.ifr_addr) = oldaddr;
|
||||||
|
+
|
||||||
|
+ strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
|
||||||
|
+
|
||||||
|
+ if(ioctl(sock_fd,SIOCKILLADDR,&ifr) < 0) {
|
||||||
|
+ if (!ok_error (errno))
|
||||||
|
+ error("ioctl(SIOCKILLADDR): %m(%d)", errno);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/********************************************************************
|
||||||
|
*
|
||||||
|
* tty_disestablish_ppp - Restore the serial port to normal operation.
|
||||||
|
@@ -2385,21 +2411,29 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* set ip_dynaddr in demand mode if address changes */
|
||||||
|
- if (demand && tune_kernel && !dynaddr_set
|
||||||
|
- && our_old_addr && our_old_addr != our_adr) {
|
||||||
|
+ if(persist && our_old_addr && our_old_addr != our_adr) {
|
||||||
|
+
|
||||||
|
+ if(killoldaddr)
|
||||||
|
+ do_killaddr(our_old_addr);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ /* set ip_dynaddr in persist mode if address changes */
|
||||||
|
+ if (tune_kernel && !dynaddr_set) {
|
||||||
|
/* set ip_dynaddr if possible */
|
||||||
|
char *path;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
path = path_to_procfs("/sys/net/ipv4/ip_dynaddr");
|
||||||
|
if (path != 0 && (fd = open(path, O_WRONLY)) >= 0) {
|
||||||
|
- if (write(fd, "1", 1) != 1)
|
||||||
|
- error("Couldn't enable dynamic IP addressing: %m");
|
||||||
|
- close(fd);
|
||||||
|
+ if (write(fd, "1", 1) != 1)
|
||||||
|
+ error("Couldn't enable dynamic IP addressing: %m");
|
||||||
|
+ close(fd);
|
||||||
|
}
|
||||||
|
dynaddr_set = 1; /* only 1 attempt */
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ our_current_addr = our_adr;
|
||||||
|
our_old_addr = 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
@@ -2455,7 +2489,8 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
our_old_addr = our_adr;
|
||||||
|
-
|
||||||
|
+ our_current_addr = 0;
|
||||||
|
+
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
diff -Nur ppp-2.4.5.orig/pppd/main.c ppp-2.4.5/pppd/main.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/main.c 2010-08-08 09:34:32.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/main.c 2010-08-08 09:46:00.000000000 +0200
|
||||||
|
@@ -249,6 +249,7 @@
|
||||||
|
static void forget_child __P((int pid, int status));
|
||||||
|
static int reap_kids __P((void));
|
||||||
|
static void childwait_end __P((void *));
|
||||||
|
+static void wait_children __P((void));
|
||||||
|
|
||||||
|
#ifdef USE_TDB
|
||||||
|
static void update_db_entry __P((void));
|
||||||
|
@@ -580,25 +581,11 @@
|
||||||
|
if (!persist)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ wait_children();
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Wait for scripts to finish */
|
||||||
|
- reap_kids();
|
||||||
|
- if (n_children > 0) {
|
||||||
|
- if (child_wait > 0)
|
||||||
|
- TIMEOUT(childwait_end, NULL, child_wait);
|
||||||
|
- if (debug) {
|
||||||
|
- struct subprocess *chp;
|
||||||
|
- dbglog("Waiting for %d child processes...", n_children);
|
||||||
|
- for (chp = children; chp != NULL; chp = chp->next)
|
||||||
|
- dbglog(" script %s, pid %d", chp->prog, chp->pid);
|
||||||
|
- }
|
||||||
|
- while (n_children > 0 && !childwait_done) {
|
||||||
|
- handle_events();
|
||||||
|
- if (kill_link && !childwait_done)
|
||||||
|
- childwait_end(NULL);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ wait_children();
|
||||||
|
|
||||||
|
die(status);
|
||||||
|
return 0;
|
||||||
|
@@ -1794,6 +1781,36 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
+ * wait_children - wait for scripts to finish.
|
||||||
|
+ * if child_wait is 0, wait indefinitely.
|
||||||
|
+ * else, kill'em all at the end of timeout
|
||||||
|
+ */
|
||||||
|
+static void
|
||||||
|
+wait_children()
|
||||||
|
+{
|
||||||
|
+ /* Wait for scripts to finish */
|
||||||
|
+ reap_kids();
|
||||||
|
+ if (n_children > 0) {
|
||||||
|
+ childwait_done = 0;
|
||||||
|
+ if (child_wait > 0)
|
||||||
|
+ TIMEOUT(childwait_end, NULL, child_wait);
|
||||||
|
+ if (debug) {
|
||||||
|
+ struct subprocess *chp;
|
||||||
|
+ dbglog("Waiting for %d child processes...", n_children);
|
||||||
|
+ for (chp = children; chp != NULL; chp = chp->next)
|
||||||
|
+ dbglog(" script %s, pid %d", chp->prog, chp->pid);
|
||||||
|
+ }
|
||||||
|
+ while (n_children > 0 && !childwait_done) {
|
||||||
|
+ handle_events();
|
||||||
|
+ if (asked_to_quit && !childwait_done)
|
||||||
|
+ childwait_end(NULL);
|
||||||
|
+ }
|
||||||
|
+ if (child_wait > 0)
|
||||||
|
+ UNTIMEOUT(childwait_end, NULL);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
* childwait_end - we got fed up waiting for the child processes to
|
||||||
|
* exit, send them all a SIGTERM.
|
||||||
|
*/
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
This patch reverses revision 1.114 of the pppd/sys-linux.c file.
|
||||||
|
The default gateway is needed by the openswan's %defaultroute.
|
||||||
|
diff -Nur ppp-2.4.5.orig/pppd/sys-linux.c ppp-2.4.5/pppd/sys-linux.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/sys-linux.c 2010-08-08 09:44:29.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/sys-linux.c 2010-08-08 09:53:02.000000000 +0200
|
||||||
|
@@ -209,7 +209,7 @@
|
||||||
|
static unsigned char inbuf[512]; /* buffer for chars read from loopback */
|
||||||
|
|
||||||
|
static int if_is_up; /* Interface has been marked up */
|
||||||
|
-static int have_default_route; /* Gateway for default route added */
|
||||||
|
+static u_int32_t default_route_gateway; /* Gateway for default route added */
|
||||||
|
static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
|
||||||
|
static char proxy_arp_dev[16]; /* Device for proxy arp entry */
|
||||||
|
static u_int32_t our_old_addr; /* for detecting address changes */
|
||||||
|
@@ -346,8 +346,8 @@
|
||||||
|
/*
|
||||||
|
* Delete any routes through the device.
|
||||||
|
*/
|
||||||
|
- if (have_default_route)
|
||||||
|
- cifdefaultroute(0, 0, 0);
|
||||||
|
+ if (default_route_gateway != 0)
|
||||||
|
+ cifdefaultroute(0, 0, default_route_gateway);
|
||||||
|
|
||||||
|
if (has_proxy_arp)
|
||||||
|
cifproxyarp(0, proxy_arp_addr);
|
||||||
|
@@ -1639,17 +1639,17 @@
|
||||||
|
struct rtentry rt;
|
||||||
|
|
||||||
|
if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) {
|
||||||
|
- if (rt.rt_flags & RTF_GATEWAY)
|
||||||
|
- error("not replacing existing default route via %I",
|
||||||
|
- SIN_ADDR(rt.rt_gateway));
|
||||||
|
- else
|
||||||
|
- error("not replacing existing default route through %s",
|
||||||
|
- rt.rt_dev);
|
||||||
|
+ u_int32_t old_gateway = SIN_ADDR(rt.rt_gateway);
|
||||||
|
+
|
||||||
|
+ if (old_gateway != gateway)
|
||||||
|
+ error("not replacing existing default route to %s [%I]",
|
||||||
|
+ rt.rt_dev, old_gateway);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- memset (&rt, 0, sizeof (rt));
|
||||||
|
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
|
||||||
|
+ memset (&rt, '\0', sizeof (rt));
|
||||||
|
+ SET_SA_FAMILY (rt.rt_dst, AF_INET);
|
||||||
|
+ SET_SA_FAMILY (rt.rt_gateway, AF_INET);
|
||||||
|
|
||||||
|
rt.rt_dev = ifname;
|
||||||
|
|
||||||
|
@@ -1658,14 +1658,16 @@
|
||||||
|
SIN_ADDR(rt.rt_genmask) = 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
- rt.rt_flags = RTF_UP;
|
||||||
|
+ SIN_ADDR(rt.rt_gateway) = gateway;
|
||||||
|
+
|
||||||
|
+ rt.rt_flags = RTF_UP | RTF_GATEWAY;
|
||||||
|
if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
|
||||||
|
if ( ! ok_error ( errno ))
|
||||||
|
error("default route ioctl(SIOCADDRT): %m");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- have_default_route = 1;
|
||||||
|
+ default_route_gateway = gateway;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1678,7 +1680,7 @@
|
||||||
|
{
|
||||||
|
struct rtentry rt;
|
||||||
|
|
||||||
|
- have_default_route = 0;
|
||||||
|
+ default_route_gateway = 0;
|
||||||
|
|
||||||
|
memset (&rt, '\0', sizeof (rt));
|
||||||
|
SET_SA_FAMILY (rt.rt_dst, AF_INET);
|
||||||
|
@@ -1691,7 +1693,9 @@
|
||||||
|
SIN_ADDR(rt.rt_genmask) = 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
- rt.rt_flags = RTF_UP;
|
||||||
|
+ SIN_ADDR(rt.rt_gateway) = gateway;
|
||||||
|
+
|
||||||
|
+ rt.rt_flags = RTF_UP | RTF_GATEWAY;
|
||||||
|
if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
|
||||||
|
if (still_ppp()) {
|
||||||
|
if ( ! ok_error ( errno ))
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
diff -Nru ppp-2.4.5.orig/pppd/auth.c ppp-2.4.5/pppd/auth.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/auth.c 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/auth.c 2010-08-08 09:57:01.000000000 +0200
|
||||||
|
@@ -637,7 +637,7 @@
|
||||||
|
* we delete its pid file.
|
||||||
|
*/
|
||||||
|
if (!doing_multilink && !demand)
|
||||||
|
- remove_pidfiles();
|
||||||
|
+ remove_pidfile(pidfilename);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we may want to bring the link up again, transfer
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/main.c ppp-2.4.5/pppd/main.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/main.c 2010-08-08 09:46:42.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/main.c 2010-08-08 09:57:01.000000000 +0200
|
||||||
|
@@ -134,7 +134,7 @@
|
||||||
|
|
||||||
|
char *progname; /* Name of this program */
|
||||||
|
char hostname[MAXNAMELEN]; /* Our hostname */
|
||||||
|
-static char pidfilename[MAXPATHLEN]; /* name of pid file */
|
||||||
|
+char pidfilename[MAXPATHLEN]; /* name of pid file */
|
||||||
|
static char linkpidfile[MAXPATHLEN]; /* name of linkname pid file */
|
||||||
|
char ppp_devnam[MAXPATHLEN]; /* name of PPP tty (maybe ttypx) */
|
||||||
|
uid_t uid; /* Our real user-id */
|
||||||
|
@@ -245,6 +245,7 @@
|
||||||
|
static void toggle_debug __P((int));
|
||||||
|
static void open_ccp __P((int));
|
||||||
|
static void bad_signal __P((int));
|
||||||
|
+static void remove_pidfilenames __P((void));
|
||||||
|
static void holdoff_end __P((void *));
|
||||||
|
static void forget_child __P((int pid, int status));
|
||||||
|
static int reap_kids __P((void));
|
||||||
|
@@ -835,16 +836,24 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * remove_pidfile - remove our pid files
|
||||||
|
+ * remove_pidfile - remove one of the 2 pidfiles (pidfilename or linkpidfile)
|
||||||
|
*/
|
||||||
|
-void remove_pidfiles()
|
||||||
|
+void
|
||||||
|
+remove_pidfile(filename)
|
||||||
|
+ char* filename;
|
||||||
|
{
|
||||||
|
- if (pidfilename[0] != 0 && unlink(pidfilename) < 0 && errno != ENOENT)
|
||||||
|
- warn("unable to delete pid file %s: %m", pidfilename);
|
||||||
|
- pidfilename[0] = 0;
|
||||||
|
- if (linkpidfile[0] != 0 && unlink(linkpidfile) < 0 && errno != ENOENT)
|
||||||
|
- warn("unable to delete pid file %s: %m", linkpidfile);
|
||||||
|
- linkpidfile[0] = 0;
|
||||||
|
+ if (filename[0] != 0 && unlink(filename) < 0 && errno != ENOENT)
|
||||||
|
+ warn("unable to delete pid file %s: %m", filename);
|
||||||
|
+ filename[0] = 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * remove_pidfiles - remove our pid files
|
||||||
|
+ */
|
||||||
|
+static void remove_pidfiles()
|
||||||
|
+{
|
||||||
|
+ remove_pidfile(pidfilename);
|
||||||
|
+ remove_pidfile(linkpidfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/multilink.c ppp-2.4.5/pppd/multilink.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/multilink.c 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/multilink.c 2010-08-08 09:57:01.000000000 +0200
|
||||||
|
@@ -267,7 +267,7 @@
|
||||||
|
notice("Connection terminated.");
|
||||||
|
print_link_stats();
|
||||||
|
if (!demand) {
|
||||||
|
- remove_pidfiles();
|
||||||
|
+ remove_pidfile(pidfilename);
|
||||||
|
script_unsetenv("IFNAME");
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/pppd.h ppp-2.4.5/pppd/pppd.h
|
||||||
|
--- ppp-2.4.5.orig/pppd/pppd.h 2010-08-08 09:44:29.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/pppd.h 2010-08-08 09:57:01.000000000 +0200
|
||||||
|
@@ -214,6 +214,7 @@
|
||||||
|
extern int ifunit; /* Interface unit number */
|
||||||
|
extern char ifname[]; /* Interface name */
|
||||||
|
extern char hostname[]; /* Our hostname */
|
||||||
|
+extern char pidfilename[]; /* name of pid file */
|
||||||
|
extern u_char outpacket_buf[]; /* Buffer for outgoing packets */
|
||||||
|
extern int devfd; /* fd of underlying device */
|
||||||
|
extern int fd_ppp; /* fd for talking PPP */
|
||||||
|
@@ -497,7 +498,7 @@
|
||||||
|
int ppp_send_config __P((int, int, u_int32_t, int, int));
|
||||||
|
int ppp_recv_config __P((int, int, u_int32_t, int, int));
|
||||||
|
const char *protocol_name __P((int));
|
||||||
|
-void remove_pidfiles __P((void));
|
||||||
|
+void remove_pidfile __P((char *));
|
||||||
|
void lock_db __P((void));
|
||||||
|
void unlock_db __P((void));
|
||||||
|
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
diff -Nru ppp-2.4.5.orig/pppd/auth.c ppp-2.4.5/pppd/auth.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/auth.c 2010-08-08 09:58:19.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/auth.c 2010-08-08 10:06:06.000000000 +0200
|
||||||
|
@@ -259,7 +259,7 @@
|
||||||
|
struct wordlist **, struct wordlist **,
|
||||||
|
char *, int));
|
||||||
|
static void free_wordlist __P((struct wordlist *));
|
||||||
|
-static void auth_script __P((char *));
|
||||||
|
+static void auth_script __P((char *, int));
|
||||||
|
static void auth_script_done __P((void *));
|
||||||
|
static void set_allowed_addrs __P((int, struct wordlist *, struct wordlist *));
|
||||||
|
static int some_ip_ok __P((struct wordlist *));
|
||||||
|
@@ -690,7 +690,7 @@
|
||||||
|
if (auth_script_state == s_up && auth_script_pid == 0) {
|
||||||
|
update_link_stats(unit);
|
||||||
|
auth_script_state = s_down;
|
||||||
|
- auth_script(_PATH_AUTHDOWN);
|
||||||
|
+ auth_script(_PATH_AUTHDOWN, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!doing_multilink) {
|
||||||
|
@@ -822,7 +822,7 @@
|
||||||
|
auth_state = s_up;
|
||||||
|
if (auth_script_state == s_down && auth_script_pid == 0) {
|
||||||
|
auth_script_state = s_up;
|
||||||
|
- auth_script(_PATH_AUTHUP);
|
||||||
|
+ auth_script(_PATH_AUTHUP, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -923,6 +923,7 @@
|
||||||
|
* Authentication failure: take the link down
|
||||||
|
*/
|
||||||
|
status = EXIT_PEER_AUTH_FAILED;
|
||||||
|
+ auth_script(_PATH_AUTHFAIL, 1);
|
||||||
|
lcp_close(unit, "Authentication failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1001,6 +1002,7 @@
|
||||||
|
* authentication secrets.
|
||||||
|
*/
|
||||||
|
status = EXIT_AUTH_TOPEER_FAILED;
|
||||||
|
+ auth_script(_PATH_AUTHFAIL, 1);
|
||||||
|
lcp_close(unit, "Failed to authenticate ourselves to peer");
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1233,6 +1235,8 @@
|
||||||
|
if (user[0] == 0 && !explicit_user)
|
||||||
|
strlcpy(user, our_name, sizeof(user));
|
||||||
|
|
||||||
|
+ script_setenv("LOCALNAME", user, 0);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* If we have a default route, require the peer to authenticate
|
||||||
|
* unless the noauth option was given or the real user is root.
|
||||||
|
@@ -2314,13 +2318,13 @@
|
||||||
|
case s_up:
|
||||||
|
if (auth_state == s_down) {
|
||||||
|
auth_script_state = s_down;
|
||||||
|
- auth_script(_PATH_AUTHDOWN);
|
||||||
|
+ auth_script(_PATH_AUTHDOWN, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case s_down:
|
||||||
|
if (auth_state == s_up) {
|
||||||
|
auth_script_state = s_up;
|
||||||
|
- auth_script(_PATH_AUTHUP);
|
||||||
|
+ auth_script(_PATH_AUTHUP, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -2331,8 +2335,9 @@
|
||||||
|
* interface-name peer-name real-user tty speed
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
-auth_script(script)
|
||||||
|
+auth_script(script, wait)
|
||||||
|
char *script;
|
||||||
|
+ int wait;
|
||||||
|
{
|
||||||
|
char strspeed[32];
|
||||||
|
struct passwd *pw;
|
||||||
|
@@ -2356,5 +2361,8 @@
|
||||||
|
argv[5] = strspeed;
|
||||||
|
argv[6] = NULL;
|
||||||
|
|
||||||
|
- auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0);
|
||||||
|
+ if (wait)
|
||||||
|
+ run_program(script, argv, 0, NULL, NULL, 1);
|
||||||
|
+ else
|
||||||
|
+ auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0);
|
||||||
|
}
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/pathnames.h ppp-2.4.5/pppd/pathnames.h
|
||||||
|
--- ppp-2.4.5.orig/pppd/pathnames.h 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/pathnames.h 2010-08-08 10:06:06.000000000 +0200
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#define _PATH_IPPREUP _ROOT_PATH "/etc/ppp/ip-pre-up"
|
||||||
|
#define _PATH_AUTHUP _ROOT_PATH "/etc/ppp/auth-up"
|
||||||
|
#define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down"
|
||||||
|
+#define _PATH_AUTHFAIL _ROOT_PATH "/etc/ppp/auth-fail"
|
||||||
|
#define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
|
||||||
|
#define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors"
|
||||||
|
#define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/"
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/pppd.8 ppp-2.4.5/pppd/pppd.8
|
||||||
|
--- ppp-2.4.5.orig/pppd/pppd.8 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/pppd.8 2010-08-08 10:06:06.000000000 +0200
|
||||||
|
@@ -1553,8 +1553,8 @@
|
||||||
|
Pppd invokes scripts at various stages in its processing which can be
|
||||||
|
used to perform site-specific ancillary processing. These scripts are
|
||||||
|
usually shell scripts, but could be executable code files instead.
|
||||||
|
-Pppd does not wait for the scripts to finish (except for the ip-pre-up
|
||||||
|
-script). The scripts are
|
||||||
|
+Pppd does not wait for the scripts to finish (except for the ip-pre-up,
|
||||||
|
+and auth-fail scripts). The scripts are
|
||||||
|
executed as root (with the real and effective user-id set to 0), so
|
||||||
|
that they can do things such as update routing tables or run
|
||||||
|
privileged daemons. Be careful that the contents of these scripts do
|
||||||
|
@@ -1582,6 +1582,11 @@
|
||||||
|
The authenticated name of the peer. This is only set if the peer
|
||||||
|
authenticates itself.
|
||||||
|
.TP
|
||||||
|
+.B LOCALNAME
|
||||||
|
+The username passed to the user option of the pppd daemon. This is
|
||||||
|
+handy to identify which account was used for authentication purposes
|
||||||
|
+when multiple accounts are available.
|
||||||
|
+.TP
|
||||||
|
.B SPEED
|
||||||
|
The baud rate of the tty device.
|
||||||
|
.TP
|
||||||
|
@@ -1634,6 +1639,11 @@
|
||||||
|
/etc/ppp/auth\-up was previously executed. It is executed in the same
|
||||||
|
manner with the same parameters as /etc/ppp/auth\-up.
|
||||||
|
.TP
|
||||||
|
+.B /etc/ppp/auth\-fail
|
||||||
|
+A program or script which is executed should authentication fail. pppd
|
||||||
|
+waits for this script to finish. It is executed in the same manner, with
|
||||||
|
+the same parameters as /etc/ppp/auth\-up.
|
||||||
|
+.TP
|
||||||
|
.B /etc/ppp/ip\-pre\-up
|
||||||
|
A program or script which is executed just before the ppp network
|
||||||
|
interface is brought up. It is executed with the same parameters as
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
diff -Nru ppp-2.4.5.orig/pppd/options.c ppp-2.4.5/pppd/options.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/options.c 2010-08-08 09:44:29.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/options.c 2010-08-08 10:07:50.000000000 +0200
|
||||||
|
@@ -94,6 +94,7 @@
|
||||||
|
int kdebugflag = 0; /* Tell kernel to print debug messages */
|
||||||
|
int default_device = 1; /* Using /dev/tty or equivalent */
|
||||||
|
char devnam[MAXPATHLEN]; /* Device name */
|
||||||
|
+int defaultmetric = 0; /* Metric of the default route */
|
||||||
|
bool nodetach = 0; /* Don't detach from controlling tty */
|
||||||
|
bool updetach = 0; /* Detach once link is up */
|
||||||
|
int maxconnect = 0; /* Maximum connect time */
|
||||||
|
@@ -289,6 +290,10 @@
|
||||||
|
"Number of seconds to wait for child processes at exit",
|
||||||
|
OPT_PRIO },
|
||||||
|
|
||||||
|
+ { "defaultmetric", o_int, &defaultmetric,
|
||||||
|
+ "The metric of the default route",
|
||||||
|
+ OPT_LIMITS, 0, 32766 },
|
||||||
|
+
|
||||||
|
#ifdef HAVE_MULTILINK
|
||||||
|
{ "multilink", o_bool, &multilink,
|
||||||
|
"Enable multilink operation", OPT_PRIO | 1 },
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/pppd.8 ppp-2.4.5/pppd/pppd.8
|
||||||
|
--- ppp-2.4.5.orig/pppd/pppd.8 2010-08-08 10:06:57.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/pppd.8 2010-08-08 10:07:50.000000000 +0200
|
||||||
|
@@ -121,6 +121,9 @@
|
||||||
|
This entry is removed when the PPP connection is broken. This option
|
||||||
|
is privileged if the \fInodefaultroute\fR option has been specified.
|
||||||
|
.TP
|
||||||
|
+.B defaultmetric \fIn
|
||||||
|
+The metric of the default route configured by pppd; default is 0.
|
||||||
|
+.TP
|
||||||
|
.B disconnect \fIscript
|
||||||
|
Execute the command specified by \fIscript\fR, by passing it to a
|
||||||
|
shell, after
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/pppd.h ppp-2.4.5/pppd/pppd.h
|
||||||
|
--- ppp-2.4.5.orig/pppd/pppd.h 2010-08-08 09:58:19.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/pppd.h 2010-08-08 10:07:50.000000000 +0200
|
||||||
|
@@ -276,6 +276,7 @@
|
||||||
|
extern int kdebugflag; /* Tell kernel to print debug messages */
|
||||||
|
extern int default_device; /* Using /dev/tty or equivalent */
|
||||||
|
extern char devnam[MAXPATHLEN]; /* Device name */
|
||||||
|
+extern int defaultmetric; /* Metric of the default route */
|
||||||
|
extern int crtscts; /* Use hardware flow control */
|
||||||
|
extern bool modem; /* Use modem control lines */
|
||||||
|
extern int inspeed; /* Input/Output speed requested */
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/sys-linux.c ppp-2.4.5/pppd/sys-linux.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/sys-linux.c 2010-08-08 09:53:56.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/sys-linux.c 2010-08-08 10:07:50.000000000 +0200
|
||||||
|
@@ -1465,7 +1465,7 @@
|
||||||
|
FILE *route_fd = (FILE *) 0;
|
||||||
|
static char route_buffer[512];
|
||||||
|
static int route_dev_col, route_dest_col, route_gw_col;
|
||||||
|
-static int route_flags_col, route_mask_col;
|
||||||
|
+static int route_flags_col, route_mask_col, route_metric_col;
|
||||||
|
static int route_num_cols;
|
||||||
|
|
||||||
|
static int open_route_table (void);
|
||||||
|
@@ -1508,6 +1508,7 @@
|
||||||
|
route_dest_col = 1;
|
||||||
|
route_gw_col = 2;
|
||||||
|
route_flags_col = 3;
|
||||||
|
+ route_metric_col = 6;
|
||||||
|
route_mask_col = 7;
|
||||||
|
route_num_cols = 8;
|
||||||
|
|
||||||
|
@@ -1527,6 +1528,8 @@
|
||||||
|
route_gw_col = col;
|
||||||
|
else if (strcasecmp(q, "flags") == 0)
|
||||||
|
route_flags_col = col;
|
||||||
|
+ else if (strcasecmp(q, "metric") == 0)
|
||||||
|
+ route_metric_col = col;
|
||||||
|
else if (strcasecmp(q, "mask") == 0)
|
||||||
|
route_mask_col = col;
|
||||||
|
else
|
||||||
|
@@ -1569,6 +1572,7 @@
|
||||||
|
|
||||||
|
rt->rt_flags = (short) strtoul(cols[route_flags_col], NULL, 16);
|
||||||
|
rt->rt_dev = cols[route_dev_col];
|
||||||
|
+ rt->rt_metric = (short) strtoul(cols[route_metric_col], NULL, 16);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
@@ -1591,6 +1595,8 @@
|
||||||
|
|
||||||
|
if (kernel_version > KVERSION(2,1,0) && SIN_ADDR(rt->rt_genmask) != 0)
|
||||||
|
continue;
|
||||||
|
+ if (rt->rt_metric != defaultmetric) /* consider only routes with the same metric */
|
||||||
|
+ continue;
|
||||||
|
if (SIN_ADDR(rt->rt_dst) == 0L) {
|
||||||
|
result = 1;
|
||||||
|
break;
|
||||||
|
@@ -1661,6 +1667,7 @@
|
||||||
|
SIN_ADDR(rt.rt_gateway) = gateway;
|
||||||
|
|
||||||
|
rt.rt_flags = RTF_UP | RTF_GATEWAY;
|
||||||
|
+ rt.rt_metric = defaultmetric + 1; /* +1 for binary compatibility */
|
||||||
|
if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
|
||||||
|
if ( ! ok_error ( errno ))
|
||||||
|
error("default route ioctl(SIOCADDRT): %m");
|
||||||
|
@@ -1696,6 +1703,7 @@
|
||||||
|
SIN_ADDR(rt.rt_gateway) = gateway;
|
||||||
|
|
||||||
|
rt.rt_flags = RTF_UP | RTF_GATEWAY;
|
||||||
|
+ rt.rt_metric = defaultmetric + 1; /* +1 for binary compatibility */
|
||||||
|
if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
|
||||||
|
if (still_ppp()) {
|
||||||
|
if ( ! ok_error ( errno ))
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
--- ppp-2.4.6/pppd/sys-linux.c
|
||||||
|
+++ ppp-2.4.6/pppd/sys-linux.c
|
||||||
|
@@ -2031,6 +2031,17 @@
|
||||||
|
kernel_version = KVERSION(osmaj, osmin, ospatch);
|
||||||
|
|
||||||
|
fd = open("/dev/ppp", O_RDWR);
|
||||||
|
+ if (fd < 0) {
|
||||||
|
+ /* try making it and see if that helps. */
|
||||||
|
+ if (errno == ENOENT && mknod("/dev/ppp", S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
||||||
|
+ makedev(108, 0)) >= 0) {
|
||||||
|
+ fd = open("/dev/ppp", O_RDWR);
|
||||||
|
+ if (fd >= 0)
|
||||||
|
+ info("Created /dev/ppp device node");
|
||||||
|
+ else
|
||||||
|
+ unlink("/dev/ppp"); /* didn't work, undo the mknod */
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if (fd >= 0) {
|
||||||
|
new_style_driver = 1;
|
||||||
|
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
diff -Nru ppp-2.4.5.orig/pppd/plugins/passwordfd.c ppp-2.4.5/pppd/plugins/passwordfd.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/passwordfd.c 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/passwordfd.c 2010-08-08 10:41:39.000000000 +0200
|
||||||
|
@@ -16,11 +16,11 @@
|
||||||
|
|
||||||
|
char pppd_version[] = VERSION;
|
||||||
|
|
||||||
|
-static int passwdfd = -1;
|
||||||
|
static char save_passwd[MAXSECRETLEN];
|
||||||
|
|
||||||
|
+static int readpassword __P((char **));
|
||||||
|
static option_t options[] = {
|
||||||
|
- { "passwordfd", o_int, &passwdfd,
|
||||||
|
+ { "passwordfd", o_special, (void *)readpassword,
|
||||||
|
"Receive password on this file descriptor" },
|
||||||
|
{ NULL }
|
||||||
|
};
|
||||||
|
@@ -30,43 +30,39 @@
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int pwfd_passwd (char *user, char *passwd)
|
||||||
|
+static int readpassword(char **argv)
|
||||||
|
{
|
||||||
|
- int readgood, red;
|
||||||
|
-
|
||||||
|
- if (passwdfd == -1)
|
||||||
|
- return -1;
|
||||||
|
-
|
||||||
|
- if (passwd == NULL)
|
||||||
|
- return 1;
|
||||||
|
-
|
||||||
|
- if (passwdfd == -2) {
|
||||||
|
- strcpy (passwd, save_passwd);
|
||||||
|
- return 1;
|
||||||
|
+ char *arg = *argv;
|
||||||
|
+ int passwdfd = -1;
|
||||||
|
+ int chunk, len;
|
||||||
|
+
|
||||||
|
+ if (sscanf(arg, "%d", &passwdfd) != 1 || passwdfd < 0)
|
||||||
|
+ {
|
||||||
|
+ error ("\"%s\" is not a valid file descriptor number", arg);
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- readgood = 0;
|
||||||
|
+ len = 0;
|
||||||
|
do {
|
||||||
|
- red = read (passwdfd, passwd + readgood, MAXSECRETLEN - 1 - readgood);
|
||||||
|
- if (red == 0)
|
||||||
|
- break;
|
||||||
|
- if (red < 0) {
|
||||||
|
- error ("Can't read secret from fd\n");
|
||||||
|
- readgood = -1;
|
||||||
|
+ chunk = read (passwdfd, save_passwd + len, MAXSECRETLEN - 1 - len);
|
||||||
|
+ if (chunk == 0)
|
||||||
|
break;
|
||||||
|
+ if (chunk < 0) {
|
||||||
|
+ error ("Can't read secret from fd %d", passwdfd);
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
- readgood += red;
|
||||||
|
- } while (readgood < MAXSECRETLEN - 1);
|
||||||
|
-
|
||||||
|
+ len += chunk;
|
||||||
|
+ } while (len < MAXSECRETLEN - 1);
|
||||||
|
+ save_passwd[len] = 0;
|
||||||
|
close (passwdfd);
|
||||||
|
|
||||||
|
- if (readgood < 0)
|
||||||
|
- return 0;
|
||||||
|
-
|
||||||
|
- passwd[readgood] = 0;
|
||||||
|
- strcpy (save_passwd, passwd);
|
||||||
|
- passwdfd = -2;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
|
||||||
|
+static int pwfd_passwd (char *user, char *passwd)
|
||||||
|
+{
|
||||||
|
+ if (passwd != NULL)
|
||||||
|
+ strcpy (passwd, save_passwd);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,256 @@
|
|||||||
|
--- ppp-2.4.6/pppd/ipcp.c
|
||||||
|
+++ ppp-2.4.6/pppd/ipcp.c
|
||||||
|
@@ -91,6 +91,7 @@
|
||||||
|
static int default_route_set[NUM_PPP]; /* Have set up a default route */
|
||||||
|
static int proxy_arp_set[NUM_PPP]; /* Have created proxy arp entry */
|
||||||
|
static bool usepeerdns; /* Ask peer for DNS addrs */
|
||||||
|
+static bool usepeerwins; /* Ask peer for WINS addrs */
|
||||||
|
static int ipcp_is_up; /* have called np_up() */
|
||||||
|
static int ipcp_is_open; /* haven't called np_finished() */
|
||||||
|
static bool ask_for_local; /* request our address from peer */
|
||||||
|
@@ -210,6 +211,9 @@
|
||||||
|
{ "usepeerdns", o_bool, &usepeerdns,
|
||||||
|
"Ask peer for DNS address(es)", 1 },
|
||||||
|
|
||||||
|
+ { "usepeerwins", o_bool, &usepeerwins,
|
||||||
|
+ "Ask peer for WINS address(es)", 1 },
|
||||||
|
+
|
||||||
|
{ "netmask", o_special, (void *)setnetmask,
|
||||||
|
"set netmask", OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, netmask_str },
|
||||||
|
|
||||||
|
@@ -703,6 +707,8 @@
|
||||||
|
wo->accept_remote = 1;
|
||||||
|
wo->req_dns1 = usepeerdns; /* Request DNS addresses from the peer */
|
||||||
|
wo->req_dns2 = usepeerdns;
|
||||||
|
+ wo->req_wins1 = usepeerwins; /* Request WINS addresses from the peer */
|
||||||
|
+ wo->req_wins2 = usepeerwins;
|
||||||
|
*go = *wo;
|
||||||
|
if (!ask_for_local)
|
||||||
|
go->ouraddr = 0;
|
||||||
|
@@ -755,8 +761,8 @@
|
||||||
|
LENCIADDR(go->neg_addr) +
|
||||||
|
LENCIDNS(go->req_dns1) +
|
||||||
|
LENCIDNS(go->req_dns2) +
|
||||||
|
- LENCIWINS(go->winsaddr[0]) +
|
||||||
|
- LENCIWINS(go->winsaddr[1])) ;
|
||||||
|
+ LENCIWINS(go->req_wins1) +
|
||||||
|
+ LENCIWINS(go->req_wins2)) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -830,8 +836,8 @@
|
||||||
|
neg = 0; \
|
||||||
|
}
|
||||||
|
|
||||||
|
-#define ADDCIWINS(opt, addr) \
|
||||||
|
- if (addr) { \
|
||||||
|
+#define ADDCIWINS(opt, neg, addr) \
|
||||||
|
+ if (neg) { \
|
||||||
|
if (len >= CILEN_ADDR) { \
|
||||||
|
u_int32_t l; \
|
||||||
|
PUTCHAR(opt, ucp); \
|
||||||
|
@@ -840,7 +846,7 @@
|
||||||
|
PUTLONG(l, ucp); \
|
||||||
|
len -= CILEN_ADDR; \
|
||||||
|
} else \
|
||||||
|
- addr = 0; \
|
||||||
|
+ neg = 0; \
|
||||||
|
}
|
||||||
|
|
||||||
|
ADDCIADDRS(CI_ADDRS, !go->neg_addr && go->old_addrs, go->ouraddr,
|
||||||
|
@@ -855,9 +861,9 @@
|
||||||
|
|
||||||
|
ADDCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]);
|
||||||
|
|
||||||
|
- ADDCIWINS(CI_MS_WINS1, go->winsaddr[0]);
|
||||||
|
+ ADDCIWINS(CI_MS_WINS1, go->req_wins1, go->winsaddr[0]);
|
||||||
|
|
||||||
|
- ADDCIWINS(CI_MS_WINS2, go->winsaddr[1]);
|
||||||
|
+ ADDCIWINS(CI_MS_WINS2, go->req_wins2, go->winsaddr[1]);
|
||||||
|
|
||||||
|
*lenp -= len;
|
||||||
|
}
|
||||||
|
@@ -962,8 +968,8 @@
|
||||||
|
goto bad; \
|
||||||
|
}
|
||||||
|
|
||||||
|
-#define ACKCIWINS(opt, addr) \
|
||||||
|
- if (addr) { \
|
||||||
|
+#define ACKCIWINS(opt, neg, addr) \
|
||||||
|
+ if (neg) { \
|
||||||
|
u_int32_t l; \
|
||||||
|
if ((len -= CILEN_ADDR) < 0) \
|
||||||
|
goto bad; \
|
||||||
|
@@ -989,9 +995,9 @@
|
||||||
|
|
||||||
|
ACKCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]);
|
||||||
|
|
||||||
|
- ACKCIWINS(CI_MS_WINS1, go->winsaddr[0]);
|
||||||
|
+ ACKCIWINS(CI_MS_WINS1, go->req_wins1, go->winsaddr[0]);
|
||||||
|
|
||||||
|
- ACKCIWINS(CI_MS_WINS2, go->winsaddr[1]);
|
||||||
|
+ ACKCIWINS(CI_MS_WINS2, go->req_wins2, go->winsaddr[1]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If there are any remaining CIs, then this packet is bad.
|
||||||
|
@@ -1026,7 +1032,7 @@
|
||||||
|
u_char cimaxslotindex, cicflag;
|
||||||
|
u_char citype, cilen, *next;
|
||||||
|
u_short cishort;
|
||||||
|
- u_int32_t ciaddr1, ciaddr2, l, cidnsaddr;
|
||||||
|
+ u_int32_t ciaddr1, ciaddr2, l, cidnsaddr, ciwinsaddr;
|
||||||
|
ipcp_options no; /* options we've seen Naks for */
|
||||||
|
ipcp_options try; /* options to request next time */
|
||||||
|
|
||||||
|
@@ -1091,6 +1097,19 @@
|
||||||
|
code \
|
||||||
|
}
|
||||||
|
|
||||||
|
+#define NAKCIWINS(opt, neg, code) \
|
||||||
|
+ if (go->neg && \
|
||||||
|
+ ((cilen = p[1]) == CILEN_ADDR) && \
|
||||||
|
+ len >= cilen && \
|
||||||
|
+ p[0] == opt) { \
|
||||||
|
+ len -= cilen; \
|
||||||
|
+ INCPTR(2, p); \
|
||||||
|
+ GETLONG(l, p); \
|
||||||
|
+ ciwinsaddr = htonl(l); \
|
||||||
|
+ no.neg = 1; \
|
||||||
|
+ code \
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Accept the peer's idea of {our,his} address, if different
|
||||||
|
* from our idea, only if the accept_{local,remote} flag is set.
|
||||||
|
@@ -1167,6 +1186,22 @@
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
+ NAKCIWINS(CI_MS_WINS1, req_wins1,
|
||||||
|
+ if (treat_as_reject) {
|
||||||
|
+ try.req_wins1 = 0;
|
||||||
|
+ } else {
|
||||||
|
+ try.winsaddr[0] = ciwinsaddr;
|
||||||
|
+ }
|
||||||
|
+ );
|
||||||
|
+
|
||||||
|
+ NAKCIWINS(CI_MS_WINS2, req_wins2,
|
||||||
|
+ if (treat_as_reject) {
|
||||||
|
+ try.req_wins2 = 0;
|
||||||
|
+ } else {
|
||||||
|
+ try.winsaddr[1] = ciwinsaddr;
|
||||||
|
+ }
|
||||||
|
+ );
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* There may be remaining CIs, if the peer is requesting negotiation
|
||||||
|
* on an option that we didn't include in our request packet.
|
||||||
|
@@ -1259,7 +1294,6 @@
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* ipcp_rejci - Reject some of our CIs.
|
||||||
|
* Callback from fsm_rconfnakrej.
|
||||||
|
@@ -1357,8 +1391,8 @@
|
||||||
|
try.neg = 0; \
|
||||||
|
}
|
||||||
|
|
||||||
|
-#define REJCIWINS(opt, addr) \
|
||||||
|
- if (addr && \
|
||||||
|
+#define REJCIWINS(opt, neg, addr) \
|
||||||
|
+ if (go->neg && \
|
||||||
|
((cilen = p[1]) == CILEN_ADDR) && \
|
||||||
|
len >= cilen && \
|
||||||
|
p[0] == opt) { \
|
||||||
|
@@ -1370,7 +1404,7 @@
|
||||||
|
/* Check rejected value. */ \
|
||||||
|
if (cilong != addr) \
|
||||||
|
goto bad; \
|
||||||
|
- try.winsaddr[opt == CI_MS_WINS2] = 0; \
|
||||||
|
+ try.neg = 0; \
|
||||||
|
}
|
||||||
|
|
||||||
|
REJCIADDRS(CI_ADDRS, !go->neg_addr && go->old_addrs,
|
||||||
|
@@ -1385,9 +1419,9 @@
|
||||||
|
|
||||||
|
REJCIDNS(CI_MS_DNS2, req_dns2, go->dnsaddr[1]);
|
||||||
|
|
||||||
|
- REJCIWINS(CI_MS_WINS1, go->winsaddr[0]);
|
||||||
|
+ REJCIWINS(CI_MS_WINS1, req_wins1, go->winsaddr[0]);
|
||||||
|
|
||||||
|
- REJCIWINS(CI_MS_WINS2, go->winsaddr[1]);
|
||||||
|
+ REJCIWINS(CI_MS_WINS2, req_wins2, go->winsaddr[1]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If there are any remaining CIs, then this packet is bad.
|
||||||
|
@@ -1581,7 +1615,7 @@
|
||||||
|
/* Microsoft primary or secondary WINS request */
|
||||||
|
d = citype == CI_MS_WINS2;
|
||||||
|
|
||||||
|
- /* If we do not have a DNS address then we cannot send it */
|
||||||
|
+ /* If we do not have a WINS address then we cannot send it */
|
||||||
|
if (ao->winsaddr[d] == 0 ||
|
||||||
|
cilen != CILEN_ADDR) { /* Check CI length */
|
||||||
|
orc = CONFREJ; /* Reject CI */
|
||||||
|
@@ -1830,6 +1864,13 @@
|
||||||
|
create_resolv(go->dnsaddr[0], go->dnsaddr[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (go->winsaddr[0])
|
||||||
|
+ script_setenv("WINS1", ip_ntoa(go->winsaddr[0]), 0);
|
||||||
|
+ if (go->winsaddr[1])
|
||||||
|
+ script_setenv("WINS2", ip_ntoa(go->winsaddr[1]), 0);
|
||||||
|
+ if (usepeerwins && (go->winsaddr[0] || go->winsaddr[1]))
|
||||||
|
+ script_setenv("USEPEERWINS", "1", 0);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Check that the peer is allowed to use the IP address it wants.
|
||||||
|
*/
|
||||||
|
--- ppp-2.4.6/pppd/ipcp.h
|
||||||
|
+++ ppp-2.4.6/pppd/ipcp.h
|
||||||
|
@@ -77,6 +77,8 @@
|
||||||
|
bool accept_remote; /* accept peer's value for hisaddr */
|
||||||
|
bool req_dns1; /* Ask peer to send primary DNS address? */
|
||||||
|
bool req_dns2; /* Ask peer to send secondary DNS address? */
|
||||||
|
+ bool req_wins1; /* Ask peer to send primary WINS address? */
|
||||||
|
+ bool req_wins2; /* Ask peer to send secondary WINS address? */
|
||||||
|
int vj_protocol; /* protocol value to use in VJ option */
|
||||||
|
int maxslotindex; /* values for RFC1332 VJ compression neg. */
|
||||||
|
bool cflag;
|
||||||
|
--- ppp-2.4.6/pppd/pppd.8
|
||||||
|
+++ ppp-2.4.6/pppd/pppd.8
|
||||||
|
@@ -1102,6 +1102,16 @@
|
||||||
|
/etc/ppp/resolv.conf file containing one or two nameserver lines with
|
||||||
|
the address(es) supplied by the peer.
|
||||||
|
.TP
|
||||||
|
+.B usepeerwins
|
||||||
|
+Ask the peer for up to 2 WINS server addresses. The addresses supplied
|
||||||
|
+by the peer (if any) are passed to the /etc/ppp/ip\-up script in the
|
||||||
|
+environment variables WINS1 and WINS2, and the environment variable
|
||||||
|
+USEPEERWINS will be set to 1.
|
||||||
|
+.LP
|
||||||
|
+Please note that some modems (like the Huawei E220) requires this option in
|
||||||
|
+order to avoid a race condition that results in the incorrect DNS servers
|
||||||
|
+being assigned.
|
||||||
|
+.TP
|
||||||
|
.B user \fIname
|
||||||
|
Sets the name used for authenticating the local system to the peer to
|
||||||
|
\fIname\fR.
|
||||||
|
@@ -1650,6 +1660,15 @@
|
||||||
|
If the peer supplies DNS server addresses, this variable is set to the
|
||||||
|
second DNS server address supplied (whether or not the usepeerdns
|
||||||
|
option was given).
|
||||||
|
+.TP
|
||||||
|
+.B WINS1
|
||||||
|
+If the peer supplies WINS server addresses, this variable is set to the
|
||||||
|
+first WINS server address supplied.
|
||||||
|
+.TP
|
||||||
|
+.B WINS2
|
||||||
|
+If the peer supplies WINS server addresses, this variable is set to the
|
||||||
|
+second WINS server address supplied.
|
||||||
|
+.P
|
||||||
|
.P
|
||||||
|
Pppd invokes the following scripts, if they exist. It is not an error
|
||||||
|
if they don't exist.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
diff -Nru ppp-2.4.5.orig/pppd/pathnames.h ppp-2.4.5/pppd/pathnames.h
|
||||||
|
--- ppp-2.4.5.orig/pppd/pathnames.h 2010-08-08 10:06:57.000000000 +0200
|
||||||
|
+++ ppp-2.4.5/pppd/pathnames.h 2010-08-08 10:53:51.000000000 +0200
|
||||||
|
@@ -29,7 +29,7 @@
|
||||||
|
#define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down"
|
||||||
|
#define _PATH_AUTHFAIL _ROOT_PATH "/etc/ppp/auth-fail"
|
||||||
|
#define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
|
||||||
|
-#define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors"
|
||||||
|
+#define _PATH_CONNERRS _ROOT_PATH "/var/log/ppp-connect-errors"
|
||||||
|
#define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/"
|
||||||
|
#define _PATH_RESOLV _ROOT_PATH "/etc/ppp/resolv.conf"
|
||||||
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
Ensure that the build process aborts if there is an error in one of
|
||||||
|
the plugin subdirectories.
|
||||||
|
|
||||||
|
2010-09-01 Martin von Gagern
|
||||||
|
|
||||||
|
References:
|
||||||
|
http://bugs.gentoo.org/334727
|
||||||
|
|
||||||
|
Index: ppp-2.4.5/pppd/plugins/Makefile.linux
|
||||||
|
===================================================================
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/Makefile.linux
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/Makefile.linux
|
||||||
|
@@ -20,7 +20,7 @@ include .depend
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: $(PLUGINS)
|
||||||
|
- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all; done
|
||||||
|
+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all || exit $?; done
|
||||||
|
|
||||||
|
%.so: %.c
|
||||||
|
$(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^
|
||||||
|
@@ -30,12 +30,12 @@ VERSION = $(shell awk -F '"' '/VERSION/
|
||||||
|
install: $(PLUGINS)
|
||||||
|
$(INSTALL) -d $(LIBDIR)
|
||||||
|
$(INSTALL) $? $(LIBDIR)
|
||||||
|
- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d install; done
|
||||||
|
+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d install || exit $?; done
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o *.so *.a
|
||||||
|
- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d clean; done
|
||||||
|
+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d clean || exit $?; done
|
||||||
|
|
||||||
|
depend:
|
||||||
|
$(CPP) -M $(CFLAGS) *.c >.depend
|
||||||
|
- for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d depend; done
|
||||||
|
+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d depend || exit $?; done
|
||||||
@@ -0,0 +1,254 @@
|
|||||||
|
--- ppp-2.4.6/pppd/plugins/rp-pppoe/discovery.c
|
||||||
|
+++ ppp-2.4.6/pppd/plugins/rp-pppoe/discovery.c
|
||||||
|
@@ -39,6 +39,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
+#include <time.h>
|
||||||
|
|
||||||
|
/* Calculate time remaining until *exp, return 0 if now >= *exp */
|
||||||
|
static int time_left(struct timeval *diff, struct timeval *exp)
|
||||||
|
@@ -251,6 +252,80 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
+*%FUNCTION: recvPacketForMe
|
||||||
|
+*%ARGUMENTS:
|
||||||
|
+* packet -- output parameter
|
||||||
|
+* len -- output parameter length
|
||||||
|
+* conn -- connection
|
||||||
|
+* start -- operation startup timestamp
|
||||||
|
+* timeout -- how long to wait (in seconds)
|
||||||
|
+*%RETURNS:
|
||||||
|
+* -1: error
|
||||||
|
+* 0: timed out
|
||||||
|
+* 1: packet received
|
||||||
|
+*%DESCRIPTION:
|
||||||
|
+* receive and filter junk packets
|
||||||
|
+***********************************************************************/
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+recvPacketForMe(PPPoEPacket *packet, int *len, PPPoEConnection *conn, time_t start, int timeout)
|
||||||
|
+{
|
||||||
|
+ fd_set readable;
|
||||||
|
+ int r;
|
||||||
|
+ struct timeval tv;
|
||||||
|
+ time_t now;
|
||||||
|
+ int time_remain;
|
||||||
|
+
|
||||||
|
+ do {
|
||||||
|
+ time(&now);
|
||||||
|
+ time_remain = timeout - (int)difftime(now, start);
|
||||||
|
+ if (time_remain <= 0) return 0; /* Timed out */
|
||||||
|
+
|
||||||
|
+ if (BPF_BUFFER_IS_EMPTY) {
|
||||||
|
+ tv.tv_sec = time_remain;
|
||||||
|
+ tv.tv_usec = 0;
|
||||||
|
+
|
||||||
|
+ FD_ZERO(&readable);
|
||||||
|
+ FD_SET(conn->discoverySocket, &readable);
|
||||||
|
+
|
||||||
|
+ r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
|
||||||
|
+ if (r < 0)
|
||||||
|
+ {
|
||||||
|
+ if (errno == EINTR)
|
||||||
|
+ {
|
||||||
|
+ continue; /* interrupted, so retry */
|
||||||
|
+ }else
|
||||||
|
+ {
|
||||||
|
+ error("pppoe: recvPacketForMe: select: %m");
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (r == 0) return 0; /* Timed out */
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* Get the packet */
|
||||||
|
+ receivePacket(conn->discoverySocket, packet, len);
|
||||||
|
+
|
||||||
|
+ /* Check length */
|
||||||
|
+ if (ntohs(packet->length) + HDR_SIZE > *len) {
|
||||||
|
+ error("Bogus PPPoE length field (%u)",
|
||||||
|
+ (unsigned int) ntohs(packet->length));
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+#ifdef USE_BPF
|
||||||
|
+ /* If it's not a Discovery packet, loop again */
|
||||||
|
+ if (etherType(&packet) != Eth_PPPOE_Discovery) continue;
|
||||||
|
+#endif
|
||||||
|
+ /* If it's not for us, loop again */
|
||||||
|
+ }while ( ! packetIsForMe(conn, packet));
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/***********************************************************************
|
||||||
|
*%FUNCTION: sendPADI
|
||||||
|
*%ARGUMENTS:
|
||||||
|
* conn -- PPPoEConnection structure
|
||||||
|
@@ -344,13 +419,12 @@
|
||||||
|
void
|
||||||
|
waitForPADO(PPPoEConnection *conn, int timeout)
|
||||||
|
{
|
||||||
|
- fd_set readable;
|
||||||
|
int r;
|
||||||
|
- struct timeval tv;
|
||||||
|
struct timeval expire_at;
|
||||||
|
|
||||||
|
PPPoEPacket packet;
|
||||||
|
int len;
|
||||||
|
+ time_t start;
|
||||||
|
|
||||||
|
struct PacketCriteria pc;
|
||||||
|
pc.conn = conn;
|
||||||
|
@@ -367,43 +441,10 @@
|
||||||
|
}
|
||||||
|
expire_at.tv_sec += timeout;
|
||||||
|
|
||||||
|
+ time(&start);
|
||||||
|
do {
|
||||||
|
- if (BPF_BUFFER_IS_EMPTY) {
|
||||||
|
- if (!time_left(&tv, &expire_at))
|
||||||
|
- return; /* Timed out */
|
||||||
|
-
|
||||||
|
- FD_ZERO(&readable);
|
||||||
|
- FD_SET(conn->discoverySocket, &readable);
|
||||||
|
-
|
||||||
|
- while(1) {
|
||||||
|
- r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
|
||||||
|
- if (r >= 0 || errno != EINTR) break;
|
||||||
|
- }
|
||||||
|
- if (r < 0) {
|
||||||
|
- error("select (waitForPADO): %m");
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
- if (r == 0)
|
||||||
|
- return; /* Timed out */
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Get the packet */
|
||||||
|
- receivePacket(conn->discoverySocket, &packet, &len);
|
||||||
|
-
|
||||||
|
- /* Check length */
|
||||||
|
- if (ntohs(packet.length) + HDR_SIZE > len) {
|
||||||
|
- error("Bogus PPPoE length field (%u)",
|
||||||
|
- (unsigned int) ntohs(packet.length));
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
-#ifdef USE_BPF
|
||||||
|
- /* If it's not a Discovery packet, loop again */
|
||||||
|
- if (etherType(&packet) != Eth_PPPOE_Discovery) continue;
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
- /* If it's not for us, loop again */
|
||||||
|
- if (!packetIsForMe(conn, &packet)) continue;
|
||||||
|
+ r = recvPacketForMe(&packet, &len, conn, start, timeout);
|
||||||
|
+ if (r<=0) return; /* Timed out or error */
|
||||||
|
|
||||||
|
if (packet.code == CODE_PADO) {
|
||||||
|
if (NOT_UNICAST(packet.ethHdr.h_source)) {
|
||||||
|
@@ -537,13 +578,12 @@
|
||||||
|
static void
|
||||||
|
waitForPADS(PPPoEConnection *conn, int timeout)
|
||||||
|
{
|
||||||
|
- fd_set readable;
|
||||||
|
int r;
|
||||||
|
- struct timeval tv;
|
||||||
|
struct timeval expire_at;
|
||||||
|
|
||||||
|
PPPoEPacket packet;
|
||||||
|
int len;
|
||||||
|
+ time_t start;
|
||||||
|
|
||||||
|
if (gettimeofday(&expire_at, NULL) < 0) {
|
||||||
|
error("gettimeofday (waitForPADS): %m");
|
||||||
|
@@ -551,48 +591,15 @@
|
||||||
|
}
|
||||||
|
expire_at.tv_sec += timeout;
|
||||||
|
|
||||||
|
+ time(&start);
|
||||||
|
conn->error = 0;
|
||||||
|
do {
|
||||||
|
- if (BPF_BUFFER_IS_EMPTY) {
|
||||||
|
- if (!time_left(&tv, &expire_at))
|
||||||
|
- return; /* Timed out */
|
||||||
|
-
|
||||||
|
- FD_ZERO(&readable);
|
||||||
|
- FD_SET(conn->discoverySocket, &readable);
|
||||||
|
-
|
||||||
|
- while(1) {
|
||||||
|
- r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
|
||||||
|
- if (r >= 0 || errno != EINTR) break;
|
||||||
|
- }
|
||||||
|
- if (r < 0) {
|
||||||
|
- error("select (waitForPADS): %m");
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
- if (r == 0)
|
||||||
|
- return; /* Timed out */
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* Get the packet */
|
||||||
|
- receivePacket(conn->discoverySocket, &packet, &len);
|
||||||
|
-
|
||||||
|
- /* Check length */
|
||||||
|
- if (ntohs(packet.length) + HDR_SIZE > len) {
|
||||||
|
- error("Bogus PPPoE length field (%u)",
|
||||||
|
- (unsigned int) ntohs(packet.length));
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
-#ifdef USE_BPF
|
||||||
|
- /* If it's not a Discovery packet, loop again */
|
||||||
|
- if (etherType(&packet) != Eth_PPPOE_Discovery) continue;
|
||||||
|
-#endif
|
||||||
|
+ r = recvPacketForMe(&packet, &len, conn, start, timeout);
|
||||||
|
+ if (r<=0) return; /* Timed out or error */
|
||||||
|
|
||||||
|
/* If it's not from the AC, it's not for me */
|
||||||
|
if (memcmp(packet.ethHdr.h_source, conn->peerEth, ETH_ALEN)) continue;
|
||||||
|
|
||||||
|
- /* If it's not for us, loop again */
|
||||||
|
- if (!packetIsForMe(conn, &packet)) continue;
|
||||||
|
-
|
||||||
|
/* Is it PADS? */
|
||||||
|
if (packet.code == CODE_PADS) {
|
||||||
|
/* Parse for goodies */
|
||||||
|
--- ppp-2.4.6/pppd/plugins/rp-pppoe/pppoe-discovery.c
|
||||||
|
+++ ppp-2.4.6/pppd/plugins/rp-pppoe/pppoe-discovery.c
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
+#include <time.h>
|
||||||
|
|
||||||
|
#include "pppoe.h"
|
||||||
|
|
||||||
|
@@ -513,6 +514,8 @@
|
||||||
|
struct timeval tv;
|
||||||
|
PPPoEPacket packet;
|
||||||
|
int len;
|
||||||
|
+ time_t start, now;
|
||||||
|
+ int time_remain;
|
||||||
|
|
||||||
|
struct PacketCriteria pc;
|
||||||
|
pc.conn = conn;
|
||||||
|
@@ -522,9 +525,13 @@
|
||||||
|
pc.seenServiceName = 0;
|
||||||
|
conn->error = 0;
|
||||||
|
|
||||||
|
+ time(&start);
|
||||||
|
do {
|
||||||
|
+ time(&now);
|
||||||
|
+ time_remain = timeout - (int)difftime(now, start);
|
||||||
|
+ if (time_remain <= 0) return; /* Timed out */
|
||||||
|
if (BPF_BUFFER_IS_EMPTY) {
|
||||||
|
- tv.tv_sec = timeout;
|
||||||
|
+ tv.tv_sec = time_remain;
|
||||||
|
tv.tv_usec = 0;
|
||||||
|
|
||||||
|
FD_ZERO(&readable);
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
diff -Nru ppp-2.4.5.orig/pppd/lcp.c ppp-2.4.5/pppd/lcp.c
|
||||||
|
--- ppp-2.4.5.orig/pppd/lcp.c 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/lcp.c 2010-11-27 10:46:26.000000000 +0100
|
||||||
|
@@ -73,6 +73,7 @@
|
||||||
|
*/
|
||||||
|
int lcp_echo_interval = 0; /* Interval between LCP echo-requests */
|
||||||
|
int lcp_echo_fails = 0; /* Tolerance to unanswered echo-requests */
|
||||||
|
+bool lcp_echo_adaptive = 0; /* request echo only if the link was idle */
|
||||||
|
bool lax_recv = 0; /* accept control chars in asyncmap */
|
||||||
|
bool noendpoint = 0; /* don't send/accept endpoint discriminator */
|
||||||
|
|
||||||
|
@@ -151,6 +152,8 @@
|
||||||
|
OPT_PRIO },
|
||||||
|
{ "lcp-echo-interval", o_int, &lcp_echo_interval,
|
||||||
|
"Set time in seconds between LCP echo requests", OPT_PRIO },
|
||||||
|
+ { "lcp-echo-adaptive", o_bool, &lcp_echo_adaptive,
|
||||||
|
+ "Suppress LCP echo requests if traffic was received", 1 },
|
||||||
|
{ "lcp-restart", o_int, &lcp_fsm[0].timeouttime,
|
||||||
|
"Set time in seconds between LCP retransmissions", OPT_PRIO },
|
||||||
|
{ "lcp-max-terminate", o_int, &lcp_fsm[0].maxtermtransmits,
|
||||||
|
@@ -2322,6 +2325,22 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
+ * If adaptive echos have been enabled, only send the echo request if
|
||||||
|
+ * no traffic was received since the last one.
|
||||||
|
+ */
|
||||||
|
+ if (lcp_echo_adaptive) {
|
||||||
|
+ static unsigned int last_pkts_in = 0;
|
||||||
|
+
|
||||||
|
+ update_link_stats(f->unit);
|
||||||
|
+ link_stats_valid = 0;
|
||||||
|
+
|
||||||
|
+ if (link_stats.pkts_in != last_pkts_in) {
|
||||||
|
+ last_pkts_in = link_stats.pkts_in;
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
* Make and send the echo request frame.
|
||||||
|
*/
|
||||||
|
if (f->state == OPENED) {
|
||||||
|
diff -Nru ppp-2.4.5.orig/pppd/pppd.8 ppp-2.4.5/pppd/pppd.8
|
||||||
|
--- ppp-2.4.5.orig/pppd/pppd.8 2009-11-16 23:26:07.000000000 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/pppd.8 2010-11-27 10:44:58.000000000 +0100
|
||||||
|
@@ -549,6 +549,11 @@
|
||||||
|
dynamic IP address option (i.e. set /proc/sys/net/ipv4/ip_dynaddr to
|
||||||
|
1) in demand mode if the local address changes.
|
||||||
|
.TP
|
||||||
|
+.B lcp\-echo\-adaptive
|
||||||
|
+If this option is used with the \fIlcp\-echo\-failure\fR option then
|
||||||
|
+pppd will send LCP echo\-request frames only if no traffic was received
|
||||||
|
+from the peer since the last echo\-request was sent.
|
||||||
|
+.TP
|
||||||
|
.B lcp\-echo\-failure \fIn
|
||||||
|
If this option is given, pppd will presume the peer to be dead
|
||||||
|
if \fIn\fR LCP echo\-requests are sent without receiving a valid LCP
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
|||||||
|
--- ppp-2.4.3/pppd/plugins/dhcp/Makefile.linux
|
||||||
|
+++ ppp-2.4.3/pppd/plugins/dhcp/Makefile.linux
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
|
||||||
|
PLUGIN=dhcpc.so
|
||||||
|
-CFLAGS=-I../.. -I../../../include -O2
|
||||||
|
+CFLAGS=$(COPTS) -I../.. -I../../../include -fPIC
|
||||||
|
|
||||||
|
all: $(PLUGIN)
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@
|
||||||
|
$(INSTALL) -s -c -m 755 dhcpc.so $(LIBDIR)
|
||||||
|
|
||||||
|
dhcpc.so: dhcpc.o clientpacket.o packet.o socket.o options.o
|
||||||
|
- gcc -o dhcpc.so -shared dhcpc.o clientpacket.o packet.o socket.o options.o
|
||||||
|
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
--- ppp-2.4.2/pppd/plugins/dhcp/dhcpc.c
|
||||||
|
+++ ppp-2.4.2/pppd/plugins/dhcp/dhcpc.c
|
||||||
|
@@ -144,7 +144,7 @@
|
||||||
|
fd = raw_socket(client_config.ifindex);
|
||||||
|
|
||||||
|
if (listen_mode != LISTEN_NONE && fd < 0) {
|
||||||
|
- fatal("DHCPC: couldn't listen on socket, %s", sys_errlist[errno]);
|
||||||
|
+ fatal("DHCPC: couldn't listen on socket, %s", strerror(errno));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -208,7 +208,7 @@
|
||||||
|
len = get_packet(&packet, fd);
|
||||||
|
|
||||||
|
if (len == -1 && errno != EINTR) {
|
||||||
|
- dbglog("DHCPC: error on read, %s, reopening socket", sys_errlist[errno]);
|
||||||
|
+ dbglog("DHCPC: error on read, %s, reopening socket", strerror(errno));
|
||||||
|
change_mode(LISTEN_KERNEL);
|
||||||
|
}
|
||||||
|
if (len < 0) continue;
|
||||||
|
@@ -380,7 +380,7 @@
|
||||||
|
else len = get_raw_packet(&packet, fd);
|
||||||
|
|
||||||
|
if (len == -1 && errno != EINTR) {
|
||||||
|
- dbglog("DHCPC: error on read, %s, reopening socket", sys_errlist[errno]);
|
||||||
|
+ dbglog("DHCPC: error on read, %s, reopening socket", strerror(errno));
|
||||||
|
change_mode(listen_mode); /* just close and reopen */
|
||||||
|
}
|
||||||
|
if (len < 0) continue;
|
||||||
|
@@ -445,7 +445,7 @@
|
||||||
|
|
||||||
|
} else {
|
||||||
|
/* An error occured */
|
||||||
|
- dbglog("DHCPC: error on select, %s, reopening socket", sys_errlist[errno]);
|
||||||
|
+ dbglog("DHCPC: error on select, %s, reopening socket", strerror(errno));
|
||||||
|
change_mode(listen_mode); /* just close and reopen */
|
||||||
|
}
|
||||||
|
|
||||||
|
--- ppp-2.4.2/pppd/plugins/dhcp/packet.c
|
||||||
|
+++ ppp-2.4.2/pppd/plugins/dhcp/packet.c
|
||||||
|
@@ -125,7 +125,7 @@
|
||||||
|
return kernel_packet(payload,payload->giaddr,CLIENT_PORT,dest_ip,dest_port);
|
||||||
|
|
||||||
|
if ((fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))) < 0) {
|
||||||
|
- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]);
|
||||||
|
+ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -138,7 +138,7 @@
|
||||||
|
dest.sll_halen = 6;
|
||||||
|
memcpy(dest.sll_addr, dest_arp, 6);
|
||||||
|
if (bind(fd, (struct sockaddr *)&dest, sizeof(struct sockaddr_ll)) < 0) {
|
||||||
|
- DEBUG(LOG_ERR, "bind call failed: %s", sys_errlist[errno]);
|
||||||
|
+ DEBUG(LOG_ERR, "bind call failed: %s", strerror(errno));
|
||||||
|
close(fd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
@@ -161,7 +161,7 @@
|
||||||
|
|
||||||
|
result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0, (struct sockaddr *) &dest, sizeof(dest));
|
||||||
|
if (result <= 0) {
|
||||||
|
- DEBUG(LOG_ERR, "write on socket failed: %s", sys_errlist[errno]);
|
||||||
|
+ DEBUG(LOG_ERR, "write on socket failed: %s", strerror(errno));
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
return result;
|
||||||
|
--- ppp-2.4.2/pppd/plugins/dhcp/socket.c
|
||||||
|
+++ ppp-2.4.2/pppd/plugins/dhcp/socket.c
|
||||||
|
@@ -60,7 +60,7 @@
|
||||||
|
*addr = sin->sin_addr.s_addr;
|
||||||
|
DEBUG(LOG_INFO, "%s (our ip) = %s", ifr.ifr_name, inet_ntoa(sin->sin_addr));
|
||||||
|
} else {
|
||||||
|
- LOG(LOG_ERR, "SIOCGIFADDR failed!: %s", sys_errlist[errno]);
|
||||||
|
+ LOG(LOG_ERR, "SIOCGIFADDR failed!: %s", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -69,7 +69,7 @@
|
||||||
|
DEBUG(LOG_INFO, "adapter index %d", ifr.ifr_ifindex);
|
||||||
|
*ifindex = ifr.ifr_ifindex;
|
||||||
|
} else {
|
||||||
|
- LOG(LOG_ERR, "SIOCGIFINDEX failed!: %s", sys_errlist[errno]);
|
||||||
|
+ LOG(LOG_ERR, "SIOCGIFINDEX failed!: %s", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (ioctl(fd, SIOCGIFHWADDR, &ifr) == 0) {
|
||||||
|
@@ -77,11 +77,11 @@
|
||||||
|
DEBUG(LOG_INFO, "adapter hardware address %02x:%02x:%02x:%02x:%02x:%02x",
|
||||||
|
arp[0], arp[1], arp[2], arp[3], arp[4], arp[5]);
|
||||||
|
} else {
|
||||||
|
- LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %s", sys_errlist[errno]);
|
||||||
|
+ LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %s", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- LOG(LOG_ERR, "socket failed!: %s", sys_errlist[errno]);
|
||||||
|
+ LOG(LOG_ERR, "socket failed!: %s", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
@@ -98,7 +98,7 @@
|
||||||
|
|
||||||
|
DEBUG(LOG_INFO, "Opening listen socket on 0x%08x:%d %s\n", ip, port, inf ? inf : "*");
|
||||||
|
if ((fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
|
||||||
|
- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]);
|
||||||
|
+ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -144,7 +144,7 @@
|
||||||
|
|
||||||
|
DEBUG(LOG_INFO, "Opening raw socket on ifindex %d\n", ifindex);
|
||||||
|
if ((fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))) < 0) {
|
||||||
|
- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]);
|
||||||
|
+ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -152,7 +152,7 @@
|
||||||
|
sock.sll_protocol = htons(ETH_P_IP);
|
||||||
|
sock.sll_ifindex = ifindex;
|
||||||
|
if (bind(fd, (struct sockaddr *) &sock, sizeof(sock)) < 0) {
|
||||||
|
- DEBUG(LOG_ERR, "bind call failed: %s", sys_errlist[errno]);
|
||||||
|
+ DEBUG(LOG_ERR, "bind call failed: %s", strerror(errno));
|
||||||
|
close(fd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# this is a script which is executed after disconnecting the ppp interface.
|
||||||
|
# look at man pppd for details
|
||||||
|
|
||||||
|
# the followings parameters are available:
|
||||||
|
# $1 = interface-name
|
||||||
|
# $2 = tty-device
|
||||||
|
# $3 = speed
|
||||||
|
# $4 = local-IP-address
|
||||||
|
# $5 = remote-IP-address
|
||||||
|
# $6 = ipparam
|
||||||
|
|
||||||
|
if [ "$USEPEERDNS" ]; then
|
||||||
|
|
||||||
|
# taken from debian's 0000usepeerdns
|
||||||
|
# follow any symlink to find the real file
|
||||||
|
REALRESOLVCONF=$(readlink --canonicalize /etc/resolv.conf)
|
||||||
|
|
||||||
|
if [ "$REALRESOLVCONF" != "/etc/ppp/resolv.conf" ]; then
|
||||||
|
|
||||||
|
# if an old resolv.conf file exists, restore it
|
||||||
|
if [ -e $REALRESOLVCONF.pppd-backup ]; then
|
||||||
|
mv $REALRESOLVCONF.pppd-backup $REALRESOLVCONF
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Recreate the default route so autodial works
|
||||||
|
[ -s /etc/conf.d/net ] && . /etc/conf.d/net
|
||||||
|
if [ -n "${gateway}" ] && [ "${gateway%/*}" = "$1" ]; then
|
||||||
|
/sbin/route add default dev ${gateway%/*}
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -f /etc/ppp/ip-down.local ] && . /etc/ppp/ip-down.local "$@"
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# this is a script which is executed after connecting the ppp interface.
|
||||||
|
# look at man pppd for details
|
||||||
|
|
||||||
|
# the followings parameters are available:
|
||||||
|
# $1 = interface-name
|
||||||
|
# $2 = tty-device
|
||||||
|
# $3 = speed
|
||||||
|
# $4 = local-IP-address
|
||||||
|
# $5 = remote-IP-address
|
||||||
|
# $6 = ipparam
|
||||||
|
|
||||||
|
if [ "$USEPEERDNS" ]; then
|
||||||
|
|
||||||
|
# add the server supplied DNS entries to /etc/resolv.conf
|
||||||
|
# (taken from debian's 0000usepeerdns)
|
||||||
|
|
||||||
|
# follow any symlink to find the real file
|
||||||
|
REALRESOLVCONF=$(readlink --canonicalize /etc/resolv.conf)
|
||||||
|
|
||||||
|
if [ "$REALRESOLVCONF" != "/etc/ppp/resolv.conf" ]; then
|
||||||
|
|
||||||
|
# merge the new nameservers with the other options from the old configuration
|
||||||
|
{
|
||||||
|
grep '^nameserver[[:space:]]' $REALRESOLVCONF
|
||||||
|
cat /etc/ppp/resolv.conf
|
||||||
|
} > $REALRESOLVCONF.tmp
|
||||||
|
|
||||||
|
# backup the old configuration and install the new one
|
||||||
|
cp -a $REALRESOLVCONF $REALRESOLVCONF.pppd-backup
|
||||||
|
mv $REALRESOLVCONF.tmp $REALRESOLVCONF
|
||||||
|
|
||||||
|
# correct permissions
|
||||||
|
chmod 0644 /etc/resolv.conf
|
||||||
|
chown root:root /etc/resolv.conf
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -f /etc/ppp/ip-up.local ] && . /etc/ppp/ip-up.local "$@"
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
Index: ppp-2.4.5/chat/Makefile.linux
|
||||||
|
===================================================================
|
||||||
|
--- ppp-2.4.5.orig/chat/Makefile.linux
|
||||||
|
+++ ppp-2.4.5/chat/Makefile.linux
|
||||||
|
@@ -25,7 +25,7 @@ chat.o: chat.c
|
||||||
|
|
||||||
|
install: chat
|
||||||
|
mkdir -p $(BINDIR) $(MANDIR)
|
||||||
|
- $(INSTALL) -s -c chat $(BINDIR)
|
||||||
|
+ $(INSTALL) -c chat $(BINDIR)
|
||||||
|
$(INSTALL) -c -m 644 chat.8 $(MANDIR)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
Index: ppp-2.4.5/pppd/Makefile.linux
|
||||||
|
===================================================================
|
||||||
|
--- ppp-2.4.5.orig/pppd/Makefile.linux
|
||||||
|
+++ ppp-2.4.5/pppd/Makefile.linux
|
||||||
|
@@ -100,7 +100,7 @@ ifdef USE_SRP
|
||||||
|
CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
|
||||||
|
LIBS += -lsrp -L/usr/local/ssl/lib -lcrypto
|
||||||
|
TARGETS += srp-entry
|
||||||
|
-EXTRAINSTALL = $(INSTALL) -s -c -m 555 srp-entry $(BINDIR)/srp-entry
|
||||||
|
+EXTRAINSTALL = $(INSTALL) -c -m 555 srp-entry $(BINDIR)/srp-entry
|
||||||
|
MANPAGES += srp-entry.8
|
||||||
|
EXTRACLEAN += srp-entry.o
|
||||||
|
NEEDDES=y
|
||||||
|
@@ -201,7 +201,7 @@ all: $(TARGETS)
|
||||||
|
install: pppd
|
||||||
|
mkdir -p $(BINDIR) $(MANDIR)
|
||||||
|
$(EXTRAINSTALL)
|
||||||
|
- $(INSTALL) -s -c -m 555 pppd $(BINDIR)/pppd
|
||||||
|
+ $(INSTALL) -c -m 555 pppd $(BINDIR)/pppd
|
||||||
|
if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \
|
||||||
|
chmod o-rx,u+s $(BINDIR)/pppd; fi
|
||||||
|
$(INSTALL) -c -m 444 pppd.8 $(MANDIR)
|
||||||
|
Index: ppp-2.4.5/pppd/plugins/radius/Makefile.linux
|
||||||
|
===================================================================
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/radius/Makefile.linux
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/radius/Makefile.linux
|
||||||
|
@@ -36,9 +36,9 @@ all: $(PLUGIN)
|
||||||
|
|
||||||
|
install: all
|
||||||
|
$(INSTALL) -d -m 755 $(LIBDIR)
|
||||||
|
- $(INSTALL) -s -c -m 755 radius.so $(LIBDIR)
|
||||||
|
- $(INSTALL) -s -c -m 755 radattr.so $(LIBDIR)
|
||||||
|
- $(INSTALL) -s -c -m 755 radrealms.so $(LIBDIR)
|
||||||
|
+ $(INSTALL) -c -m 755 radius.so $(LIBDIR)
|
||||||
|
+ $(INSTALL) -c -m 755 radattr.so $(LIBDIR)
|
||||||
|
+ $(INSTALL) -c -m 755 radrealms.so $(LIBDIR)
|
||||||
|
$(INSTALL) -c -m 444 pppd-radius.8 $(MANDIR)
|
||||||
|
$(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)
|
||||||
|
|
||||||
|
Index: ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux
|
||||||
|
===================================================================
|
||||||
|
--- ppp-2.4.5.orig/pppd/plugins/rp-pppoe/Makefile.linux
|
||||||
|
+++ ppp-2.4.5/pppd/plugins/rp-pppoe/Makefile.linux
|
||||||
|
@@ -43,9 +43,9 @@ rp-pppoe.so: plugin.o discovery.o if.o c
|
||||||
|
|
||||||
|
install: all
|
||||||
|
$(INSTALL) -d -m 755 $(LIBDIR)
|
||||||
|
- $(INSTALL) -s -c -m 4550 rp-pppoe.so $(LIBDIR)
|
||||||
|
+ $(INSTALL) -c -m 4550 rp-pppoe.so $(LIBDIR)
|
||||||
|
$(INSTALL) -d -m 755 $(BINDIR)
|
||||||
|
- $(INSTALL) -s -c -m 555 pppoe-discovery $(BINDIR)
|
||||||
|
+ $(INSTALL) -c -m 555 pppoe-discovery $(BINDIR)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o *.so pppoe-discovery
|
||||||
|
Index: ppp-2.4.5/pppdump/Makefile.linux
|
||||||
|
===================================================================
|
||||||
|
--- ppp-2.4.5.orig/pppdump/Makefile.linux
|
||||||
|
+++ ppp-2.4.5/pppdump/Makefile.linux
|
||||||
|
@@ -17,5 +17,5 @@ clean:
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p $(BINDIR) $(MANDIR)
|
||||||
|
- $(INSTALL) -s -c pppdump $(BINDIR)
|
||||||
|
+ $(INSTALL) -c pppdump $(BINDIR)
|
||||||
|
$(INSTALL) -c -m 444 pppdump.8 $(MANDIR)
|
||||||
|
Index: ppp-2.4.5/pppstats/Makefile.linux
|
||||||
|
===================================================================
|
||||||
|
--- ppp-2.4.5.orig/pppstats/Makefile.linux
|
||||||
|
+++ ppp-2.4.5/pppstats/Makefile.linux
|
||||||
|
@@ -22,7 +22,7 @@ all: pppstats
|
||||||
|
|
||||||
|
install: pppstats
|
||||||
|
-mkdir -p $(MANDIR)
|
||||||
|
- $(INSTALL) -s -c pppstats $(BINDIR)
|
||||||
|
+ $(INSTALL) -c pppstats $(BINDIR)
|
||||||
|
$(INSTALL) -c -m 444 pppstats.8 $(MANDIR)
|
||||||
|
|
||||||
|
pppstats: $(PPPSTATSRCS)
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
noipdefault
|
||||||
|
hide-password
|
||||||
|
defaultroute
|
||||||
|
persist
|
||||||
|
lock
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#192.168.1.0:
|
||||||
|
netmask 255.255.255.0
|
||||||
|
#debug
|
||||||
|
#kdebug 1
|
||||||
|
lock
|
||||||
|
mtu 1490
|
||||||
|
mru 1490
|
||||||
|
proxyarp
|
||||||
|
auth
|
||||||
|
require-chap
|
||||||
|
passive
|
||||||
|
ipcp-accept-local
|
||||||
|
ipcp-accept-remote
|
||||||
|
lcp-echo-failure 3
|
||||||
|
lcp-echo-interval 5
|
||||||
|
deflate 0
|
||||||
|
#ms-dns 192.168.1.1
|
||||||
|
#ms-wins 192.168.1.1
|
||||||
@@ -0,0 +1,295 @@
|
|||||||
|
--- ppp-2.3.3/sample/auth-down.sample Tue Jan 6 17:53:27 1998
|
||||||
|
+++ ppp-2.3.3/sample/auth-down Tue Jan 6 17:53:27 1998
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+#
|
||||||
|
+# A program or script which is executed after the remote system
|
||||||
|
+# successfully authenticates itself. It is executed with the parameters
|
||||||
|
+# <interface-name> <peer-name> <user-name> <tty-device> <speed>
|
||||||
|
+#
|
||||||
|
+
|
||||||
|
+#
|
||||||
|
+# The environment is cleared before executing this script
|
||||||
|
+# so the path must be reset
|
||||||
|
+#
|
||||||
|
+PATH=/usr/sbin:/sbin:/usr/bin:/bin
|
||||||
|
+export PATH
|
||||||
|
+
|
||||||
|
+echo auth-down `date +'%y/%m/%d %T'` $* >> /var/log/pppstats
|
||||||
|
+
|
||||||
|
+# last line
|
||||||
|
--- ppp-2.3.3/sample/auth-up.sample Tue Jan 6 17:53:27 1998
|
||||||
|
+++ ppp-2.3.3/sample/auth-up Tue Jan 6 17:53:27 1998
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+#
|
||||||
|
+# A program or script which is executed after the remote system
|
||||||
|
+# successfully authenticates itself. It is executed with the parameters
|
||||||
|
+# <interface-name> <peer-name> <user-name> <tty-device> <speed>
|
||||||
|
+#
|
||||||
|
+
|
||||||
|
+#
|
||||||
|
+# The environment is cleared before executing this script
|
||||||
|
+# so the path must be reset
|
||||||
|
+#
|
||||||
|
+PATH=/usr/sbin:/sbin:/usr/bin:/bin
|
||||||
|
+export PATH
|
||||||
|
+
|
||||||
|
+echo auth-up `date +'%y/%m/%d %T'` $* >> /var/log/pppstats
|
||||||
|
+
|
||||||
|
+# last line
|
||||||
|
--- ppp-2.3.3/sample/ip-down.sample Tue Jan 6 17:53:27 1998
|
||||||
|
+++ ppp-2.3.3/sample/ip-down Tue Jan 6 17:53:27 1998
|
||||||
|
@@ -0,0 +1,22 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+#
|
||||||
|
+# This script is run by the pppd _after_ the link is brought down.
|
||||||
|
+# It should be used to delete routes, unset IP addresses etc.
|
||||||
|
+#
|
||||||
|
+# This script is called with the following arguments:
|
||||||
|
+# Arg Name Example
|
||||||
|
+# $1 Interface name ppp0
|
||||||
|
+# $2 The tty ttyS1
|
||||||
|
+# $3 The link speed 38400
|
||||||
|
+# $4 Local IP number 12.34.56.78
|
||||||
|
+# $5 Peer IP number 12.34.56.99
|
||||||
|
+#
|
||||||
|
+
|
||||||
|
+#
|
||||||
|
+# The environment is cleared before executing this script
|
||||||
|
+# so the path must be reset
|
||||||
|
+#
|
||||||
|
+PATH=/usr/sbin:/sbin:/usr/bin:/bin
|
||||||
|
+export PATH
|
||||||
|
+
|
||||||
|
+# last line
|
||||||
|
--- ppp-2.3.3/sample/ip-up.sample Tue Jan 6 17:53:27 1998
|
||||||
|
+++ ppp-2.3.3/sample/ip-up Tue Jan 6 17:53:27 1998
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+#
|
||||||
|
+# This script is run by the pppd after the link is established.
|
||||||
|
+# It should be used to add routes, set IP address, run the mailq
|
||||||
|
+# etc.
|
||||||
|
+#
|
||||||
|
+# This script is called with the following arguments:
|
||||||
|
+# Arg Name Example
|
||||||
|
+# $1 Interface name ppp0
|
||||||
|
+# $2 The tty ttyS1
|
||||||
|
+# $3 The link speed 38400
|
||||||
|
+# $4 Local IP number 12.34.56.78
|
||||||
|
+# $5 Peer IP number 12.34.56.99
|
||||||
|
+#
|
||||||
|
+
|
||||||
|
+#
|
||||||
|
+# The environment is cleared before executing this script
|
||||||
|
+# so the path must be reset
|
||||||
|
+#
|
||||||
|
+PATH=/usr/sbin:/sbin:/usr/bin:/bin
|
||||||
|
+export PATH
|
||||||
|
+
|
||||||
|
+# last line
|
||||||
|
--- ppp-2.3.3/sample/options.sample Tue Jan 6 17:53:27 1998
|
||||||
|
+++ ppp-2.3.3/sample/options Tue Jan 6 17:53:27 1998
|
||||||
|
@@ -0,0 +1,153 @@
|
||||||
|
+# /etc/ppp/options
|
||||||
|
+
|
||||||
|
+# The name of this server. Often, the FQDN is used here.
|
||||||
|
+#name <host>
|
||||||
|
+
|
||||||
|
+# Enforce the use of the hostname as the name of the local system for
|
||||||
|
+# authentication purposes (overrides the name option).
|
||||||
|
+usehostname
|
||||||
|
+
|
||||||
|
+# If no local IP address is given, pppd will use the first IP address
|
||||||
|
+# that belongs to the local hostname. If "noipdefault" is given, this
|
||||||
|
+# is disabled and the peer will have to supply an IP address.
|
||||||
|
+noipdefault
|
||||||
|
+
|
||||||
|
+# With this option, pppd will accept the peer's idea of our local IP
|
||||||
|
+# address, even if the local IP address was specified in an option.
|
||||||
|
+#ipcp-accept-local
|
||||||
|
+
|
||||||
|
+# With this option, pppd will accept the peer's idea of its (remote) IP
|
||||||
|
+# address, even if the remote IP address was specified in an option.
|
||||||
|
+#ipcp-accept-remote
|
||||||
|
+
|
||||||
|
+# Specify which DNS Servers the incoming Win95 or WinNT Connection should use
|
||||||
|
+# Two Servers can be remotely configured
|
||||||
|
+#ms-dns 192.168.1.1
|
||||||
|
+#ms-dns 192.168.1.2
|
||||||
|
+
|
||||||
|
+# Specify which WINS Servers the incoming connection Win95 or WinNT should use
|
||||||
|
+#wins-addr 192.168.1.50
|
||||||
|
+#wins-addr 192.168.1.51
|
||||||
|
+
|
||||||
|
+# enable this on a server that already has a permanent default route
|
||||||
|
+#nodefaultroute
|
||||||
|
+
|
||||||
|
+# Run the executable or shell command specified after pppd has terminated
|
||||||
|
+# the link. This script could, for example, issue commands to the modem
|
||||||
|
+# to cause it to hang up if hardware modem control signals were not
|
||||||
|
+# available.
|
||||||
|
+# If mgetty is running, it will reset the modem anyway. So there is no need
|
||||||
|
+# to do it here.
|
||||||
|
+#disconnect "chat -- \d+++\d\c OK ath0 OK"
|
||||||
|
+
|
||||||
|
+# Increase debugging level (same as -d). The debug output is written
|
||||||
|
+# to syslog LOG_LOCAL2.
|
||||||
|
+debug
|
||||||
|
+
|
||||||
|
+# Enable debugging code in the kernel-level PPP driver. The argument n
|
||||||
|
+# is a number which is the sum of the following values: 1 to enable
|
||||||
|
+# general debug messages, 2 to request that the contents of received
|
||||||
|
+# packets be printed, and 4 to request that the contents of transmitted
|
||||||
|
+# packets be printed.
|
||||||
|
+#kdebug n
|
||||||
|
+
|
||||||
|
+# Require the peer to authenticate itself before allowing network
|
||||||
|
+# packets to be sent or received.
|
||||||
|
+# Please do not disable this setting. It is expected to be standard in
|
||||||
|
+# future releases of pppd. Use the call option (see manpage) to disable
|
||||||
|
+# authentication for specific peers.
|
||||||
|
+#auth
|
||||||
|
+
|
||||||
|
+# authentication can either be pap or chap. As most people only want to
|
||||||
|
+# use pap, you can also disable chap:
|
||||||
|
+#require-pap
|
||||||
|
+#refuse-chap
|
||||||
|
+
|
||||||
|
+# Use hardware flow control (i.e. RTS/CTS) to control the flow of data
|
||||||
|
+# on the serial port.
|
||||||
|
+crtscts
|
||||||
|
+
|
||||||
|
+# Specifies that pppd should use a UUCP-style lock on the serial device
|
||||||
|
+# to ensure exclusive access to the device.
|
||||||
|
+lock
|
||||||
|
+
|
||||||
|
+# Use the modem control lines.
|
||||||
|
+modem
|
||||||
|
+
|
||||||
|
+# async character map -- 32-bit hex; each bit is a character
|
||||||
|
+# that needs to be escaped for pppd to receive it. 0x00000001
|
||||||
|
+# represents '\x01', and 0x80000000 represents '\x1f'.
|
||||||
|
+# To allow pppd to work over a rlogin/telnet connection, ou should escape
|
||||||
|
+# XON (^Q), XOFF (^S) and ^]: (The peer should use "escape ff".)
|
||||||
|
+#asyncmap 200a0000
|
||||||
|
+asyncmap 0
|
||||||
|
+
|
||||||
|
+# Specifies that certain characters should be escaped on transmission
|
||||||
|
+# (regardless of whether the peer requests them to be escaped with its
|
||||||
|
+# async control character map). The characters to be escaped are
|
||||||
|
+# specified as a list of hex numbers separated by commas. Note that
|
||||||
|
+# almost any character can be specified for the escape option, unlike
|
||||||
|
+# the asyncmap option which only allows control characters to be
|
||||||
|
+# specified. The characters which may not be escaped are those with hex
|
||||||
|
+# values 0x20 - 0x3f or 0x5e.
|
||||||
|
+#escape 11,13,ff
|
||||||
|
+
|
||||||
|
+# Set the MRU [Maximum Receive Unit] value to <n> for negotiation. pppd
|
||||||
|
+# will ask the peer to send packets of no more than <n> bytes. The
|
||||||
|
+# minimum MRU value is 128. The default MRU value is 1500. A value of
|
||||||
|
+# 296 is recommended for slow links (40 bytes for TCP/IP header + 256
|
||||||
|
+# bytes of data).
|
||||||
|
+#mru 542
|
||||||
|
+
|
||||||
|
+# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer
|
||||||
|
+# requests a smaller value via MRU negotiation, pppd will request that
|
||||||
|
+# the kernel networking code send data packets of no more than n bytes
|
||||||
|
+# through the PPP network interface.
|
||||||
|
+#mtu <n>
|
||||||
|
+
|
||||||
|
+# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot"
|
||||||
|
+# notation (e.g. 255.255.255.0).
|
||||||
|
+#netmask 255.255.255.0
|
||||||
|
+
|
||||||
|
+# Don't fork to become a background process (otherwise pppd will do so
|
||||||
|
+# if a serial device is specified).
|
||||||
|
+nodetach
|
||||||
|
+
|
||||||
|
+# Set the assumed name of the remote system for authentication purposes
|
||||||
|
+# to <n>.
|
||||||
|
+#remotename <n>
|
||||||
|
+
|
||||||
|
+# Add an entry to this system's ARP [Address Resolution Protocol]
|
||||||
|
+# table with the IP address of the peer and the Ethernet address of this
|
||||||
|
+# system. {proxyarp,noproxyarp}
|
||||||
|
+proxyarp
|
||||||
|
+
|
||||||
|
+# Use the system password database for authenticating the peer using
|
||||||
|
+# PAP. Note: mgetty already provides this option. If this is specified
|
||||||
|
+# then dialin from users using a script under Linux to fire up ppp wont work.
|
||||||
|
+#login
|
||||||
|
+
|
||||||
|
+# If this option is given, pppd will send an LCP echo-request frame to
|
||||||
|
+# the peer every n seconds. Under Linux, the echo-request is sent when
|
||||||
|
+# no packets have been received from the peer for n seconds. Normally
|
||||||
|
+# the peer should respond to the echo-request by sending an echo-reply.
|
||||||
|
+# This option can be used with the lcp-echo-failure option to detect
|
||||||
|
+# that the peer is no longer connected.
|
||||||
|
+lcp-echo-interval 30
|
||||||
|
+
|
||||||
|
+# If this option is given, pppd will presume the peer to be dead if n
|
||||||
|
+# LCP echo-requests are sent without receiving a valid LCP echo-reply.
|
||||||
|
+# If this happens, pppd will terminate the connection. Use of this
|
||||||
|
+# option requires a non-zero value for the lcp-echo-interval parameter.
|
||||||
|
+# This option can be used to enable pppd to terminate after the physical
|
||||||
|
+# connection has been broken (e.g., the modem has hung up) in
|
||||||
|
+# situations where no hardware modem control lines are available.
|
||||||
|
+lcp-echo-failure 4
|
||||||
|
+
|
||||||
|
+# Specifies that pppd should disconnect if the link is idle for n seconds.
|
||||||
|
+idle 600
|
||||||
|
+
|
||||||
|
+# Disable the IPXCP and IPX protocols.
|
||||||
|
+noipx
|
||||||
|
+
|
||||||
|
+# ---<End of File>---
|
||||||
|
--- ppp-2.3.3/sample/options.ttyXX.sample Tue Jan 6 17:53:27 1998
|
||||||
|
+++ ppp-2.3.3/sample/options.ttyXX Tue Jan 6 17:53:27 1998
|
||||||
|
@@ -0,0 +1,14 @@
|
||||||
|
+# If you need to set up multiple serial lines then copy this file to
|
||||||
|
+# options.<ttyname> for each tty with a modem on it.
|
||||||
|
+#
|
||||||
|
+# The options.tty file will assign an IP address to each PPP connection
|
||||||
|
+# as it comes up. They must all be distinct!
|
||||||
|
+#
|
||||||
|
+# Example:
|
||||||
|
+# options.ttyS1 for com2 under DOS.
|
||||||
|
+#
|
||||||
|
+# Edit the following line so that the first IP address
|
||||||
|
+# mentioned is the ip address of the serial port while the second
|
||||||
|
+# is the IP address of your host
|
||||||
|
+#
|
||||||
|
+hostname-s1:hostname
|
||||||
|
--- ppp-2.3.3/sample/pap-secrets.sample Tue Jan 6 17:53:27 1998
|
||||||
|
+++ ppp-2.3.3/sample/pap-secrets Tue Jan 6 17:53:27 1998
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+# Secrets for authentication using PAP
|
||||||
|
+# client server secret IP addresses
|
||||||
|
+
|
||||||
|
+# OUTBOUND CONNECTIONS
|
||||||
|
+# Here you should add your userid password to connect to your providers via
|
||||||
|
+# pap. The * means that the password is to be used for ANY host you connect
|
||||||
|
+# to. Thus you do not have to worry about the foreign machine name. Just
|
||||||
|
+# replace password with your password.
|
||||||
|
+# If you have different providers with different passwords then you better
|
||||||
|
+# remove the following line.
|
||||||
|
+#hostname * password
|
||||||
|
+
|
||||||
|
+# INBOUND CONNECTIONS
|
||||||
|
+#client hostname <password> 192.168.1.1
|
||||||
|
+
|
||||||
|
+# If you add "auth login -chap +pap" to /etc/mgetty+sendfax/login.config,
|
||||||
|
+# all users in /etc/passwd can use their password for pap-authentication.
|
||||||
|
+#
|
||||||
|
+# Every regular user can use PPP and has to use passwords from /etc/passwd
|
||||||
|
+#* hostname ""
|
||||||
|
+# UserIDs that cannot use PPP at all. Check your /etc/passwd and add any
|
||||||
|
+# other accounts that should not be able to use pppd! Replace hostname
|
||||||
|
+# with your local hostname.
|
||||||
|
+#guest hostname "*" -
|
||||||
|
+#master hostname "*" -
|
||||||
|
+#root hostname "*" -
|
||||||
|
+#support hostname "*" -
|
||||||
|
+#stats hostname "*" -
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
diff -urNp --exclude-from=/mdomsch2/excludes --minimal ppp-2.4.3.orig/pppd/pppd.8 ppp-2.4.3/pppd/pppd.8
|
||||||
|
--- ppp-2.4.3.orig/pppd/pppd.8 2004-11-13 06:22:49.000000000 -0600
|
||||||
|
+++ ppp-2.4.3/pppd/pppd.8 2005-08-03 22:10:34.000000000 -0500
|
||||||
|
@@ -1035,7 +1035,7 @@ Ask the peer for up to 2 DNS server addr
|
||||||
|
by the peer (if any) are passed to the /etc/ppp/ip\-up script in the
|
||||||
|
environment variables DNS1 and DNS2, and the environment variable
|
||||||
|
USEPEERDNS will be set to 1. In addition, pppd will create an
|
||||||
|
-/etc/ppp/resolv.conf file containing one or two nameserver lines with
|
||||||
|
+/run/ppp/resolv.conf file containing one or two nameserver lines with
|
||||||
|
the address(es) supplied by the peer.
|
||||||
|
.TP
|
||||||
|
.B user \fIname
|
||||||
|
--- ppp-2.4.2/scripts/ip-down.local.add.change_resolv_conf 1999-02-27 05:32:42.000000000 +0100
|
||||||
|
+++ ppp-2.4.2/scripts/ip-down.local.add 2004-09-14 14:36:20.058008752 +0200
|
||||||
|
@@ -9,12 +9,13 @@
|
||||||
|
#
|
||||||
|
# Nick Walker (nickwalker@email.com)
|
||||||
|
#
|
||||||
|
+. /etc/sysconfig/network-scripts/network-functions
|
||||||
|
|
||||||
|
-if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then
|
||||||
|
- if [ -f /etc/ppp/resolv.prev ]; then
|
||||||
|
- cp -f /etc/ppp/resolv.prev /etc/resolv.conf
|
||||||
|
+if [ -n "$USEPEERDNS" -a -f /run/ppp/resolv.conf ]; then
|
||||||
|
+ if [ -f /run/ppp/resolv.prev ]; then
|
||||||
|
+ change_resolv_conf /run/ppp/resolv.prev
|
||||||
|
else
|
||||||
|
- rm -f /etc/resolv.conf
|
||||||
|
+ change_resolv_conf
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
--- ppp-2.4.2/scripts/ip-up.local.add.change_resolv_conf 1999-11-15 04:28:10.000000000 +0100
|
||||||
|
+++ ppp-2.4.2/scripts/ip-up.local.add 2004-09-14 14:37:39.129061828 +0200
|
||||||
|
@@ -9,16 +9,19 @@
|
||||||
|
#
|
||||||
|
# Nick Walker (nickwalker@email.com)
|
||||||
|
#
|
||||||
|
+. /etc/sysconfig/network-scripts/network-functions
|
||||||
|
|
||||||
|
-if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then
|
||||||
|
- rm -f /etc/ppp/resolv.prev
|
||||||
|
+if [ -n "$USEPEERDNS" -a -f /run/ppp/resolv.conf ]; then
|
||||||
|
+ rm -f /run/ppp/resolv.prev
|
||||||
|
if [ -f /etc/resolv.conf ]; then
|
||||||
|
- cp /etc/resolv.conf /etc/ppp/resolv.prev
|
||||||
|
- grep domain /etc/ppp/resolv.prev > /etc/resolv.conf
|
||||||
|
- grep search /etc/ppp/resolv.prev >> /etc/resolv.conf
|
||||||
|
- cat /etc/ppp/resolv.conf >> /etc/resolv.conf
|
||||||
|
+ cp /etc/resolv.conf /run/ppp/resolv.prev
|
||||||
|
+ rscf=/run/ppp/resolv.new
|
||||||
|
+ grep domain /run/ppp/resolv.prev > $rscf
|
||||||
|
+ grep search /run/ppp/resolv.prev >> $rscf
|
||||||
|
+ change_resolv_conf $rscf
|
||||||
|
+ rm -f $rscf
|
||||||
|
else
|
||||||
|
- cp /etc/ppp/resolv.conf /etc
|
||||||
|
+ change_resolv_conf /run/ppp/resolv.conf
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
--- ppp-2.4.3/pppd/sha1.c.fix64 2004-10-25 01:28:02.000000000 +0200
|
||||||
|
+++ ppp-2.4.3/pppd/sha1.c 2004-11-22 16:44:16.850768926 +0100
|
||||||
|
@@ -18,6 +18,7 @@
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <netinet/in.h> /* htonl() */
|
||||||
|
+#include <sys/types.h> /* u_int32_t */
|
||||||
|
#include <net/ppp_defs.h>
|
||||||
|
#include "sha1.h"
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
--- ppp-2.4.3/pppd/ipv6cp.c~ 2005-11-04 09:40:10.000000000 +0000
|
||||||
|
+++ ppp-2.4.3/pppd/ipv6cp.c 2005-11-04 10:20:14.000000000 +0000
|
||||||
|
@@ -235,6 +235,8 @@ static option_t ipv6cp_option_list[] = {
|
||||||
|
|
||||||
|
{ "ipv6cp-accept-local", o_bool, &ipv6cp_allowoptions[0].accept_local,
|
||||||
|
"Accept peer's interface identifier for us", 1 },
|
||||||
|
+ { "ipv6cp-accept-remote", o_bool, &ipv6cp_allowoptions[0].accept_remote,
|
||||||
|
+ "Accept peer's interface identifier for itself", 1 },
|
||||||
|
|
||||||
|
{ "ipv6cp-use-ipaddr", o_bool, &ipv6cp_allowoptions[0].use_ip,
|
||||||
|
"Use (default) IPv4 address as interface identifier", 1 },
|
||||||
|
@@ -427,6 +429,7 @@ ipv6cp_init(unit)
|
||||||
|
memset(ao, 0, sizeof(*ao));
|
||||||
|
|
||||||
|
wo->accept_local = 1;
|
||||||
|
+ wo->accept_remote = 1;
|
||||||
|
wo->neg_ifaceid = 1;
|
||||||
|
ao->neg_ifaceid = 1;
|
||||||
|
|
||||||
|
@@ -952,7 +955,7 @@ ipv6cp_reqci(f, inp, len, reject_if_disa
|
||||||
|
orc = CONFREJ; /* Reject CI */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
- if (!eui64_iszero(wo->hisid) &&
|
||||||
|
+ if (!eui64_iszero(wo->hisid) && !wo->accept_remote &&
|
||||||
|
!eui64_equals(ifaceid, wo->hisid) &&
|
||||||
|
eui64_iszero(go->hisid)) {
|
||||||
|
|
||||||
|
--- ppp-2.4.3/pppd/ipv6cp.h~ 2002-12-04 23:03:32.000000000 +0000
|
||||||
|
+++ ppp-2.4.3/pppd/ipv6cp.h 2005-11-04 10:20:55.000000000 +0000
|
||||||
|
@@ -150,7 +150,8 @@
|
||||||
|
typedef struct ipv6cp_options {
|
||||||
|
int neg_ifaceid; /* Negotiate interface identifier? */
|
||||||
|
int req_ifaceid; /* Ask peer to send interface identifier? */
|
||||||
|
- int accept_local; /* accept peer's value for iface id? */
|
||||||
|
+ int accept_local; /* accept peer's value for our iface id? */
|
||||||
|
+ int accept_remote; /* accept peer's value for his iface id? */
|
||||||
|
int opt_local; /* ourtoken set by option */
|
||||||
|
int opt_remote; /* histoken set by option */
|
||||||
|
int use_ip; /* use IP as interface identifier */
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
diff -up ppp-2.4.4/configure.local ppp-2.4.4/configure
|
||||||
|
--- ppp-2.4.4/configure.local 2005-07-08 20:23:05.000000000 -0400
|
||||||
|
+++ ppp-2.4.4/configure 2008-08-28 17:38:04.000000000 -0400
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
# $Id: configure,v 1.38 2008/06/15 07:08:49 paulus Exp $
|
||||||
|
|
||||||
|
# Where to install stuff by default
|
||||||
|
-DESTDIR=/usr/local
|
||||||
|
+DESTDIR=/usr
|
||||||
|
SYSCONF=/etc
|
||||||
|
|
||||||
|
# if [ -d /NextApps ]; then
|
||||||
|
diff -up ppp-2.4.4/pppd/Makefile.linux.local ppp-2.4.4/pppd/Makefile.linux
|
||||||
|
--- ppp-2.4.4/pppd/Makefile.linux.local 2008-08-28 17:37:33.000000000 -0400
|
||||||
|
+++ ppp-2.4.4/pppd/Makefile.linux 2008-08-28 17:37:33.000000000 -0400
|
||||||
|
@@ -97,8 +97,8 @@ endif
|
||||||
|
|
||||||
|
# EAP SRP-SHA1
|
||||||
|
ifdef USE_SRP
|
||||||
|
-CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
|
||||||
|
-LIBS += -lsrp -L/usr/local/ssl/lib -lcrypto
|
||||||
|
+CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/include/openssl
|
||||||
|
+LIBS += -lsrp -L/usr/lib -lcrypto
|
||||||
|
TARGETS += srp-entry
|
||||||
|
EXTRAINSTALL = $(INSTALL) -c -m 555 srp-entry $(BINDIR)/srp-entry
|
||||||
|
MANPAGES += srp-entry.8
|
||||||
|
diff -up ppp-2.4.4/scripts/ppp-on-rsh.local ppp-2.4.4/scripts/ppp-on-rsh
|
||||||
|
--- ppp-2.4.4/scripts/ppp-on-rsh.local 2000-04-15 05:49:28.000000000 -0400
|
||||||
|
+++ ppp-2.4.4/scripts/ppp-on-rsh 2008-08-28 17:37:33.000000000 -0400
|
||||||
|
@@ -26,7 +26,7 @@ PPPD_RHOST=myremotehost
|
||||||
|
# For this example, we assume that pppd on both local and remote
|
||||||
|
# machines reside in the same place, /usr/local/bin/pppd
|
||||||
|
#
|
||||||
|
-PPPD_LOC=/usr/local/bin/pppd
|
||||||
|
+PPPD_LOC=/usr/sbin/pppd
|
||||||
|
|
||||||
|
#
|
||||||
|
# The location of local options file (where rsh client is running).
|
||||||
|
diff -up ppp-2.4.4/scripts/ppp-on-ssh.local ppp-2.4.4/scripts/ppp-on-ssh
|
||||||
|
--- ppp-2.4.4/scripts/ppp-on-ssh.local 2000-04-15 05:49:42.000000000 -0400
|
||||||
|
+++ ppp-2.4.4/scripts/ppp-on-ssh 2008-08-28 17:37:33.000000000 -0400
|
||||||
|
@@ -26,7 +26,7 @@ PPPD_RHOST=myremotehost
|
||||||
|
# For this example, we assume that pppd on both local and remote
|
||||||
|
# machines reside in the same place, /usr/local/bin/pppd
|
||||||
|
#
|
||||||
|
-PPPD_LOC=/usr/local/bin/pppd
|
||||||
|
+PPPD_LOC=/usr/sbin/pppd
|
||||||
|
|
||||||
|
#
|
||||||
|
# The location of local options file (where ssh client is running).
|
||||||
|
@@ -52,7 +52,7 @@ PPPD_REM_OPT=/etc/ppp/options-ssh-rem
|
||||||
|
#
|
||||||
|
# The location of ssh client on the local machine
|
||||||
|
#
|
||||||
|
-SSH_LOC=/usr/local/bin/ssh
|
||||||
|
+SSH_LOC=/usr/bin/ssh
|
||||||
|
|
||||||
|
export PPPD_LOC PPPD_LOC_OPT PPPD_REM_OPT PPPD_RHOST SSH_LOC
|
||||||
|
|
||||||
|
diff -up ppp-2.4.4/scripts/secure-card.local ppp-2.4.4/scripts/secure-card
|
||||||
|
--- ppp-2.4.4/scripts/secure-card.local 2004-02-01 22:36:46.000000000 -0500
|
||||||
|
+++ ppp-2.4.4/scripts/secure-card 2008-08-28 17:37:33.000000000 -0400
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/local/bin/expect -f
|
||||||
|
+#!/usr/bin/expect -f
|
||||||
|
#
|
||||||
|
# This script was written by Jim Isaacson <jcisaac@crl.com>. It is
|
||||||
|
# designed to work as a script to use the SecureCARD(tm) device. This
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
diff -up ppp-2.4.5/scripts/ip-up.local.add.ppp_resolv ppp-2.4.5/scripts/ip-up.local.add
|
||||||
|
--- ppp-2.4.5/scripts/ip-up.local.add.ppp_resolv 2010-07-13 10:29:23.227943994 +0200
|
||||||
|
+++ ppp-2.4.5/scripts/ip-up.local.add 2010-07-13 10:32:27.729695487 +0200
|
||||||
|
@@ -18,6 +18,9 @@ if [ -n "$USEPEERDNS" -a -f /run/ppp
|
||||||
|
rscf=/run/ppp/resolv.new
|
||||||
|
grep domain /run/ppp/resolv.prev > $rscf
|
||||||
|
grep search /run/ppp/resolv.prev >> $rscf
|
||||||
|
+ if [ -f /run/ppp/resolv.conf ]; then
|
||||||
|
+ cat /run/ppp/resolv.conf >> $rscf
|
||||||
|
+ fi
|
||||||
|
change_resolv_conf $rscf
|
||||||
|
rm -f $rscf
|
||||||
|
else
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
diff -up ppp-2.4.5/pppd/pathnames.h.var_run_ppp ppp-2.4.5/pppd/pathnames.h
|
||||||
|
--- ppp-2.4.5/pppd/pathnames.h.var_run_ppp 2010-02-12 16:36:14.479362718 +0100
|
||||||
|
+++ ppp-2.4.5/pppd/pathnames.h 2010-02-12 16:38:24.995330994 +0100
|
||||||
|
@@ -7,9 +7,13 @@
|
||||||
|
#ifdef HAVE_PATHS_H
|
||||||
|
#include <paths.h>
|
||||||
|
|
||||||
|
+#define _SUBPATH_PPP "ppp/"
|
||||||
|
#else /* HAVE_PATHS_H */
|
||||||
|
#ifndef _PATH_VARRUN
|
||||||
|
#define _PATH_VARRUN "/etc/ppp/"
|
||||||
|
+#define _SUBPATH_PPP
|
||||||
|
+#else
|
||||||
|
+#define _SUBPATH_PPP "ppp/"
|
||||||
|
#endif
|
||||||
|
#define _PATH_DEVNULL "/dev/null"
|
||||||
|
#endif /* HAVE_PATHS_H */
|
||||||
|
@@ -46,10 +50,10 @@
|
||||||
|
#endif /* IPX_CHANGE */
|
||||||
|
|
||||||
|
#ifdef __STDC__
|
||||||
|
-#define _PATH_PPPDB _ROOT_PATH _PATH_VARRUN "pppd2.tdb"
|
||||||
|
+#define _PATH_PPPDB _ROOT_PATH _PATH_VARRUN _SUBPATH_PPP "pppd2.tdb"
|
||||||
|
#else /* __STDC__ */
|
||||||
|
#ifdef HAVE_PATHS_H
|
||||||
|
-#define _PATH_PPPDB "/var/run/pppd2.tdb"
|
||||||
|
+#define _PATH_PPPDB "/run/ppp/pppd2.tdb"
|
||||||
|
#else
|
||||||
|
#define _PATH_PPPDB "/etc/ppp/pppd2.tdb"
|
||||||
|
#endif
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
|||||||
|
# Logrotate file for ppp RPM
|
||||||
|
|
||||||
|
/var/log/ppp/connect-errors {
|
||||||
|
missingok
|
||||||
|
compress
|
||||||
|
notifempty
|
||||||
|
daily
|
||||||
|
rotate 5
|
||||||
|
create 0600 root root
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#%PAM-1.0
|
||||||
|
auth include system-auth
|
||||||
|
account required pam_nologin.so
|
||||||
|
account include system-auth
|
||||||
|
session include system-auth
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
d /run/ppp 0755 root root
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>ppp</Name>
|
||||||
|
<Homepage>http://samba.org/ppp</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>BSD</License>
|
||||||
|
<License>GPLv2</License>
|
||||||
|
<IsA>service</IsA>
|
||||||
|
<Summary>Point-to-point protocol - patched for PPPOE</Summary>
|
||||||
|
<Description>The Point-to-Point Protocol (PPP) provides a standard way to transmit datagrams over a serial link.</Description>
|
||||||
|
<Archive sha1sum="0fd188b28cb8fdc81d2eaa15b78d3ad9c93344f4" type="targz">http://samba.org/ftp/ppp/ppp-2.4.6.tar.gz</Archive>
|
||||||
|
<Archive sha1sum="1a0b02788d522f2137d0b66c749ffe6c96cceb94" type="targz">http://www.netservers.net.uk/gpl/ppp-dhcpc.tgz</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>libpcap-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
<Patches>
|
||||||
|
<Patch level="1">gentoo/02_all_make-vars.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/04_all_mpls.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/06_all_killaddr-smarter.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/08_all_wait-children.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/10_all_defaultgateway.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/12_all_linkpidfile.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/16_all_auth-fail.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/18_all_defaultmetric.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/20_all_dev-ppp.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/24_all_passwordfd-read-early.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/26_all_pppd-usepeerwins.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/28_all_connect-errors.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/30_all_Makefile.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/32_all_pado-timeout.patch</Patch>
|
||||||
|
<Patch level="1">gentoo/34_all_lcp-echo-adaptive.patch</Patch>
|
||||||
|
<Patch level="1">ppp-2.3.6-sample.patch</Patch>
|
||||||
|
<Patch level="1">ppp-2.4.3-fix64.patch</Patch>
|
||||||
|
<Patch level="1">ppp-2.4.2-change_resolv_conf.patch</Patch>
|
||||||
|
<Patch level="1">nostrip.patch</Patch>
|
||||||
|
<Patch level="1">ppp-2.4.3-local.patch</Patch>
|
||||||
|
<Patch level="1">ppp-2.4.3-ipv6-accept-remote.patch</Patch>
|
||||||
|
<Patch level="1">ppp-2.4.5-ppp_resolv.patch</Patch>
|
||||||
|
<Patch level="1">ppp-2.4.5-var_run_ppp.patch</Patch>
|
||||||
|
<Patch level="1">ppp-2.4.6-eaptls-mppe-0.99.patch</Patch>
|
||||||
|
</Patches>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>ppp</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>libpcap</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="config">/etc</Path>
|
||||||
|
<Path fileType="config">/usr/lib/tmpfiles.d/ppp.conf</Path>
|
||||||
|
<Path fileType="library">/usr/lib</Path>
|
||||||
|
<Path fileType="executable">/usr/sbin</Path>
|
||||||
|
<Path fileType="doc">/usr/share/doc</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
<Path fileType="data">/run/ppp</Path>
|
||||||
|
</Files>
|
||||||
|
<AdditionalFiles>
|
||||||
|
<AdditionalFile owner="root" permission="0644" target="/usr/lib/tmpfiles.d/ppp.conf">tmpfiles.conf</AdditionalFile>
|
||||||
|
<AdditionalFile target="/etc/ppp/options-pptp" permission="0644" owner="root">options-pptp</AdditionalFile>
|
||||||
|
<AdditionalFile target="/etc/ppp/options-pppoe" permission="0644" owner="root">options-pppoe</AdditionalFile>
|
||||||
|
<AdditionalFile target="/etc/ppp/chat-default" permission="0644" owner="root">chat-default</AdditionalFile>
|
||||||
|
<AdditionalFile target="/etc/ppp/ip-up" permission="0755" owner="root">ip-up</AdditionalFile>
|
||||||
|
<AdditionalFile target="/etc/ppp/ip-down" permission="0755" owner="root">ip-down</AdditionalFile>
|
||||||
|
<AdditionalFile target="/etc/conf.d/net.ppp0" permission="0600" owner="root">confd.ppp0</AdditionalFile>
|
||||||
|
<AdditionalFile target="/etc/pam.d/ppp" permission="0644" owner="root">ppp.pamd</AdditionalFile>
|
||||||
|
<AdditionalFile target="/etc/logrotate.d/ppp" permission="0644" owner="root">ppp.logrotate</AdditionalFile>
|
||||||
|
</AdditionalFiles>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>ppp-devel</Name>
|
||||||
|
<Summary>Development files for ppp</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency release="current">ppp</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="header">/usr/include</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="5">
|
||||||
|
<Date>2014-04-03</Date>
|
||||||
|
<Version>2.4.6</Version>
|
||||||
|
<Comment>Version bump.</Comment>
|
||||||
|
<Name>Marcin Bojara</Name>
|
||||||
|
<Email>marcin@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="4">
|
||||||
|
<Date>2014-01-10</Date>
|
||||||
|
<Version>2.4.5</Version>
|
||||||
|
<Comment>Add tmpfiles.conf</Comment>
|
||||||
|
<Name>Marcin Bojara</Name>
|
||||||
|
<Email>marcin@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2013-09-12</Date>
|
||||||
|
<Version>2.4.5</Version>
|
||||||
|
<Comment>service.py no longer needed.</Comment>
|
||||||
|
<Name>Marcin Bojara</Name>
|
||||||
|
<Email>marcin@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2013-05-23</Date>
|
||||||
|
<Version>2.4.5</Version>
|
||||||
|
<Comment>Add service.py</Comment>
|
||||||
|
<Name>Marcin Bojara</Name>
|
||||||
|
<Email>marcin@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2010-10-13</Date>
|
||||||
|
<Version>2.4.5</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>Gökcen Eraslan</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>ppp</Name>
|
||||||
|
<Summary xml:lang="tr">Modem ile internet erişimi için PPP (point to point protocol) noktadan noktaya erişim protokolü</Summary>
|
||||||
|
<Description xml:lang="tr">PPP protokolü veriyi seri bir bağlantı üzerinden transfer etmek için standart bir yol sağlar.</Description>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>ppp-devel</Name>
|
||||||
|
<Summary xml:lang="tr">ppp için geliştirme dosyaları</Summary>
|
||||||
|
</Package>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import shelltools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
|
||||||
|
def build():
|
||||||
|
shelltools.cd("wpa_supplicant")
|
||||||
|
|
||||||
|
#Enable syslog output
|
||||||
|
cflags = get.CFLAGS() + " -DCONFIG_DEBUG_SYSLOG"
|
||||||
|
shelltools.export("CFLAGS", cflags)
|
||||||
|
|
||||||
|
autotools.make("V=1")
|
||||||
|
autotools.make("eapol_test")
|
||||||
|
|
||||||
|
def install():
|
||||||
|
shelltools.cd("wpa_supplicant")
|
||||||
|
|
||||||
|
for bin in ["wpa_supplicant", "wpa_cli", "wpa_passphrase", "eapol_test"]:
|
||||||
|
pisitools.dosbin(bin)
|
||||||
|
|
||||||
|
# Install dbus files
|
||||||
|
pisitools.insinto("/usr/share/dbus-1/system-services", "dbus/*.service")
|
||||||
|
pisitools.insinto("/etc/dbus-1/system.d", "dbus/dbus-wpa_supplicant.conf", "wpa_supplicant.conf")
|
||||||
|
|
||||||
|
pisitools.doman("doc/docbook/*.5")
|
||||||
|
pisitools.doman("doc/docbook/*.8")
|
||||||
|
pisitools.newdoc("wpa_supplicant.conf", "wpa_supplicant.conf.example")
|
||||||
|
|
||||||
|
pisitools.dodoc("ChangeLog", "../COPYING", "eap_testing.txt", "../README", "todo.txt")
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from comar.service import *
|
||||||
|
|
||||||
|
serviceType = "local"
|
||||||
|
serviceDefault = "off" #NM starts wpa_supp automatically. Use at your own risk if you start manually
|
||||||
|
serviceDesc = _({"en": "WPA Daemon",
|
||||||
|
"tr": "WPA Hizmeti"})
|
||||||
|
|
||||||
|
PIDFILE = "/run/wpa_supplicant.pid"
|
||||||
|
|
||||||
|
@synchronized
|
||||||
|
def start():
|
||||||
|
startService(command="/usr/sbin/wpa_supplicant",
|
||||||
|
args="-WuB -P%s %s" % (PIDFILE, config.get("OPTS", "")),
|
||||||
|
pidfile=PIDFILE,
|
||||||
|
donotify=True)
|
||||||
|
|
||||||
|
@synchronized
|
||||||
|
def stop():
|
||||||
|
stopService(pidfile=PIDFILE,
|
||||||
|
donotify=True)
|
||||||
|
|
||||||
|
def status():
|
||||||
|
return isServiceRunning(PIDFILE)
|
||||||
+52
@@ -0,0 +1,52 @@
|
|||||||
|
From dea50507861b79f522c70500fe978072f143af8f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jouni Malinen <jouni.malinen@atheros.com>
|
||||||
|
Date: Fri, 12 Nov 2010 18:31:56 +0200
|
||||||
|
Subject: [PATCH 1/3] AP: Verify that HT40 secondary channel is supported
|
||||||
|
|
||||||
|
Refuse to enable HT40 mode AP unless both the primary and secondary
|
||||||
|
channels are enabled for AP use.
|
||||||
|
(cherry picked from commit 8ea3dd21d2e8b760612af0c7b6a3bb5b89ba7304)
|
||||||
|
---
|
||||||
|
src/ap/hw_features.c | 26 ++++++++++++++++++++++++++
|
||||||
|
1 files changed, 26 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c
|
||||||
|
index 0159c72..7fc5b83 100644
|
||||||
|
--- a/src/ap/hw_features.c
|
||||||
|
+++ b/src/ap/hw_features.c
|
||||||
|
@@ -642,6 +642,32 @@ int hostapd_select_hw_mode(struct hostapd_iface *iface)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ if (ok && iface->conf->secondary_channel) {
|
||||||
|
+ int sec_ok = 0;
|
||||||
|
+ int sec_chan = iface->conf->channel +
|
||||||
|
+ iface->conf->secondary_channel * 4;
|
||||||
|
+ for (j = 0; j < iface->current_mode->num_channels; j++) {
|
||||||
|
+ struct hostapd_channel_data *chan =
|
||||||
|
+ &iface->current_mode->channels[j];
|
||||||
|
+ if (!(chan->flag & HOSTAPD_CHAN_DISABLED) &&
|
||||||
|
+ (chan->chan == sec_chan)) {
|
||||||
|
+ sec_ok = 1;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if (!sec_ok) {
|
||||||
|
+ hostapd_logger(iface->bss[0], NULL,
|
||||||
|
+ HOSTAPD_MODULE_IEEE80211,
|
||||||
|
+ HOSTAPD_LEVEL_WARNING,
|
||||||
|
+ "Configured HT40 secondary channel "
|
||||||
|
+ "(%d) not found from the channel list "
|
||||||
|
+ "of current mode (%d) %s",
|
||||||
|
+ sec_chan, iface->current_mode->mode,
|
||||||
|
+ hostapd_hw_mode_txt(
|
||||||
|
+ iface->current_mode->mode));
|
||||||
|
+ ok = 0;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if (iface->conf->channel == 0) {
|
||||||
|
/* TODO: could request a scan of neighboring BSSes and select
|
||||||
|
* the channel automatically */
|
||||||
|
--
|
||||||
|
1.7.3.4
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
diff -up wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant.c.assoc-timeout wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant.c
|
||||||
|
--- wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant.c.assoc-timeout 2010-09-07 10:43:39.000000000 -0500
|
||||||
|
+++ wpa_supplicant-0.7.3/wpa_supplicant/wpa_supplicant.c 2010-12-07 18:57:45.163457000 -0600
|
||||||
|
@@ -1262,10 +1262,10 @@ void wpa_supplicant_associate(struct wpa
|
||||||
|
|
||||||
|
if (assoc_failed) {
|
||||||
|
/* give IBSS a bit more time */
|
||||||
|
- timeout = ssid->mode == WPAS_MODE_IBSS ? 10 : 5;
|
||||||
|
+ timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 10;
|
||||||
|
} else if (wpa_s->conf->ap_scan == 1) {
|
||||||
|
/* give IBSS a bit more time */
|
||||||
|
- timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 10;
|
||||||
|
+ timeout = ssid->mode == WPAS_MODE_IBSS ? 20 : 20;
|
||||||
|
}
|
||||||
|
wpa_supplicant_req_auth_timeout(wpa_s, timeout, 0);
|
||||||
|
}
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
--- wpa_supplicant-0.6.3/src/utils/wpa_debug.c.flush-debug 2007-07-30 23:15:34.000000000 -0400
|
||||||
|
+++ wpa_supplicant-0.6.3/src/utils/wpa_debug.c 2007-07-30 23:17:06.000000000 -0400
|
||||||
|
@@ -157,6 +157,7 @@ void wpa_debug_print_timestamp(void)
|
||||||
|
if (out_file) {
|
||||||
|
fprintf(out_file, "%ld.%06u: ", (long) tv.sec,
|
||||||
|
(unsigned int) tv.usec);
|
||||||
|
+ fflush(out_file);
|
||||||
|
} else
|
||||||
|
#endif /* CONFIG_DEBUG_FILE */
|
||||||
|
printf("%ld.%06u: ", (long) tv.sec, (unsigned int) tv.usec);
|
||||||
|
@@ -185,6 +186,7 @@ void wpa_printf(int level, char *fmt, ..
|
||||||
|
if (out_file) {
|
||||||
|
vfprintf(out_file, fmt, ap);
|
||||||
|
fprintf(out_file, "\n");
|
||||||
|
+ fflush(out_file);
|
||||||
|
} else {
|
||||||
|
#endif /* CONFIG_DEBUG_FILE */
|
||||||
|
vprintf(fmt, ap);
|
||||||
|
@@ -217,6 +219,7 @@ static void _wpa_hexdump(int level, cons
|
||||||
|
fprintf(out_file, " [REMOVED]");
|
||||||
|
}
|
||||||
|
fprintf(out_file, "\n");
|
||||||
|
+ fflush(out_file);
|
||||||
|
} else {
|
||||||
|
#endif /* CONFIG_DEBUG_FILE */
|
||||||
|
printf("%s - hexdump(len=%lu):", title, (unsigned long) len);
|
||||||
|
@@ -262,12 +265,14 @@ static void _wpa_hexdump_ascii(int level
|
||||||
|
fprintf(out_file,
|
||||||
|
"%s - hexdump_ascii(len=%lu): [REMOVED]\n",
|
||||||
|
title, (unsigned long) len);
|
||||||
|
+ fflush(out_file);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (buf == NULL) {
|
||||||
|
fprintf(out_file,
|
||||||
|
"%s - hexdump_ascii(len=%lu): [NULL]\n",
|
||||||
|
title, (unsigned long) len);
|
||||||
|
+ fflush(out_file);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fprintf(out_file, "%s - hexdump_ascii(len=%lu):\n",
|
||||||
|
@@ -292,6 +297,7 @@ static void _wpa_hexdump_ascii(int level
|
||||||
|
pos += llen;
|
||||||
|
len -= llen;
|
||||||
|
}
|
||||||
|
+ fflush(out_file);
|
||||||
|
} else {
|
||||||
|
#endif /* CONFIG_DEBUG_FILE */
|
||||||
|
if (!show) {
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
diff -up wpa_supplicant-0.7.3/src/crypto/tls_openssl.c.more-openssl-algs wpa_supplicant-0.7.3/src/crypto/tls_openssl.c
|
||||||
|
--- wpa_supplicant-0.7.3/src/crypto/tls_openssl.c.more-openssl-algs 2010-09-07 10:43:39.000000000 -0500
|
||||||
|
+++ wpa_supplicant-0.7.3/src/crypto/tls_openssl.c 2010-12-08 10:01:02.967664004 -0600
|
||||||
|
@@ -710,6 +710,11 @@ void * tls_init(const struct tls_config
|
||||||
|
#endif /* OPENSSL_FIPS */
|
||||||
|
#endif /* CONFIG_FIPS */
|
||||||
|
SSL_load_error_strings();
|
||||||
|
+ /* Only add potentially weak hashes and encryption algorithms
|
||||||
|
+ * when FIPS mode is not enabled.
|
||||||
|
+ */
|
||||||
|
+ if (!conf || !conf->fips_mode)
|
||||||
|
+ OpenSSL_add_all_algorithms();
|
||||||
|
SSL_library_init();
|
||||||
|
#ifndef OPENSSL_NO_SHA256
|
||||||
|
EVP_add_digest(EVP_sha256());
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
diff -up wpa_supplicant-0.6.7/wpa_supplicant/events.c.scan-results-msg wpa_supplicant-0.6.7/wpa_supplicant/events.c
|
||||||
|
--- wpa_supplicant-0.6.7/wpa_supplicant/events.c.scan-results-msg 2009-01-30 12:08:34.000000000 -0500
|
||||||
|
+++ wpa_supplicant-0.6.7/wpa_supplicant/events.c 2009-01-30 12:08:37.000000000 -0500
|
||||||
|
@@ -911,7 +911,7 @@ static void wpa_supplicant_event_scan_re
|
||||||
|
}
|
||||||
|
|
||||||
|
wpa_dbg(wpa_s, MSG_DEBUG, "New scan results available");
|
||||||
|
- wpa_msg_ctrl(wpa_s, MSG_INFO, WPA_EVENT_SCAN_RESULTS);
|
||||||
|
+ wpa_msg_ctrl(wpa_s, MSG_DEBUG, WPA_EVENT_SCAN_RESULTS);
|
||||||
|
wpas_notify_scan_results(wpa_s);
|
||||||
|
|
||||||
|
wpas_notify_scan_done(wpa_s, 1);
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
diff -p -up wpa_supplicant-0.6.3/wpa_supplicant/config_ssid.h.WEP232 wpa_supplicant-0.6.3/wpa_supplicant/config_ssid.h
|
||||||
|
--- wpa_supplicant-0.6.3/wpa_supplicant/config_ssid.h.WEP232 2008-02-23 03:45:24.000000000 +0100
|
||||||
|
+++ wpa_supplicant-0.6.3/wpa_supplicant/config_ssid.h 2008-03-31 22:28:29.000000000 +0200
|
||||||
|
@@ -189,7 +189,7 @@ struct wpa_ssid {
|
||||||
|
#endif /* IEEE8021X_EAPOL */
|
||||||
|
|
||||||
|
#define NUM_WEP_KEYS 4
|
||||||
|
-#define MAX_WEP_KEY_LEN 16
|
||||||
|
+#define MAX_WEP_KEY_LEN 32
|
||||||
|
/**
|
||||||
|
* wep_key - WEP keys
|
||||||
|
*/
|
||||||
@@ -0,0 +1,143 @@
|
|||||||
|
Index: src/drivers/driver_wext.c
|
||||||
|
===================================================================
|
||||||
|
--- src/drivers/driver_wext.c.orig
|
||||||
|
+++ src/drivers/driver_wext.c
|
||||||
|
@@ -1901,19 +1901,26 @@ int wpa_driver_wext_associate(void *priv
|
||||||
|
* SIOCSIWENCODE here.
|
||||||
|
*/
|
||||||
|
if (drv->auth_alg_fallback &&
|
||||||
|
- wpa_driver_wext_auth_alg_fallback(drv, params) < 0)
|
||||||
|
+ wpa_driver_wext_auth_alg_fallback(drv, params) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because auth_alg_fallback failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (!params->bssid &&
|
||||||
|
- wpa_driver_wext_set_bssid(drv, NULL) < 0)
|
||||||
|
+ wpa_driver_wext_set_bssid(drv, NULL) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_bssid failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* TODO: should consider getting wpa version and cipher/key_mgmt suites
|
||||||
|
* from configuration, not from here, where only the selected suite is
|
||||||
|
* available */
|
||||||
|
if (wpa_driver_wext_set_gen_ie(drv, params->wpa_ie, params->wpa_ie_len)
|
||||||
|
- < 0)
|
||||||
|
+ < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_gen_ie failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (params->wpa_ie == NULL || params->wpa_ie_len == 0)
|
||||||
|
value = IW_AUTH_WPA_VERSION_DISABLED;
|
||||||
|
else if (params->wpa_ie[0] == WLAN_EID_RSN)
|
||||||
|
@@ -1921,27 +1928,41 @@ int wpa_driver_wext_associate(void *priv
|
||||||
|
else
|
||||||
|
value = IW_AUTH_WPA_VERSION_WPA;
|
||||||
|
if (wpa_driver_wext_set_auth_param(drv,
|
||||||
|
- IW_AUTH_WPA_VERSION, value) < 0)
|
||||||
|
+ IW_AUTH_WPA_VERSION, value) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(WPA_VERSION) failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
value = wpa_driver_wext_cipher2wext(params->pairwise_suite);
|
||||||
|
if (wpa_driver_wext_set_auth_param(drv,
|
||||||
|
- IW_AUTH_CIPHER_PAIRWISE, value) < 0)
|
||||||
|
+ IW_AUTH_CIPHER_PAIRWISE, value) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(CIPHER_PAIRWISE) failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
value = wpa_driver_wext_cipher2wext(params->group_suite);
|
||||||
|
if (wpa_driver_wext_set_auth_param(drv,
|
||||||
|
- IW_AUTH_CIPHER_GROUP, value) < 0)
|
||||||
|
+ IW_AUTH_CIPHER_GROUP, value) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(CIPHER_GROUP) failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
value = wpa_driver_wext_keymgmt2wext(params->key_mgmt_suite);
|
||||||
|
if (wpa_driver_wext_set_auth_param(drv,
|
||||||
|
- IW_AUTH_KEY_MGMT, value) < 0)
|
||||||
|
+ IW_AUTH_KEY_MGMT, value) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(KEY_MGMT) failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
value = params->key_mgmt_suite != KEY_MGMT_NONE ||
|
||||||
|
params->pairwise_suite != CIPHER_NONE ||
|
||||||
|
params->group_suite != CIPHER_NONE ||
|
||||||
|
params->wpa_ie_len;
|
||||||
|
if (wpa_driver_wext_set_auth_param(drv,
|
||||||
|
- IW_AUTH_PRIVACY_INVOKED, value) < 0)
|
||||||
|
+ IW_AUTH_PRIVACY_INVOKED, value) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(PRIVACY_INVOKED) failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* Allow unencrypted EAPOL messages even if pairwise keys are set when
|
||||||
|
* not using WPA. IEEE 802.1X specifies that these frames are not
|
||||||
|
@@ -1952,12 +1973,18 @@ int wpa_driver_wext_associate(void *priv
|
||||||
|
else
|
||||||
|
allow_unencrypted_eapol = 1;
|
||||||
|
|
||||||
|
- if (wpa_driver_wext_set_psk(drv, params->psk) < 0)
|
||||||
|
+ if (wpa_driver_wext_set_psk(drv, params->psk) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_psk failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (wpa_driver_wext_set_auth_param(drv,
|
||||||
|
IW_AUTH_RX_UNENCRYPTED_EAPOL,
|
||||||
|
- allow_unencrypted_eapol) < 0)
|
||||||
|
+ allow_unencrypted_eapol) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(RX_UNENCRYPTED_EAPOL) failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
#ifdef CONFIG_IEEE80211W
|
||||||
|
switch (params->mgmt_frame_protection) {
|
||||||
|
case NO_MGMT_FRAME_PROTECTION:
|
||||||
|
@@ -1970,17 +1997,25 @@ int wpa_driver_wext_associate(void *priv
|
||||||
|
value = IW_AUTH_MFP_REQUIRED;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
- if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_MFP, value) < 0)
|
||||||
|
+ if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_MFP, value) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_auth_param(IW_AUTH_MFP) failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
#endif /* CONFIG_IEEE80211W */
|
||||||
|
- if (params->freq && wpa_driver_wext_set_freq(drv, params->freq) < 0)
|
||||||
|
+ if (params->freq && wpa_driver_wext_set_freq(drv, params->freq) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_freq failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
if (!drv->cfg80211 &&
|
||||||
|
- wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0)
|
||||||
|
+ wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_ssid failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
if (params->bssid &&
|
||||||
|
- wpa_driver_wext_set_bssid(drv, params->bssid) < 0)
|
||||||
|
+ wpa_driver_wext_set_bssid(drv, params->bssid) < 0) {
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: assoc failed because set_bssid failed", __FUNCTION__);
|
||||||
|
ret = -1;
|
||||||
|
+ }
|
||||||
|
if (drv->cfg80211 &&
|
||||||
|
wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0)
|
||||||
|
ret = -1;
|
||||||
|
@@ -2008,6 +2043,10 @@ static int wpa_driver_wext_set_auth_alg(
|
||||||
|
res = wpa_driver_wext_set_auth_param(drv, IW_AUTH_80211_AUTH_ALG,
|
||||||
|
algs);
|
||||||
|
drv->auth_alg_fallback = res == -2;
|
||||||
|
+
|
||||||
|
+ if (res == -2)
|
||||||
|
+ wpa_printf(MSG_DEBUG, "%s: falling back to ENCODE for AUTH", __FUNCTION__);
|
||||||
|
+
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
Index: src/drivers/driver_wext.c
|
||||||
|
===================================================================
|
||||||
|
--- src/drivers/driver_wext.c.orig
|
||||||
|
+++ src/drivers/driver_wext.c
|
||||||
|
@@ -54,12 +54,13 @@ int wpa_driver_wext_set_auth_param(struc
|
||||||
|
iwr.u.param.value = value;
|
||||||
|
|
||||||
|
if (ioctl(drv->ioctl_sock, SIOCSIWAUTH, &iwr) < 0) {
|
||||||
|
+ int saved_errno = errno;
|
||||||
|
if (errno != EOPNOTSUPP) {
|
||||||
|
wpa_printf(MSG_DEBUG, "WEXT: SIOCSIWAUTH(param %d "
|
||||||
|
"value 0x%x) failed: %s)",
|
||||||
|
idx, value, strerror(errno));
|
||||||
|
}
|
||||||
|
- ret = errno == EOPNOTSUPP ? -2 : -1;
|
||||||
|
+ ret = saved_errno == EOPNOTSUPP ? -2 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
From: Reinhard Tartler <siretart@tauware.de>
|
||||||
|
References: none
|
||||||
|
Description: Use pkg-config for libpcsclite linkage flags
|
||||||
|
At least in debian, we can rely on pkg-config being available and
|
||||||
|
returning more accurate ldflags.
|
||||||
|
|
||||||
|
--- a/wpa_supplicant/Makefile
|
||||||
|
+++ b/wpa_supplicant/Makefile
|
||||||
|
@@ -691,7 +691,7 @@ ifdef CONFIG_NATIVE_WINDOWS
|
||||||
|
#dynamic symbol loading that is now used in pcsc_funcs.c
|
||||||
|
#LIBS += -lwinscard
|
||||||
|
else
|
||||||
|
-LIBS += -lpcsclite -lpthread
|
||||||
|
+LIBS += $(shell pkg-config --libs libpcsclite)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
diff -aurp a/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in b/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in
|
||||||
|
--- a/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in 2012-05-15 09:00:03.048545044 +0000
|
||||||
|
+++ b/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in 2012-05-15 09:01:19.759550509 +0000
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
[D-BUS Service]
|
||||||
|
Name=fi.epitest.hostap.WPASupplicant
|
||||||
|
-Exec=@BINDIR@/wpa_supplicant -u
|
||||||
|
+Exec=/usr/sbin/wpa_supplicant -u
|
||||||
|
User=root
|
||||||
|
SystemdService=wpa_supplicant.service
|
||||||
|
diff -aurp a/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in b/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in
|
||||||
|
--- a/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in 2012-05-15 09:00:03.048545044 +0000
|
||||||
|
+++ b/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in 2012-05-15 09:01:28.727551913 +0000
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
[D-BUS Service]
|
||||||
|
Name=fi.w1.wpa_supplicant1
|
||||||
|
-Exec=@BINDIR@/wpa_supplicant -u
|
||||||
|
+Exec=/usr/sbin/wpa_supplicant -u
|
||||||
|
User=root
|
||||||
|
SystemdService=wpa_supplicant.service
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
diff -aurp a/wpa_supplicant/dbus/dbus_new_helpers.c b/wpa_supplicant/dbus/dbus_new_helpers.c
|
||||||
|
--- a/wpa_supplicant/dbus/dbus_new_helpers.c 2012-05-15 07:28:37.616150164 +0000
|
||||||
|
+++ b/wpa_supplicant/dbus/dbus_new_helpers.c 2012-05-15 07:30:21.904157611 +0000
|
||||||
|
@@ -882,7 +882,7 @@ void wpa_dbus_mark_property_changed(stru
|
||||||
|
const struct wpa_dbus_property_desc *dsc;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
- if (iface == NULL)
|
||||||
|
+ if (iface == NULL || path == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
dbus_connection_get_object_path_data(iface->con, path,
|
||||||
|
diff -aurp a/wpa_supplicant/dbus/dbus_old.c b/wpa_supplicant/dbus/dbus_old.c
|
||||||
|
--- a/wpa_supplicant/dbus/dbus_old.c 2012-05-15 07:28:29.502149373 +0000
|
||||||
|
+++ b/wpa_supplicant/dbus/dbus_old.c 2012-05-15 07:30:48.859162441 +0000
|
||||||
|
@@ -379,7 +379,7 @@ void wpa_supplicant_dbus_notify_scan_res
|
||||||
|
DBusMessage *_signal;
|
||||||
|
|
||||||
|
/* Do nothing if the control interface is not turned on */
|
||||||
|
- if (iface == NULL)
|
||||||
|
+ if (iface == NULL || wpa_s->dbus_path == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_signal = dbus_message_new_signal(wpa_s->dbus_path,
|
||||||
|
@@ -419,7 +419,7 @@ void wpa_supplicant_dbus_notify_state_ch
|
||||||
|
if (wpa_s->global == NULL)
|
||||||
|
return;
|
||||||
|
iface = wpa_s->global->dbus;
|
||||||
|
- if (iface == NULL)
|
||||||
|
+ if (iface == NULL || wpa_s->dbus_path == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Only send signal if state really changed */
|
||||||
|
@@ -478,7 +478,7 @@ void wpa_supplicant_dbus_notify_scanning
|
||||||
|
dbus_bool_t scanning = wpa_s->scanning ? TRUE : FALSE;
|
||||||
|
|
||||||
|
/* Do nothing if the control interface is not turned on */
|
||||||
|
- if (iface == NULL)
|
||||||
|
+ if (iface == NULL || wpa_s->dbus_path == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_signal = dbus_message_new_signal(wpa_s->dbus_path,
|
||||||
|
@@ -513,7 +513,7 @@ void wpa_supplicant_dbus_notify_wps_cred
|
||||||
|
if (wpa_s->global == NULL)
|
||||||
|
return;
|
||||||
|
iface = wpa_s->global->dbus;
|
||||||
|
- if (iface == NULL)
|
||||||
|
+ if (iface == NULL || wpa_s->dbus_path == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_signal = dbus_message_new_signal(wpa_s->dbus_path,
|
||||||
|
@@ -564,7 +564,7 @@ void wpa_supplicant_dbus_notify_certific
|
||||||
|
if (wpa_s->global == NULL)
|
||||||
|
return;
|
||||||
|
iface = wpa_s->global->dbus;
|
||||||
|
- if (iface == NULL)
|
||||||
|
+ if (iface == NULL || wpa_s->dbus_path == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_signal = dbus_message_new_signal(wpa_s->dbus_path,
|
||||||
+347
@@ -0,0 +1,347 @@
|
|||||||
|
diff -Naurp a/src/eap_peer/eap_methods.c b/src/eap_peer/eap_methods.c
|
||||||
|
--- a/src/eap_peer/eap_methods.c 2012-05-15 08:23:17.151386999 +0000
|
||||||
|
+++ b/src/eap_peer/eap_methods.c 2012-05-15 08:23:57.403389760 +0000
|
||||||
|
@@ -342,6 +342,120 @@ int eap_peer_method_register(struct eap_
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * eap_peer_register_methods - Register all known EAP peer methods
|
||||||
|
+ *
|
||||||
|
+ * This function is called at program start to register all compiled
|
||||||
|
+ * in EAP peer methods.
|
||||||
|
+ */
|
||||||
|
+int eap_peer_register_methods(void)
|
||||||
|
+{
|
||||||
|
+ int ret = 0;
|
||||||
|
+
|
||||||
|
+#ifdef EAP_MD5
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_md5_register();
|
||||||
|
+#endif /* EAP_MD5 */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_TLS
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_tls_register();
|
||||||
|
+#endif /* EAP_TLS */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_MSCHAPv2
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_mschapv2_register();
|
||||||
|
+#endif /* EAP_MSCHAPv2 */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_PEAP
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_peap_register();
|
||||||
|
+#endif /* EAP_PEAP */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_TTLS
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_ttls_register();
|
||||||
|
+#endif /* EAP_TTLS */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_GTC
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_gtc_register();
|
||||||
|
+#endif /* EAP_GTC */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_OTP
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_otp_register();
|
||||||
|
+#endif /* EAP_OTP */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_SIM
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_sim_register();
|
||||||
|
+#endif /* EAP_SIM */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_LEAP
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_leap_register();
|
||||||
|
+#endif /* EAP_LEAP */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_PSK
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_psk_register();
|
||||||
|
+#endif /* EAP_PSK */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_AKA
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_aka_register();
|
||||||
|
+#endif /* EAP_AKA */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_AKA_PRIME
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_aka_prime_register();
|
||||||
|
+#endif /* EAP_AKA_PRIME */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_FAST
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_fast_register();
|
||||||
|
+#endif /* EAP_FAST */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_PAX
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_pax_register();
|
||||||
|
+#endif /* EAP_PAX */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_SAKE
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_sake_register();
|
||||||
|
+#endif /* EAP_SAKE */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_GPSK
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_gpsk_register();
|
||||||
|
+#endif /* EAP_GPSK */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_WSC
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_wsc_register();
|
||||||
|
+#endif /* EAP_WSC */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_IKEV2
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_ikev2_register();
|
||||||
|
+#endif /* EAP_IKEV2 */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_VENDOR_TEST
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_vendor_test_register();
|
||||||
|
+#endif /* EAP_VENDOR_TEST */
|
||||||
|
+
|
||||||
|
+#ifdef EAP_TNC
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ ret = eap_peer_tnc_register();
|
||||||
|
+#endif /* EAP_TNC */
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
* eap_peer_unregister_methods - Unregister EAP peer methods
|
||||||
|
*
|
||||||
|
* This function is called at program termination to unregister all EAP peer
|
||||||
|
diff -Naurp a/src/eap_peer/eap_methods.h b/src/eap_peer/eap_methods.h
|
||||||
|
--- a/src/eap_peer/eap_methods.h 2012-05-15 08:23:17.151386999 +0000
|
||||||
|
+++ b/src/eap_peer/eap_methods.h 2012-05-15 08:23:57.404389735 +0000
|
||||||
|
@@ -32,6 +32,7 @@ EapType eap_peer_get_type(const char *na
|
||||||
|
const char * eap_get_name(int vendor, EapType type);
|
||||||
|
size_t eap_get_names(char *buf, size_t buflen);
|
||||||
|
char ** eap_get_names_as_string_array(size_t *num);
|
||||||
|
+int eap_peer_register_methods(void);
|
||||||
|
void eap_peer_unregister_methods(void);
|
||||||
|
|
||||||
|
#else /* IEEE8021X_EAPOL */
|
||||||
|
diff -Naurp a/src/eap_peer/libeap0.pc b/src/eap_peer/libeap0.pc
|
||||||
|
--- a/src/eap_peer/libeap0.pc 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
+++ b/src/eap_peer/libeap0.pc 2012-05-15 08:23:57.404389735 +0000
|
||||||
|
@@ -0,0 +1,10 @@
|
||||||
|
+prefix=/usr
|
||||||
|
+exec_prefix=/usr
|
||||||
|
+libdir=${exec_prefix}/lib
|
||||||
|
+includedir=${prefix}/include/eap_peer
|
||||||
|
+
|
||||||
|
+Name: libeap0
|
||||||
|
+Description: EAP Peer Library API
|
||||||
|
+Version: 0.7.2
|
||||||
|
+Libs: -L${libdir} -leap
|
||||||
|
+Cflags: -I${includedir}
|
||||||
|
diff -Naurp a/src/eap_peer/Makefile b/src/eap_peer/Makefile
|
||||||
|
--- a/src/eap_peer/Makefile 2012-05-15 08:23:17.152386964 +0000
|
||||||
|
+++ b/src/eap_peer/Makefile 2012-05-15 08:23:57.403389760 +0000
|
||||||
|
@@ -1,11 +1,186 @@
|
||||||
|
-all:
|
||||||
|
- @echo Nothing to be made.
|
||||||
|
+LIBEAP_NAME = libeap
|
||||||
|
+LIBEAP_CURRENT = 0
|
||||||
|
+LIBEAP_REVISION = 0
|
||||||
|
+LIBEAP_AGE = 0
|
||||||
|
+
|
||||||
|
+LIBEAP = $(LIBEAP_NAME).so.$(LIBEAP_CURRENT).$(LIBEAP_REVISION).$(LIBEAP_AGE)
|
||||||
|
+LIBEAP_SO = $(LIBEAP_NAME).so.$(LIBEAP_CURRENT)
|
||||||
|
+
|
||||||
|
+.PHONY: all clean install uninstall
|
||||||
|
+
|
||||||
|
+all: $(LIBEAP)
|
||||||
|
+
|
||||||
|
+ifndef CC
|
||||||
|
+CC=gcc
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+ifndef CFLAGS
|
||||||
|
+CFLAGS = -MMD -O0 -Wall -g
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+CONFIG_TLS=openssl
|
||||||
|
+
|
||||||
|
+INCLUDE_INSTALL_DIR=/usr/include/eap_peer
|
||||||
|
+
|
||||||
|
+# Got to use override all across the board, otherwise a 'make
|
||||||
|
+# CFLAGS=XX' will kill us because the command line's CFLAGS will
|
||||||
|
+# overwrite Make's and we'll loose all the infrastructure it sets.
|
||||||
|
+override CFLAGS += -I. -I.. -I../crypto -I../utils -I../common
|
||||||
|
+
|
||||||
|
+# at least for now, need to include config_ssid.h and config_blob.h from
|
||||||
|
+# wpa_supplicant directory
|
||||||
|
+override CFLAGS += -I ../../wpa_supplicant
|
||||||
|
+
|
||||||
|
+OBJS_both += ../utils/common.o
|
||||||
|
+OBJS_both += ../utils/os_unix.o
|
||||||
|
+OBJS_both += ../utils/wpa_debug.o
|
||||||
|
+OBJS_both += ../utils/base64.o
|
||||||
|
+OBJS_both += ../utils/wpabuf.o
|
||||||
|
+OBJS_both += ../crypto/md5.o
|
||||||
|
+OBJS_both += ../crypto/sha1.o
|
||||||
|
+OBJS_both += ../crypto/sha1-tlsprf.o
|
||||||
|
+OBJS_both += ../crypto/aes-encblock.o
|
||||||
|
+OBJS_both += ../crypto/aes-wrap.o
|
||||||
|
+OBJS_both += ../crypto/aes-ctr.o
|
||||||
|
+OBJS_both += ../crypto/aes-eax.o
|
||||||
|
+OBJS_both += ../crypto/aes-omac1.o
|
||||||
|
+OBJS_both += ../crypto/ms_funcs.o
|
||||||
|
+OBJS_both += ../crypto/sha256.o
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+OBJS_both += ../eap_common/eap_peap_common.o
|
||||||
|
+OBJS_both += ../eap_common/eap_psk_common.o
|
||||||
|
+OBJS_both += ../eap_common/eap_pax_common.o
|
||||||
|
+OBJS_both += ../eap_common/eap_sake_common.o
|
||||||
|
+OBJS_both += ../eap_common/eap_gpsk_common.o
|
||||||
|
+OBJS_both += ../eap_common/chap.o
|
||||||
|
+
|
||||||
|
+OBJS_peer += ../eap_peer/eap_tls.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_peap.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_ttls.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_md5.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_mschapv2.o
|
||||||
|
+OBJS_peer += ../eap_peer/mschapv2.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_otp.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_gtc.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_leap.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_psk.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_pax.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_sake.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_gpsk.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap.o
|
||||||
|
+OBJS_peer += ../eap_common/eap_common.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_methods.o
|
||||||
|
+OBJS_peer += ../eap_peer/eap_tls_common.o
|
||||||
|
+
|
||||||
|
+override CFLAGS += -DEAP_TLS
|
||||||
|
+override CFLAGS += -DEAP_PEAP
|
||||||
|
+override CFLAGS += -DEAP_TTLS
|
||||||
|
+override CFLAGS += -DEAP_MD5
|
||||||
|
+override CFLAGS += -DEAP_MSCHAPv2
|
||||||
|
+override CFLAGS += -DEAP_GTC
|
||||||
|
+override CFLAGS += -DEAP_OTP
|
||||||
|
+override CFLAGS += -DEAP_LEAP
|
||||||
|
+override CFLAGS += -DEAP_PSK
|
||||||
|
+override CFLAGS += -DEAP_PAX
|
||||||
|
+override CFLAGS += -DEAP_SAKE
|
||||||
|
+override CFLAGS += -DEAP_GPSK -DEAP_GPSK_SHA256
|
||||||
|
+override CFLAGS += -DEAP_TLS_FUNCS
|
||||||
|
+
|
||||||
|
+override CFLAGS += -DIEEE8021X_EAPOL
|
||||||
|
+
|
||||||
|
+ifeq ($(CONFIG_TLS), openssl)
|
||||||
|
+override CFLAGS += -DEAP_TLS_OPENSSL
|
||||||
|
+OBJS_both += ../crypto/tls_openssl.o
|
||||||
|
+OBJS_both += ../crypto/crypto_openssl.o
|
||||||
|
+LIBS += -lssl -lcrypto
|
||||||
|
+override CFLAGS += -DINTERNAL_SHA256
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+ifeq ($(CONFIG_TLS), internal)
|
||||||
|
+OBJS_both += ../crypto/tls_internal.o
|
||||||
|
+OBJS_both += ../tls/tlsv1_common.o ../../tls/tlsv1_record.o
|
||||||
|
+OBJS_both += ../tls/tlsv1_cred.o
|
||||||
|
+OBJS_both += ../tls/asn1.o ../../tls/x509v3.o
|
||||||
|
+OBJS_both += ../crypto/crypto_internal.o ../../tls/rsa.o ../../tls/bignum.o
|
||||||
|
+
|
||||||
|
+OBJS_peer += ../tls/tlsv1_client.o
|
||||||
|
+OBJS_peer += ../tls/tlsv1_client_write.o ../../tls/tlsv1_client_read.o
|
||||||
|
+override CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
|
||||||
|
+
|
||||||
|
+OBJS_server += ../tls/tlsv1_server.o
|
||||||
|
+OBJS_server += ../tls/tlsv1_server_write.o ../../tls/tlsv1_server_read.o
|
||||||
|
+override CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
|
||||||
|
+
|
||||||
|
+override CFLAGS += -DCONFIG_TLS_INTERNAL
|
||||||
|
+override CFLAGS += -DCONFIG_CRYPTO_INTERNAL
|
||||||
|
+override CFLAGS += -DCONFIG_INTERNAL_X509
|
||||||
|
+override CFLAGS += -DINTERNAL_AES
|
||||||
|
+override CFLAGS += -DINTERNAL_SHA1
|
||||||
|
+override CFLAGS += -DINTERNAL_SHA256
|
||||||
|
+override CFLAGS += -DINTERNAL_MD5
|
||||||
|
+override CFLAGS += -DINTERNAL_MD4
|
||||||
|
+override CFLAGS += -DINTERNAL_DES
|
||||||
|
+ifdef CONFIG_INTERNAL_LIBTOMMATH
|
||||||
|
+override CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
|
||||||
|
+else
|
||||||
|
+LIBS += -ltommath
|
||||||
|
+endif
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+ifndef LDO
|
||||||
|
+LDO=$(CC)
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+OBJS_lib=$(OBJS_both) $(OBJS_peer)
|
||||||
|
+
|
||||||
|
+ #$(OBJS_server)
|
||||||
|
+
|
||||||
|
+override CFLAGS += -fPIC -DPIC
|
||||||
|
+LDFLAGS += -shared
|
||||||
|
+
|
||||||
|
+$(LIBEAP): $(OBJS_lib)
|
||||||
|
+ $(LDO) $(LDFLAGS) $(OBJS_lib) -Wl,-soname -Wl,$(LIBEAP_SO) -o $(LIBEAP) $(LIBS)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+UTIL_HEADERS = ../utils/includes.h ../utils/common.h \
|
||||||
|
+ ../utils/wpabuf.h ../utils/build_config.h \
|
||||||
|
+ ../utils/os.h ../utils/wpa_debug.h
|
||||||
|
+COMMON_HEADERS = ../common/defs.h
|
||||||
|
+EAP_COMMON_HEADERS = ../eap_common/eap_defs.h
|
||||||
|
+MAIN_HEADERS = eap.h eap_methods.h eap_config.h
|
||||||
|
+CRYPTO_HEADERS = ../crypto/tls.h
|
||||||
|
+
|
||||||
|
+install:
|
||||||
|
+
|
||||||
|
+ mkdir -p $(DESTDIR)/usr/lib
|
||||||
|
+# copy the lib file to std lib location
|
||||||
|
+ cp $(LIBEAP) $(DESTDIR)/usr/lib
|
||||||
|
+ ln -fs $(LIBEAP_SO) $(DESTDIR)/usr/lib/$(LIBEAP_NAME).so
|
||||||
|
+ ln -fs $(LIBEAP_NAME).so.0.0.0 $(DESTDIR)/usr/lib/$(LIBEAP_NAME).so.0
|
||||||
|
+
|
||||||
|
+# copy the headers reqd by apps using eap peer library in its own subfolder under /usr/include
|
||||||
|
+ mkdir -p \
|
||||||
|
+ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/eap_common \
|
||||||
|
+ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/common \
|
||||||
|
+ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/util \
|
||||||
|
+ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/crypto
|
||||||
|
+ install -m 0644 $(EAP_COMMON_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/eap_common
|
||||||
|
+ install -m 0644 $(COMMON_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/common
|
||||||
|
+ install -m 0644 $(CRYPTO_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/crypto
|
||||||
|
+ install -m 0644 $(UTIL_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/util
|
||||||
|
+ install -m 0644 $(MAIN_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/
|
||||||
|
+
|
||||||
|
+ mkdir -p $(DESTDIR)/usr/lib/pkgconfig
|
||||||
|
+ cp libeap0.pc $(DESTDIR)/usr/lib/pkgconfig
|
||||||
|
+
|
||||||
|
+uninstall:
|
||||||
|
+
|
||||||
|
+ rm $(DESTDIR)/usr/lib/$(LIBEAP)
|
||||||
|
+ rm -fr $(DESTDIR)/$(INCLUDE_INSTALL_DIR)
|
||||||
|
+ rm -f $(DESTDIR)/usr/lib/pkgconfig/libeap0.pc
|
||||||
|
|
||||||
|
clean:
|
||||||
|
- rm -f *~ *.o *.so *.d
|
||||||
|
+ rm -f *~ *.o *.so *.d libeap.a $(LIBEAP) $(OBJS_lib)
|
||||||
|
|
||||||
|
-install:
|
||||||
|
- if ls *.so >/dev/null 2>&1; then \
|
||||||
|
- install -d $(DESTDIR)$(LIBDIR)/wpa_supplicant && \
|
||||||
|
- cp *.so $(DESTDIR)$(LIBDIR)/wpa_supplicant \
|
||||||
|
- ; fi
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# wpa_supplicant.conf
|
||||||
|
# WPA-PSK ile kimlikleme yapılmasını zorunlu kılan kablosuz erişim noktaları ile
|
||||||
|
# Microsoft IAS Radius sunucu kimliklemesinin wpa_supplicant ile nasıl yapılacağını
|
||||||
|
# örnekleyen ayar dosyası. İlgili yerleri doldurmanız gerekir.
|
||||||
|
#
|
||||||
|
# wpa_supplicant'ın desteklediği diğer ayar işlemleri için:
|
||||||
|
# /usr/share/doc/wpasupplicant/wpa_supplicant.conf.example dosyasına bakınız.
|
||||||
|
|
||||||
|
# Root'un wpa_cli ile bağlantıyı izlemesi için
|
||||||
|
ctrl_interface=/run/wpa_supplicant
|
||||||
|
|
||||||
|
eapol_version=1
|
||||||
|
ap_scan=1
|
||||||
|
fast_reauth=1
|
||||||
|
|
||||||
|
# WPA-PSK kimlikleme gerektiren kablosuz erişim noktaları için ayarlar
|
||||||
|
network={
|
||||||
|
# Erişim noktasının SSID'si
|
||||||
|
ssid="SSID"
|
||||||
|
# Erişim cihazının WPA parolası
|
||||||
|
psk="Parola1234"
|
||||||
|
# Bu bağlantının önceliğinin 1. sırada olduğu belirtiliyor
|
||||||
|
priority=1
|
||||||
|
}
|
||||||
|
|
||||||
|
# MS IAS Radius sunucusunda kimlikleme için gereken ayarlar
|
||||||
|
network={
|
||||||
|
ssid="SSID"
|
||||||
|
key_mgmt=WPA-EAP
|
||||||
|
eap=PEAP
|
||||||
|
identity="ALAN_ADI\KULLANICI"
|
||||||
|
password="Parola1234"
|
||||||
|
phase1="auth=MSCHAPV2"
|
||||||
|
priority=2
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
ctrl_interface=/run/wpa_supplicant
|
||||||
|
ctrl_interface_group=wheel
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Use the flag "-i" before each of your interfaces, like so:
|
||||||
|
# INTERFACES="-ieth1 -iwlan0"
|
||||||
|
INTERFACES=""
|
||||||
|
|
||||||
|
# Use the flag "-D" before each driver, like so:
|
||||||
|
# DRIVERS="-Dwext"
|
||||||
|
DRIVERS=""
|
||||||
|
|
||||||
|
# Other arguments
|
||||||
|
# -u Enable the D-Bus interface (required for use with NetworkManager)
|
||||||
|
# -f Log to /var/log/wpa_supplicant.log
|
||||||
|
# -P Write pid file to /run/wpa_supplicant.pid
|
||||||
|
# required to return proper codes by init scripts (e.g. double "start" action)
|
||||||
|
# -B to daemonize that has to be used together with -P is already in wpa_supplicant.init.d
|
||||||
|
OTHER_ARGS="-u -f /var/log/wpa_supplicant.log -P /run/wpa_supplicant.pid"
|
||||||
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
CONFIG_CTRL_IFACE=y
|
||||||
|
CONFIG_CTRL_IFACE_DBUS=y
|
||||||
|
CONFIG_CTRL_IFACE_DBUS_NEW=y
|
||||||
|
CONFIG_CTRL_IFACE_DBUS_INTRO=y
|
||||||
|
#CONFIG_DRIVER_HOSTAP=y
|
||||||
|
#CONFIG_DRIVER_HERMES=y
|
||||||
|
#CONFIG_DRIVER_MADWIFI=y
|
||||||
|
CONFIG_DRIVER_ATMEL=y
|
||||||
|
CONFIG_DRIVER_WEXT=y
|
||||||
|
CONFIG_DRIVER_NL80211=y
|
||||||
|
CONFIG_DRIVER_NDISWRAPPER=y
|
||||||
|
#CONFIG_DRIVER_PRISM54=y
|
||||||
|
CONFIG_DRIVER_WIRED=y
|
||||||
|
#CONFIG_DRIVER_BROADCOM=y
|
||||||
|
#CONFIG_DRIVER_IPW=y
|
||||||
|
#CONFIG_DRIVER_BSD=y
|
||||||
|
#CONFIG_DRIVER_NDIS=y
|
||||||
|
CONFIG_WIRELESS_EXTENSION=y
|
||||||
|
CONFIG_IEEE8021X_EAPOL=y
|
||||||
|
CONFIG_EAP_MD5=y
|
||||||
|
CONFIG_EAP_MSCHAPV2=y
|
||||||
|
CONFIG_EAP_TLS=y
|
||||||
|
CONFIG_EAP_PEAP=y
|
||||||
|
CONFIG_EAP_TTLS=y
|
||||||
|
CONFIG_EAP_FAST=y
|
||||||
|
CONFIG_EAP_GTC=y
|
||||||
|
CONFIG_EAP_OTP=y
|
||||||
|
CONFIG_EAP_SIM=y
|
||||||
|
CONFIG_EAP_AKA=y
|
||||||
|
CONFIG_EAP_PSK=y
|
||||||
|
CONFIG_EAP_PAX=y
|
||||||
|
CONFIG_EAP_LEAP=y
|
||||||
|
#CONFIG_PCSC=y
|
||||||
|
CONFIG_EAP_SAKE=y
|
||||||
|
CONFIG_EAP_GPSK=y
|
||||||
|
CONFIG_EAP_GPSK_SHA256=y
|
||||||
|
CONFIG_EAP_TNC=y
|
||||||
|
CONFIG_WPS=y
|
||||||
|
CONFIG_EAP_IKEV2=y
|
||||||
|
CONFIG_PKCS12=y
|
||||||
|
CONFIG_SMARTCARD=y
|
||||||
|
CONFIG_DEBUG_FILE=y
|
||||||
|
CFLAGS += -I/usr/include/libnl3
|
||||||
|
CONFIG_IPV6=y
|
||||||
|
CONFIG_LIBNL32=y
|
||||||
|
CONFIG_PEERKEY=y
|
||||||
|
CONFIG_READLINE=y
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
/var/log/wpa_supplicant.log {
|
||||||
|
missingok
|
||||||
|
notifempty
|
||||||
|
size 30k
|
||||||
|
create 0600 root root
|
||||||
|
}
|
||||||
@@ -0,0 +1,250 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import dbus
|
||||||
|
|
||||||
|
WPAS_DBUS_OPATH = "/fi/epitest/hostap/WPASupplicant"
|
||||||
|
WPAS_DBUS_INTERFACES_OPATH = "/fi/epitest/hostap/WPASupplicant/Interfaces"
|
||||||
|
|
||||||
|
WPAS_DBUS_SERVICE = "fi.epitest.hostap.WPASupplicant"
|
||||||
|
WPAS_DBUS_INTERFACE = "fi.epitest.hostap.WPASupplicant"
|
||||||
|
WPAS_DBUS_INTERFACES_INTERFACE = "fi.epitest.hostap.WPASupplicant.Interface"
|
||||||
|
WPAS_DBUS_NETWORK_INTERFACE = "fi.epitest.hostap.WPASupplicant.Network"
|
||||||
|
WPAS_DBUS_BSSID_INTERFACE = "fi.epitest.hostap.WPASupplicant.BSSID"
|
||||||
|
|
||||||
|
TIMEOUT = 60
|
||||||
|
|
||||||
|
class PasswordLengthError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class WPA_Supplicant_Network:
|
||||||
|
def __init__(self, bus, path):
|
||||||
|
self.bus = bus
|
||||||
|
self.path = path
|
||||||
|
self.net_obj = self.bus.get_object(WPAS_DBUS_SERVICE, path)
|
||||||
|
self.net = dbus.Interface(self.net_obj, WPAS_DBUS_NETWORK_INTERFACE)
|
||||||
|
|
||||||
|
# dict keys: ssid, bssid, key_mgmt, psk, scan_ssid, pairwise, group, eap, identity,
|
||||||
|
# anonymous_identity, ca_cert, ca_cert2, client_cert, client_cert2, private_key, private_key2,
|
||||||
|
# private_key_passwd, private_key2_passwd, phase1, phase2, eapol_flags
|
||||||
|
#
|
||||||
|
# Example: setNetwork({"ssid":dbus.String("MySSID", variant_level=1)),
|
||||||
|
# "psk":dbus.String("MyPassword", variant_level=1))})
|
||||||
|
def setNetwork(self, options):
|
||||||
|
self.net.set(options)
|
||||||
|
|
||||||
|
def enableNetwork(self):
|
||||||
|
self.net.enable()
|
||||||
|
|
||||||
|
def disableNetwork(self):
|
||||||
|
self.net.disable()
|
||||||
|
|
||||||
|
class WPA_Supplicant_Interface:
|
||||||
|
def __init__(self, bus, ifname, path):
|
||||||
|
self.bus = bus
|
||||||
|
self.ifname = ifname
|
||||||
|
self.path = path
|
||||||
|
self.if_obj = self.bus.get_object(WPAS_DBUS_SERVICE, path)
|
||||||
|
self.iface = dbus.Interface(self. if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
|
||||||
|
|
||||||
|
def scan(self):
|
||||||
|
self.iface.scan()
|
||||||
|
|
||||||
|
def scanResults(self):
|
||||||
|
return self.iface.scanResults()
|
||||||
|
|
||||||
|
def addNetwork(self):
|
||||||
|
path = self.iface.addNetwork()
|
||||||
|
return self.getNetwork(path)
|
||||||
|
|
||||||
|
def removeNetwork(self, network):
|
||||||
|
self.iface.removeNetwork(network)
|
||||||
|
|
||||||
|
def selectNetwork(self, network):
|
||||||
|
self.iface.selectNetwork(network)
|
||||||
|
|
||||||
|
def getNetworkPath(self, network_id):
|
||||||
|
return "%s/Networks/%d" % (self.path, network_id)
|
||||||
|
|
||||||
|
def getNetworkById(self, network_id):
|
||||||
|
return WPA_Supplicant_Network(self.bus, self.getNetworkPath(network_id))
|
||||||
|
|
||||||
|
def getNetwork(self, network):
|
||||||
|
return WPA_Supplicant_Network(self.bus, network)
|
||||||
|
|
||||||
|
# mode should be between 0 and 2
|
||||||
|
def setAPScan(self, mode):
|
||||||
|
self.iface.setAPScan(dbus.UInt32(mode))
|
||||||
|
|
||||||
|
def disconnect(self):
|
||||||
|
self.iface.disconnect()
|
||||||
|
|
||||||
|
def getState(self):
|
||||||
|
return self.iface.state()
|
||||||
|
|
||||||
|
def getCapabilities(self):
|
||||||
|
return self.iface.capabilities()
|
||||||
|
|
||||||
|
class WPA_Supplicant:
|
||||||
|
def __init__(self):
|
||||||
|
self.bus = dbus.SystemBus()
|
||||||
|
self.wpas_obj = self.bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
|
||||||
|
self.wpas = dbus.Interface(self.wpas_obj, WPAS_DBUS_INTERFACE)
|
||||||
|
|
||||||
|
def getInterface(self, ifname):
|
||||||
|
path = self.wpas.getInterface(ifname)
|
||||||
|
return WPA_Supplicant_Interface(self.bus, ifname, path)
|
||||||
|
|
||||||
|
# driver=wext, hostap, prism54, madwifi, atmel, ndiswrapper, ipw, wired
|
||||||
|
def addInterface(self, ifname, driver):
|
||||||
|
self.wpas.addInterface(ifname, {'driver': dbus.String(driver, variant_level=1)})
|
||||||
|
return self.getInterface(ifname)
|
||||||
|
|
||||||
|
def removeInterface(self, ifname):
|
||||||
|
try:
|
||||||
|
iface_path = self.wpas.getInterface(ifname)
|
||||||
|
except dbus.DBusException:
|
||||||
|
iface_path = None
|
||||||
|
if iface_path:
|
||||||
|
self.wpas.removeInterface(dbus.ObjectPath(iface_path))
|
||||||
|
|
||||||
|
def detectWpaDriver(ifname):
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import pardus.netutils
|
||||||
|
# if device is an ethernet device, driver is "wired"
|
||||||
|
device = pardus.netutils.IF(ifname)
|
||||||
|
if (device.isEthernet()) and (not device.isWireless()):
|
||||||
|
return "wired"
|
||||||
|
path = os.path.join("/sys/class/net/", ifname, "device/driver/module")
|
||||||
|
modname = None
|
||||||
|
if os.path.exists(path):
|
||||||
|
modname = os.readlink(path).split("/")[-1]
|
||||||
|
if "hostap" in modname:
|
||||||
|
return "hostap"
|
||||||
|
if "prism54" in modname:
|
||||||
|
return "prism54"
|
||||||
|
if "atmel" in modname:
|
||||||
|
return "atmel"
|
||||||
|
# we fallback to wext
|
||||||
|
# wext is the generic driver for ipw2100, ipw2200, ndiswrapper > 1.12, madwifi etc...
|
||||||
|
return "wext"
|
||||||
|
|
||||||
|
def getWpaInterface(ifname):
|
||||||
|
wpa = WPA_Supplicant()
|
||||||
|
try:
|
||||||
|
iface = wpa.getInterface(ifname)
|
||||||
|
except dbus.DBusException:
|
||||||
|
driver = detectWpaDriver(ifname)
|
||||||
|
iface = wpa.addInterface(ifname, driver)
|
||||||
|
return iface
|
||||||
|
|
||||||
|
def waitForAuthenticationComplete(iface, timeout, wait = 0.1):
|
||||||
|
import time
|
||||||
|
while timeout > 0:
|
||||||
|
if iface.getState() == "COMPLETED":
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
timeout -= wait
|
||||||
|
time.sleep(wait)
|
||||||
|
return False
|
||||||
|
|
||||||
|
def checkServiceState(serviceName):
|
||||||
|
bus = dbus.SystemBus()
|
||||||
|
obj = bus.get_object("tr.org.pardus.comar", "/package/%s" % serviceName)
|
||||||
|
state = obj.info(dbus_interface="tr.org.pardus.comar.System.Service")[2]
|
||||||
|
return state in ("on", "started")
|
||||||
|
|
||||||
|
def isDBusServiceActive():
|
||||||
|
return True
|
||||||
|
|
||||||
|
def isWpaServiceActive():
|
||||||
|
return checkServiceState("wpa_supplicant")
|
||||||
|
|
||||||
|
def isWpaServiceUsable():
|
||||||
|
return isDBusServiceActive() and isWpaServiceActive()
|
||||||
|
|
||||||
|
def startWpaService():
|
||||||
|
if not isWpaServiceActive():
|
||||||
|
bus = dbus.SystemBus()
|
||||||
|
obj = bus.get_object("tr.org.pardus.comar", "/package/wpa_supplicant")
|
||||||
|
obj.start(dbus_interface="tr.org.pardus.comar.System.Service")
|
||||||
|
import time
|
||||||
|
timeout = 10
|
||||||
|
while timeout > 0:
|
||||||
|
try:
|
||||||
|
bus = dbus.SystemBus()
|
||||||
|
net_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
|
||||||
|
net = dbus.Interface(net_obj, WPAS_DBUS_NETWORK_INTERFACE)
|
||||||
|
except dbus.DBusException:
|
||||||
|
time.sleep(0.1)
|
||||||
|
timeout -= 0.2
|
||||||
|
continue
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def setWpaAuthentication(ifname, ssid, password, timeout = TIMEOUT):
|
||||||
|
password_length = len(password)
|
||||||
|
if (password_length < 8) or (password_length > 63):
|
||||||
|
raise PasswordLengthError("Password length should be between 8 and 63")
|
||||||
|
iface = getWpaInterface(ifname)
|
||||||
|
network = iface.addNetwork()
|
||||||
|
network.setNetwork({"ssid": dbus.String(ssid, variant_level=1), "psk": dbus.String(password, variant_level=1)})
|
||||||
|
iface.selectNetwork(network.path)
|
||||||
|
authentication = waitForAuthenticationComplete(iface, timeout)
|
||||||
|
if not authentication:
|
||||||
|
disableAuthentication(ifname)
|
||||||
|
return authentication
|
||||||
|
|
||||||
|
def disableAuthentication(ifname):
|
||||||
|
wpa = WPA_Supplicant()
|
||||||
|
wpa.removeInterface(ifname)
|
||||||
|
bus = dbus.SystemBus()
|
||||||
|
obj = bus.get_object("tr.org.pardus.comar", "/package/wpa_supplicant")
|
||||||
|
obj.stop(dbus_interface="tr.org.pardus.comar.System.Service")
|
||||||
|
|
||||||
|
class Wpa_EAP:
|
||||||
|
ssid = ""
|
||||||
|
phase1 = ""
|
||||||
|
phase2 = ""
|
||||||
|
key_mgmt = "IEEE8021X"
|
||||||
|
eap = "PEAP"
|
||||||
|
anonymous_identity = ""
|
||||||
|
ca_cert = ""
|
||||||
|
client_cert = ""
|
||||||
|
private_key = ""
|
||||||
|
private_key_passwd = ""
|
||||||
|
|
||||||
|
def __init__(self, ifname):
|
||||||
|
self.ifname = ifname
|
||||||
|
self.iface = getWpaInterface(ifname)
|
||||||
|
self.network = self.iface.addNetwork()
|
||||||
|
|
||||||
|
def authenticate(self, username, password, timeout = TIMEOUT):
|
||||||
|
basic = {"ssid": dbus.String(self.ssid, variant_level=1),
|
||||||
|
"key_mgmt": dbus.String(self.key_mgmt, variant_level=1),
|
||||||
|
"eap": dbus.String(self.eap, variant_level=1),
|
||||||
|
"identity": dbus.String(username, variant_level=1)}
|
||||||
|
|
||||||
|
if self.client_cert:
|
||||||
|
basic["client_cert"] = dbus.String(self.client_cert, variant_level=1)
|
||||||
|
if self.ca_cert:
|
||||||
|
basic["ca_cert"] = dbus.String(self.ca_cert, variant_level=1)
|
||||||
|
if self.private_key:
|
||||||
|
basic["private_key"] = dbus.String(self.private_key, variant_level=1)
|
||||||
|
if self.private_key_passwd:
|
||||||
|
basic["private_key_passwd"] = dbus.String(self.private_key_passwd, variant_level=1)
|
||||||
|
if self.phase2:
|
||||||
|
basic["phase2"] = dbus.String("auth=%s"%self.phase2, variant_level=1)
|
||||||
|
if password:
|
||||||
|
basic["password"] = dbus.String(password, variant_level=1)
|
||||||
|
if self.anonymous_identity:
|
||||||
|
basic["anonymous_identity"] = dbus.String(self.anonymous_identity, variant_level=1)
|
||||||
|
|
||||||
|
self.network.setNetwork(basic)
|
||||||
|
|
||||||
|
self.iface.selectNetwork(self.network.path)
|
||||||
|
authentication = waitForAuthenticationComplete(self.iface, timeout)
|
||||||
|
if not authentication:
|
||||||
|
disableAuthentication(self.ifname)
|
||||||
|
return authentication
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>wpa_supplicant</Name>
|
||||||
|
<Homepage>http://hostap.epitest.fi/wpa_supplicant/</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>GPLv2</License>
|
||||||
|
<License>BSD</License>
|
||||||
|
<IsA>service</IsA>
|
||||||
|
<Summary>IEEE 802.1X/WPA supplicant for secure wireless transfers</Summary>
|
||||||
|
<Description>wpa_supplicant is a WPA supplicant with support for WPA and WPA2.</Description>
|
||||||
|
<Archive sha1sum="25b9cb997cd9d2e84cf1ab73fac71b717cbb5f65" type="targz">http://hostap.epitest.fi/releases/wpa_supplicant-2.1.tar.gz</Archive>
|
||||||
|
<AdditionalFiles>
|
||||||
|
<AdditionalFile target="wpa_supplicant/.config">wpa_supplicant.config</AdditionalFile>
|
||||||
|
</AdditionalFiles>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>libnl-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
<Patches>
|
||||||
|
<Patch level="1">ubuntu/01_use_pkg-config_for_pcsc-lite_module.patch</Patch>
|
||||||
|
<!--<Patch level="1">wpa_supplicant-1.0-generate-libeap-peer.patch</Patch>-->
|
||||||
|
<Patch level="1">wpa_supplicant-1.0-dbus-path-fix.patch</Patch>
|
||||||
|
<Patch level="1">wpa_supplicant-1.0-do-not-call-dbus-functions-with-NULL-path.patch</Patch>
|
||||||
|
<Patch level="1">mandriva/wpa_supplicant-0.6.3-WEP232.patch</Patch>
|
||||||
|
<Patch level="1">fedora/wpa_supplicant-openssl-more-algs.patch</Patch>
|
||||||
|
<Patch level="1">fedora/wpa_supplicant-flush-debug-output.patch</Patch>
|
||||||
|
<!--<Patch level="1">fedora/wpa_supplicant-squelch-driver-disconnect-spam.patch</Patch>-->
|
||||||
|
<!--<Patch level="1">fedora/wpa_supplicant-dbus-service-file-args.patch</Patch>-->
|
||||||
|
<Patch level="1">fedora/wpa_supplicant-assoc-timeout.patch</Patch>
|
||||||
|
<!--<Patch level="1">fedora/wpa_supplicant-quiet-scan-results-message.patch</Patch>-->
|
||||||
|
|
||||||
|
<!--<Patch>suse/wpa_supplicant-driver-wext-debug.patch</Patch>-->
|
||||||
|
<Patch>suse/wpa_supplicant-errormsg.patch</Patch>
|
||||||
|
|
||||||
|
<!-- Add 3 patches from git://w1.fi/srv/git/hostap-07.git -->
|
||||||
|
<!--<Patch level="1">0001-AP-Verify-that-HT40-secondary-channel-is-supported.patch</Patch>-->
|
||||||
|
<!--<Patch level="1">0002-nl80211-Set-cipher-suites-when-using-user-space-SME.patch</Patch>-->
|
||||||
|
<!--<Patch level="1">0003-dbus-Emit-property-changed-events-when-adding-removi.patch</Patch>-->
|
||||||
|
</Patches>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>wpa_supplicant</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>libnl</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="config">/etc</Path>
|
||||||
|
<Path fileType="data">/etc/dbus-1</Path>
|
||||||
|
<Path fileType="executable">/usr/sbin</Path>
|
||||||
|
<Path fileType="executable">/usr/bin</Path>
|
||||||
|
<Path fileType="library">/usr/lib</Path>
|
||||||
|
<Path fileType="doc">/usr/share/doc</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
<Path fileType="data">/usr/share/dbus-1/system-services</Path>
|
||||||
|
<Path fileType="data">/run</Path>
|
||||||
|
</Files>
|
||||||
|
<AdditionalFiles>
|
||||||
|
<AdditionalFile owner="root" permission="0600" target="/etc/wpa_supplicant.conf">wpa_supplicant.conf</AdditionalFile>
|
||||||
|
<!-- This is the fedora one
|
||||||
|
<AdditionalFile owner="root" permission="0600" target="/etc/wpa_supplicant.conf">wpa_supplicant.conf.fedora</AdditionalFile>
|
||||||
|
-->
|
||||||
|
<AdditionalFile owner="root" permission="0644" target="/etc/conf.d/wpa_supplicant">wpa_supplicant.confd</AdditionalFile>
|
||||||
|
<AdditionalFile owner="root" permission="0644" target="/etc/logrotate.d/wpa_supplicant">wpa_supplicant.logrotate</AdditionalFile>
|
||||||
|
<AdditionalFile owner="root" permission="0644" target="/usr/lib/python2.7/site-packages/wpa_supplicant.py">wpa_supplicant.py</AdditionalFile>
|
||||||
|
</AdditionalFiles>
|
||||||
|
<!-- This service is not started by default since NM starts it automatically. Keep service for those not using NM and start wpa-supp service manually -->
|
||||||
|
<Provides>
|
||||||
|
<COMAR script="service.py">System.Service</COMAR>
|
||||||
|
</Provides>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2014-06-02</Date>
|
||||||
|
<Version>2.1</Version>
|
||||||
|
<Comment>Version Bump.</Comment>
|
||||||
|
<Name>Aydın Demirel</Name>
|
||||||
|
<Email>aydin.demirel@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2013-03-02</Date>
|
||||||
|
<Version>2.0</Version>
|
||||||
|
<Comment>V.Bump</Comment>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2012-10-14</Date>
|
||||||
|
<Version>1.0</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>wpa_supplicant</Name>
|
||||||
|
<Summary xml:lang="tr">Güvenli kablosuz erişim için IEEE 802.1X/WPA sağlayıcı</Summary>
|
||||||
|
<Description xml:lang="tr">WPA ve WPA2 desteği olan ve Linux, BSD ve Windows ortamları için bir WPA istemcisidir.</Description>
|
||||||
|
</Source>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<PISI>
|
||||||
|
<Name>network.filter</Name>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
autotools.configure()
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make('CC="%s" RPM_OPT_FLAGS="%s"' % (get.CC(), get.CFLAGS()))
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.rawInstall("DESTDIR=\"%s\" \
|
||||||
|
SBINDIR=/sbin \
|
||||||
|
DOCDIR=/%s/%s \
|
||||||
|
MANDIR=/usr/share/man \
|
||||||
|
" % (get.installDIR(), get.docDIR(), get.srcNAME()))
|
||||||
|
|
||||||
|
pisitools.dodir("/usr/sbin")
|
||||||
|
pisitools.dodir("/var/lib/arpd")
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
diff -up iproute2-2.6.29/ip/ipxfrm.c.old iproute2-2.6.29/ip/ipxfrm.c
|
||||||
|
--- iproute2-2.6.29/ip/ipxfrm.c.old 2009-03-24 23:15:14.000000000 +0100
|
||||||
|
+++ iproute2-2.6.29/ip/ipxfrm.c 2009-04-24 09:35:58.203735119 +0200
|
||||||
|
@@ -1156,6 +1156,7 @@ static int xfrm_selector_upspec_parse(st
|
||||||
|
case IPPROTO_UDP:
|
||||||
|
case IPPROTO_SCTP:
|
||||||
|
case IPPROTO_DCCP:
|
||||||
|
+ case IPPROTO_IP: /* to allow shared SA for different protocols */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "\"sport\" and \"dport\" are invalid with proto=%s\n", strxf_proto(sel->proto));
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
diff -up iproute2-20091009/Makefile.kernel iproute2-20091009/Makefile
|
||||||
|
--- iproute2-20091009/Makefile.kernel 2009-09-21 10:26:11.000000000 +0200
|
||||||
|
+++ iproute2-20091009/Makefile 2009-10-09 12:27:03.687382422 +0200
|
||||||
|
@@ -6,6 +6,7 @@ CONFDIR=/etc/iproute2
|
||||||
|
DOCDIR=/share/doc/iproute2
|
||||||
|
MANDIR=/share/man
|
||||||
|
ARPDDIR=/var/lib/arpd
|
||||||
|
+KERNEL_INCLUDE=/usr/include
|
||||||
|
|
||||||
|
# Path to db_185.h include
|
||||||
|
DBM_INCLUDE:=$(ROOTDIR)/usr/include
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
diff -up iproute2-2.6.31/Makefile.old iproute2-2.6.31/Makefile
|
||||||
|
--- iproute2-2.6.31/Makefile.old 2010-01-04 12:46:47.000000000 +0100
|
||||||
|
+++ iproute2-2.6.31/Makefile 2010-01-04 12:50:17.396384644 +0100
|
||||||
|
@@ -13,7 +13,7 @@ DBM_INCLUDE:=$(ROOTDIR)/usr/include
|
||||||
|
|
||||||
|
SHARED_LIBS = y
|
||||||
|
|
||||||
|
-DEFINES= -DRESOLVE_HOSTNAMES -DLIBDIR=\"$(LIBDIR)\"
|
||||||
|
+DEFINES= -DRESOLVE_HOSTNAMES -DLIBDIR=\"$(LIBDIR)\" -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\"
|
||||||
|
ifneq ($(SHARED_LIBS),y)
|
||||||
|
DEFINES+= -DNO_SHARED_LIBS
|
||||||
|
endif
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
diff -up iproute2-20091106/examples/cbq.init-v0.7.3.fix iproute2-20091106/examples/cbq.init-v0.7.3
|
||||||
|
--- iproute2-20091106/examples/cbq.init-v0.7.3.fix 2009-11-10 19:41:44.000000000 +0100
|
||||||
|
+++ iproute2-20091106/examples/cbq.init-v0.7.3 2009-11-27 13:36:07.957310549 +0100
|
||||||
|
@@ -579,14 +579,14 @@ cbq_show () {
|
||||||
|
### Check configuration and load DEVICES, DEVFIELDS and CLASSLIST from $1
|
||||||
|
cbq_init () {
|
||||||
|
### Get a list of configured classes
|
||||||
|
- CLASSLIST=`find $1 \( -type f -or -type l \) -name 'cbq-*' \
|
||||||
|
- -not -name '*~' -maxdepth 1 -printf "%f\n"| sort`
|
||||||
|
+ CLASSLIST=`find $1 -maxdepth 1 \( -type f -or -type l \) -name 'cbq-*' \
|
||||||
|
+ -not -name '*~' -printf "%f\n"| sort`
|
||||||
|
[ -z "$CLASSLIST" ] &&
|
||||||
|
cbq_failure "no configuration files found in $1!"
|
||||||
|
|
||||||
|
### Gather all DEVICE fields from $1/cbq-*
|
||||||
|
- DEVFIELDS=`find $1 \( -type f -or -type l \) -name 'cbq-*' \
|
||||||
|
- -not -name '*~' -maxdepth 1| xargs sed -n 's/#.*//; \
|
||||||
|
+ DEVFIELDS=`find $1 -maxdepth 1 \( -type f -or -type l \) -name 'cbq-*' \
|
||||||
|
+ -not -name '*~' | xargs sed -n 's/#.*//; \
|
||||||
|
s/[[:space:]]//g; /^DEVICE=[^,]*,[^,]*\(,[^,]*\)\?/ \
|
||||||
|
{ s/.*=//; p; }'| sort -u`
|
||||||
|
[ -z "$DEVFIELDS" ] &&
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
From: Jan Engelhardt <jengelh@medozas.de>
|
||||||
|
Date: 2011-06-01 00:52:29+0200
|
||||||
|
|
||||||
|
---
|
||||||
|
tc/m_xt.c | 6 ++++--
|
||||||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
Index: iproute2-2.6.38/tc/m_xt.c
|
||||||
|
===================================================================
|
||||||
|
--- iproute2-2.6.38.orig/tc/m_xt.c
|
||||||
|
+++ iproute2-2.6.38/tc/m_xt.c
|
||||||
|
@@ -162,7 +162,8 @@ static int parse_ipt(struct action_util
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
tcipt_globals.opts =
|
||||||
|
- xtables_merge_options(tcipt_globals.opts,
|
||||||
|
+ xtables_merge_options(tcipt_globals.orig_opts,
|
||||||
|
+ tcipt_globals.opts,
|
||||||
|
m->extra_opts,
|
||||||
|
&m->option_offset);
|
||||||
|
} else {
|
||||||
|
@@ -307,7 +308,8 @@ print_ipt(struct action_util *au,FILE *
|
||||||
|
}
|
||||||
|
|
||||||
|
tcipt_globals.opts =
|
||||||
|
- xtables_merge_options(tcipt_globals.opts,
|
||||||
|
+ xtables_merge_options(tcipt_globals.orig_opts,
|
||||||
|
+ tcipt_globals.opts,
|
||||||
|
m->extra_opts,
|
||||||
|
&m->option_offset);
|
||||||
|
} else {
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
From: Jan Engelhardt <jengelh@medozas.de>
|
||||||
|
Date: 2011-06-01 00:52:07+0200
|
||||||
|
|
||||||
|
---
|
||||||
|
tc/m_xt.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
Index: iproute2-2.6.37/tc/m_xt.c
|
||||||
|
===================================================================
|
||||||
|
--- iproute2-2.6.37.orig/tc/m_xt.c
|
||||||
|
+++ iproute2-2.6.37/tc/m_xt.c
|
||||||
|
@@ -343,8 +343,8 @@ print_ipt(struct action_util *au,FILE *
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-struct action_util ipt_action_util = {
|
||||||
|
- .id = "ipt",
|
||||||
|
+struct action_util xt_action_util = {
|
||||||
|
+ .id = "xt",
|
||||||
|
.parse_aopt = parse_ipt,
|
||||||
|
.print_aopt = print_ipt,
|
||||||
|
};
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>iproute2</Name>
|
||||||
|
<Homepage>http://linux-net.osdl.org/index.php/Iproute2</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>GPLv2</License>
|
||||||
|
<IsA>app:console</IsA>
|
||||||
|
<Summary>Kernel routing and traffic control utilities</Summary>
|
||||||
|
<Description>Iproute2 is a collection of utilites for controlling TCP/IP networking and traffic control in Linux.</Description>
|
||||||
|
<Archive sha1sum="d24385ae619966d1bd71e146322d6035d60aaa1a" type="tarxz">https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.0.0.tar.xz</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>iptables-devel</Dependency>
|
||||||
|
<Dependency>linux-atm-devel</Dependency>
|
||||||
|
<Dependency>db-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>iproute2</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>linux-atm</Dependency>
|
||||||
|
<Dependency>iptables</Dependency>
|
||||||
|
<Dependency>db</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="config">/etc</Path>
|
||||||
|
<Path fileType="executable">/sbin</Path>
|
||||||
|
<Path fileType="executable">/usr/sbin</Path>
|
||||||
|
<Path fileType="library">/lib</Path>
|
||||||
|
<Path fileType="library">/usr/lib</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
<Path fileType="doc">/usr/share/doc</Path>
|
||||||
|
<Path fileType="data">/var/lib</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2015-04-13</Date>
|
||||||
|
<Version>4.0.0</Version>
|
||||||
|
<Comment>Version bump.</Comment>
|
||||||
|
<Name>Ertuğrul Erata</Name>
|
||||||
|
<Email>ertugrulerata@gmail.com</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2013-11-23</Date>
|
||||||
|
<Version>3.12.0</Version>
|
||||||
|
<Comment>Version bump</Comment>
|
||||||
|
<Name>Richard de Bruin</Name>
|
||||||
|
<Email>richdb@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2012-09-01</Date>
|
||||||
|
<Version>3.5.1</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>iproute2</Name>
|
||||||
|
<Summary xml:lang="tr">Çekirdek içinde yer alan ağ trafiği yönlendirme ve trafik kontrol araçları.</Summary>
|
||||||
|
<Description xml:lang="tr">Iproute2 TCP/IP ağları ve trafik kontrolü için araçlar içeren bir koolleksiyondur.</Description>
|
||||||
|
</Source>
|
||||||
|
</PISI>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Licensed under the GNU General Public License, version 3.
|
||||||
|
# See the file http://www.gnu.org/licenses/gpl.txt
|
||||||
|
|
||||||
|
from pisi.actionsapi import autotools
|
||||||
|
from pisi.actionsapi import pisitools
|
||||||
|
from pisi.actionsapi import shelltools
|
||||||
|
from pisi.actionsapi import get
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
autotools.configure("--sbindir=/sbin \
|
||||||
|
--libexecdir=/usr/lib \
|
||||||
|
--without-kernel \
|
||||||
|
--enable-devel \
|
||||||
|
--enable-libipq \
|
||||||
|
--enable-shared \
|
||||||
|
--enable-static")
|
||||||
|
|
||||||
|
def build():
|
||||||
|
autotools.make("V=1")
|
||||||
|
|
||||||
|
def install():
|
||||||
|
autotools.rawInstall('DESTDIR="%s"' % get.installDIR())
|
||||||
|
|
||||||
|
pisitools.insinto("/usr/include", "include/iptables.h")
|
||||||
|
pisitools.insinto("/usr/include", "include/ip6tables.h")
|
||||||
|
pisitools.insinto("/usr/include/libiptc", "include/libiptc/*.h")
|
||||||
|
|
||||||
|
pisitools.dodir("/var/lib/iptables")
|
||||||
|
pisitools.dodir("/etc/iptables")
|
||||||
@@ -0,0 +1,528 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# i18n
|
||||||
|
|
||||||
|
MSG_CONNECTION_NAME = {
|
||||||
|
"en": "Internet Sharing",
|
||||||
|
"tr": "Internet Paylaşımı",
|
||||||
|
"sv": "Internetdelning",
|
||||||
|
"fr": "Partage de connexion Internet",
|
||||||
|
"es": "Compartir Internet",
|
||||||
|
"de": "Internet Freigabe",
|
||||||
|
"nl": "Internetverbinding delen",
|
||||||
|
}
|
||||||
|
|
||||||
|
MSG_ALLOWED_PORTS = {
|
||||||
|
"en": "Allowed Port Numbers",
|
||||||
|
"tr": "İzin Verilen Port Numaraları",
|
||||||
|
"sv": "Tillåtna portar",
|
||||||
|
"fr": "Numéros de port autorisés",
|
||||||
|
"es": "Números de puertos permitidos",
|
||||||
|
"de": "Erlaubte Ports",
|
||||||
|
"nl": "Toegestane poortnummers",
|
||||||
|
}
|
||||||
|
|
||||||
|
MSG_FORBIDDEN_PORTS = {
|
||||||
|
"en": "Forbidden Port Numbers",
|
||||||
|
"tr": "İzin Verilmeyen Port Numaraları",
|
||||||
|
"sv": "Otillåtna portar",
|
||||||
|
"nl": "Verboden poortnummers",
|
||||||
|
}
|
||||||
|
|
||||||
|
MSG_GATEWAY_HOME = {
|
||||||
|
"en": "Gate to Home Network",
|
||||||
|
"tr": "Ev Ağına Çıkış",
|
||||||
|
"sv": "Länk till lokalt nätverk",
|
||||||
|
"fr": "Passerelle vers le réseau local",
|
||||||
|
"es": "Enlace a la red doméstica",
|
||||||
|
"de": "Gateway zum Haus-Netzwerk",
|
||||||
|
"nl": "Gateway naar thuisnetwerk",
|
||||||
|
}
|
||||||
|
|
||||||
|
MSG_GATEWAY_INTERNET = {
|
||||||
|
"en": "Gate to Internet",
|
||||||
|
"tr": "Internet'e Çıkış",
|
||||||
|
"sv": "Länk till internet",
|
||||||
|
"fr": "Passerelle vers Internet",
|
||||||
|
"es": "Enlace a Internet",
|
||||||
|
"de": "Gateway zum Internet",
|
||||||
|
"nl": "Gateway naar Internet",
|
||||||
|
}
|
||||||
|
|
||||||
|
TITLE_BLOCK_INCOMING = {
|
||||||
|
"en": "Block Incoming Connections",
|
||||||
|
"tr": "Gelen Bağlantıları Engelle",
|
||||||
|
"sv": "Blockera inkommande anslutningar",
|
||||||
|
"fr": "Bloquer les connexions entrantes",
|
||||||
|
"es": "Bloquear conexiones entrantes",
|
||||||
|
"de": "Eingehende Verbindungen blockieren",
|
||||||
|
"nl": "Inkomende verbindingen blokkeren",
|
||||||
|
}
|
||||||
|
DESCRIPTION_BLOCK_INCOMING = {
|
||||||
|
"en": "Blocks all incoming connections to the computer. Exceptions can be set from configuration dialog.",
|
||||||
|
"tr": "Bilgisayara gelen tüm bağlantıları engeller. İstisnalar ayarlar penceresinden belirlenebilir.",
|
||||||
|
"sv": "Blockerar alla inkommande anslutningar till datorn. Undantag kan läggas till under inställningar.",
|
||||||
|
"fr": "Bloque toute les connexions entrantes dans l'ordinateur. Des exceptions peuvent être définies dans la fenêtre de configuration.",
|
||||||
|
"es": "Bloquea todas las conexiones entrantes a la computadora. Se puede especificar excepciones desde el dialogo de configuración.",
|
||||||
|
"de": "Blockiert alle eingehenden Verbindungen. Im Konfigurations-Dialog können Ausnahmen angegeben werden.",
|
||||||
|
"nl": "Alle inkomende verbindingen naar deze computer blokkeren. Uitzonderingen kunnen in een configuratiedialoog ingesteld worden.",
|
||||||
|
}
|
||||||
|
|
||||||
|
TITLE_BLOCK_OUTGOING = {
|
||||||
|
"en": "Block Outgoing Connections",
|
||||||
|
"tr": "Giden Bağlantıları Engelle",
|
||||||
|
"sv": "Blockera utgående anslutningar",
|
||||||
|
"fr": "Bloquer les connexions sortantes",
|
||||||
|
"es": "Bloquear conexiones salientes",
|
||||||
|
"de": "Ausgehende Verbindungen blockieren",
|
||||||
|
"nl": "Uitgaande verbindingen blokkeren",
|
||||||
|
}
|
||||||
|
DESCRIPTION_BLOCK_OUTGOING = {
|
||||||
|
"en": "Blocks outgoing connections. Forbidden ports can be set from configuration dialog.",
|
||||||
|
"tr": "Dışarı yapılan bağlantıları engeller. Yasaklı port numaraları ayarlar penceresinden belirlenebilir.",
|
||||||
|
"sv": "Blockerar alla utgående anslutningar till datorn. Undantag kan läggas till under inställningar.",
|
||||||
|
"nl": "Uitgaande verbindingen blokkeren. Verboden poorten kunnen in een configuratiedialoog ingesteld worden.",
|
||||||
|
}
|
||||||
|
|
||||||
|
TITLE_INTERNET_SHARING = {
|
||||||
|
"en": "Internet Sharing",
|
||||||
|
"tr": "Internet Paylaşımı",
|
||||||
|
"sv": "Internetdelning",
|
||||||
|
"fr": "Partage de connexion Internet",
|
||||||
|
"es": "Compartir Internet",
|
||||||
|
"de": "Internet Freigabe",
|
||||||
|
"nl": "Internetverbinding delen",
|
||||||
|
}
|
||||||
|
DESCRIPTION_INTERNET_SHARING = {
|
||||||
|
"en": "Allows computers in your local network to connect Internet through this computer.",
|
||||||
|
"tr": "Yerel ağınızdaki bilgisayarların, bu bilgisayarı kullanarak Internet'e bağlanmalarını sağlar.",
|
||||||
|
"sv": "Låter datorer i det lokala nätverket ansluta till internet via den här datorn.",
|
||||||
|
"fr": "Permet aux ordinateurs de votre réseau domestique de se connecter à Internet via cet ordinateur.",
|
||||||
|
"es": "Permitir a otros computadoras en su red local acceder a la Internet, a través de ésta computadora",
|
||||||
|
"de": "Gibt anderen Computern aus dem lokalen Netzwer die Mäglichkeit, Internet durch diesen Computer hier zu benutzen.",
|
||||||
|
"nl": "Geeft andere computers in het lokale netwerk via deze computer toegang tot het internet.",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Don't touch below, if you don't know what you're doing.
|
||||||
|
|
||||||
|
# Module configuration settings and templates
|
||||||
|
|
||||||
|
FIREWALL_CONF = "/etc/firewall.conf"
|
||||||
|
|
||||||
|
IPTABLES_RULES = {
|
||||||
|
'filter': [
|
||||||
|
'-P INPUT DROP', # Default policies
|
||||||
|
'-P FORWARD DROP',
|
||||||
|
'-P OUTPUT ACCEPT',
|
||||||
|
'-N PARDUS-IN', # Module container table for INPUT
|
||||||
|
'-N PARDUS-IN-MOD-BLOCK', # Table for BlockIncoming rules
|
||||||
|
'-N PARDUS-FW', # Module container table for FORWARD
|
||||||
|
'-N PARDUS-FW-MOD-SHARING', # Table for InternetSharingModule rules
|
||||||
|
'-N PARDUS-FW-MOD-BLOCK', # Table for BlockOutgoing rules
|
||||||
|
'-N PARDUS-OUT', # Module container table for OUTPUT
|
||||||
|
'-N PARDUS-OUT-MOD-BLOCK', # Table for BlockOutgoing rules
|
||||||
|
'-A INPUT -i lo -j ACCEPT', # Accept local
|
||||||
|
'-A FORWARD -o lo -j ACCEPT',
|
||||||
|
'-A INPUT -m state --state INVALID -j DROP',
|
||||||
|
'-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT',
|
||||||
|
'-A INPUT -j PARDUS-IN', # Jump into container tables
|
||||||
|
'-A FORWARD -j PARDUS-FW',
|
||||||
|
'-A OUTPUT -j PARDUS-OUT',
|
||||||
|
'-A PARDUS-IN -j PARDUS-IN-MOD-BLOCK' , # Jump into module tables
|
||||||
|
'-A PARDUS-FW -j PARDUS-FW-MOD-BLOCK',
|
||||||
|
'-A PARDUS-FW -j PARDUS-FW-MOD-SHARING',
|
||||||
|
'-A PARDUS-OUT -j PARDUS-OUT-MOD-BLOCK',
|
||||||
|
'-A INPUT -m state --state NEW -j ACCEPT',
|
||||||
|
],
|
||||||
|
'nat': [
|
||||||
|
'-P PREROUTING ACCEPT',
|
||||||
|
'-P POSTROUTING ACCEPT',
|
||||||
|
'-P OUTPUT ACCEPT',
|
||||||
|
'-N PARDUS-POST',
|
||||||
|
'-N PARDUS-POST-MOD-SHARING',
|
||||||
|
'-A POSTROUTING -j PARDUS-POST',
|
||||||
|
'-A PARDUS-POST -j PARDUS-POST-MOD-SHARING',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
DHCPD_CONF = """
|
||||||
|
ddns-update-style interim;
|
||||||
|
ignore client-updates;
|
||||||
|
max-lease-time 500;
|
||||||
|
default-lease-time 500;
|
||||||
|
option domain-name-servers 193.140.100.220;
|
||||||
|
option routers 172.16.0.1;
|
||||||
|
option subnet-mask 255.255.255.0;
|
||||||
|
subnet 172.16.0.0 netmask 255.255.255.0 {
|
||||||
|
range 172.16.0.2 172.16.0.254;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Utils
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
from pardus import iniutils
|
||||||
|
from pardus import netutils
|
||||||
|
from pardus import netfilterutils
|
||||||
|
|
||||||
|
INI = iniutils.iniParser(FIREWALL_CONF)
|
||||||
|
|
||||||
|
def listModuleConfigs():
|
||||||
|
"""
|
||||||
|
Returns a list of modules that are configured.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
modules = INI.listSections()
|
||||||
|
except iniutils.iniParserError:
|
||||||
|
return
|
||||||
|
if "general" in modules:
|
||||||
|
modules.remove("general")
|
||||||
|
return modules
|
||||||
|
|
||||||
|
class ModuleConfig:
|
||||||
|
"""
|
||||||
|
Module configuration parser.
|
||||||
|
"""
|
||||||
|
def __init__(self, name):
|
||||||
|
self.name = name
|
||||||
|
try:
|
||||||
|
self.info = INI.getSection(name)
|
||||||
|
except iniutils.iniParserError:
|
||||||
|
self.info = {}
|
||||||
|
|
||||||
|
def delete(self):
|
||||||
|
INI.removeSection(self.name)
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
is_new = self.name not in listModuleConfigs()
|
||||||
|
INI.setSection(self.name, self.info)
|
||||||
|
|
||||||
|
def getServiceState(package):
|
||||||
|
"""
|
||||||
|
Returns state of a service.
|
||||||
|
"""
|
||||||
|
return call(package, "System.Service", "info")[2] in ["on", "started"]
|
||||||
|
|
||||||
|
def stopService(package, permanent=False):
|
||||||
|
"""
|
||||||
|
Stops a service.
|
||||||
|
"""
|
||||||
|
call(package, "System.Service", "stop")
|
||||||
|
if permanent:
|
||||||
|
call(package, "System.Service", "setState", ("off"))
|
||||||
|
|
||||||
|
def startService(package, restart=False, auto_start=False):
|
||||||
|
"""
|
||||||
|
Starts a service.
|
||||||
|
"""
|
||||||
|
if restart:
|
||||||
|
stopService(package)
|
||||||
|
if not getServiceState(package):
|
||||||
|
call(package, "System.Service", "start")
|
||||||
|
if auto_start:
|
||||||
|
call(package, "System.Service", "setState", ("on"))
|
||||||
|
|
||||||
|
def initializeIPTables():
|
||||||
|
"""
|
||||||
|
Initializes IPTables.
|
||||||
|
"""
|
||||||
|
# Active rules
|
||||||
|
rules_active = netfilterutils.parseConf(netfilterutils.getRules())
|
||||||
|
|
||||||
|
# Compare rules
|
||||||
|
for chain, rules in IPTABLES_RULES.iteritems():
|
||||||
|
if chain not in rules_active or len(set(rules) - set(rules_active[chain])):
|
||||||
|
# At least one different rule, need re-initialization
|
||||||
|
netfilterutils.clear()
|
||||||
|
conf = netfilterutils.makeConf(IPTABLES_RULES)
|
||||||
|
netfilterutils.restoreRules(conf)
|
||||||
|
break
|
||||||
|
|
||||||
|
def execRule(rule):
|
||||||
|
"""
|
||||||
|
Executes IPTables rule
|
||||||
|
"""
|
||||||
|
rule = rule.split()
|
||||||
|
rule.insert(0, "/sbin/iptables")
|
||||||
|
subprocess.call(rule)
|
||||||
|
|
||||||
|
def createConnection(package, device):
|
||||||
|
import comar
|
||||||
|
link = comar.Link()
|
||||||
|
connection = _(MSG_CONNECTION_NAME)
|
||||||
|
link.Network.Link[package].setDevice(connection, device)
|
||||||
|
link.Network.Link[package].setAddress(connection, "manual", "172.16.0.1", "255.255.255.0", "")
|
||||||
|
return connection
|
||||||
|
|
||||||
|
def findOrCreateConnection(link, device):
|
||||||
|
o_package, o_connecion = None, None
|
||||||
|
for package in link.Network.Link:
|
||||||
|
if device in link.Network.Link[package].deviceList():
|
||||||
|
for connection in link.Network.Link[package].connections():
|
||||||
|
info = link.Network.Link[package].connectionInfo(connection)
|
||||||
|
if info.get("net_address", "") == "172.16.0.1":
|
||||||
|
return package, connection
|
||||||
|
return package, createConnection(package, device)
|
||||||
|
|
||||||
|
def makeDHCPConf(interface):
|
||||||
|
file("/etc/dhcp/dhcpd.conf", "w").write(DHCPD_CONF)
|
||||||
|
file("/etc/conf.d/dhcpd", "w").write("DHCPD_IFACE=%s" % interface)
|
||||||
|
|
||||||
|
# Modules
|
||||||
|
|
||||||
|
class BlockIncoming:
|
||||||
|
def __init__(self):
|
||||||
|
self.parametersLast = {}
|
||||||
|
|
||||||
|
def getInfo(self):
|
||||||
|
title = _(TITLE_BLOCK_INCOMING)
|
||||||
|
description = _(DESCRIPTION_BLOCK_INCOMING)
|
||||||
|
icon = "network-server"
|
||||||
|
return (title, description, icon)
|
||||||
|
|
||||||
|
def getParameters(self):
|
||||||
|
parameters = [
|
||||||
|
("port_exceptions", _(MSG_ALLOWED_PORTS), "editlist", {"format": "[0-9\-]+"}),
|
||||||
|
]
|
||||||
|
return parameters
|
||||||
|
|
||||||
|
def checkModule(self, parameters={}, quiet=False):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def loadModule(self, parameters={}):
|
||||||
|
# Initialize IPTables
|
||||||
|
initializeIPTables()
|
||||||
|
# Flush rules
|
||||||
|
self.unloadModule()
|
||||||
|
# Load rules
|
||||||
|
for port in parameters.get("port_exceptions", "").split():
|
||||||
|
if "-" in port:
|
||||||
|
port = port.replace("-", ":")
|
||||||
|
execRule("-A PARDUS-IN-MOD-BLOCK -p tcp -m multiport --dports %s -j ACCEPT" % port)
|
||||||
|
execRule("-A PARDUS-IN-MOD-BLOCK -p udp -m multiport --dports %s -j ACCEPT" % port)
|
||||||
|
# Block else...
|
||||||
|
execRule("-A PARDUS-IN-MOD-BLOCK -p tcp -m multiport --dports 0:1024 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with icmp-port-unreachable")
|
||||||
|
execRule("-A PARDUS-IN-MOD-BLOCK -p udp -m multiport --dports 0:1024 -j REJECT --reject-with icmp-port-unreachable")
|
||||||
|
execRule("-A PARDUS-IN-MOD-BLOCK -j REJECT --reject-with icmp-host-prohibited")
|
||||||
|
|
||||||
|
def unloadModule(self, shutdown=False):
|
||||||
|
if not shutdown:
|
||||||
|
# Unload rules
|
||||||
|
execRule("-F PARDUS-IN-MOD-BLOCK")
|
||||||
|
|
||||||
|
|
||||||
|
class BlockOutgoing:
|
||||||
|
def __init__(self):
|
||||||
|
self.parametersLast = {}
|
||||||
|
|
||||||
|
def getInfo(self):
|
||||||
|
title = _(TITLE_BLOCK_OUTGOING)
|
||||||
|
description = _(DESCRIPTION_BLOCK_OUTGOING)
|
||||||
|
icon = "security-medium"
|
||||||
|
return (title, description, icon)
|
||||||
|
|
||||||
|
def getParameters(self):
|
||||||
|
parameters = [
|
||||||
|
("port_exceptions", _(MSG_FORBIDDEN_PORTS), "editlist", {"format": "[0-9\-]+"}),
|
||||||
|
]
|
||||||
|
return parameters
|
||||||
|
|
||||||
|
def checkModule(self, parameters={}, quiet=False):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def loadModule(self, parameters={}):
|
||||||
|
# Initialize IPTables
|
||||||
|
initializeIPTables()
|
||||||
|
# Flush rules
|
||||||
|
self.unloadModule()
|
||||||
|
# Load rules
|
||||||
|
for port in parameters.get("port_exceptions", "").split():
|
||||||
|
if "-" in port:
|
||||||
|
port = port.replace("-", ":")
|
||||||
|
execRule("-A PARDUS-OUT-MOD-BLOCK -p tcp -m multiport --dports %s -j DROP" % port)
|
||||||
|
execRule("-A PARDUS-OUT-MOD-BLOCK -p udp -m multiport --dports %s -j DROP" % port)
|
||||||
|
execRule("-A PARDUS-FW-MOD-BLOCK -p tcp -m multiport --dports %s -j DROP" % port)
|
||||||
|
execRule("-A PARDUS-FW-MOD-BLOCK -p udp -m multiport --dports %s -j DROP" % port)
|
||||||
|
|
||||||
|
def unloadModule(self, shutdown=False):
|
||||||
|
if not shutdown:
|
||||||
|
# Unload rules
|
||||||
|
execRule("-F PARDUS-OUT-MOD-BLOCK")
|
||||||
|
execRule("-F PARDUS-FW-MOD-BLOCK")
|
||||||
|
|
||||||
|
|
||||||
|
class InternetSharingModule:
|
||||||
|
def __init__(self):
|
||||||
|
self.parametersLast = {}
|
||||||
|
|
||||||
|
def getInfo(self):
|
||||||
|
title = _(TITLE_INTERNET_SHARING)
|
||||||
|
description = _(DESCRIPTION_INTERNET_SHARING)
|
||||||
|
icon = "network-workgroup"
|
||||||
|
return (title, description, icon)
|
||||||
|
|
||||||
|
def getParameters(self):
|
||||||
|
def findInterfaces(wireless=True):
|
||||||
|
ifaces = []
|
||||||
|
for iface in netutils.interfaces():
|
||||||
|
if iface.name.startswith("lo") or iface.name.startswith("pan"):
|
||||||
|
continue
|
||||||
|
if not wireless and iface.isWireless():
|
||||||
|
continue
|
||||||
|
if iface.isEthernet():
|
||||||
|
dev_id = iface.deviceUID()
|
||||||
|
dev_name = netutils.deviceName(iface.deviceUID())
|
||||||
|
if " - " in dev_name:
|
||||||
|
dev_name = dev_name.split(" - ")[1]
|
||||||
|
ifaces.append("%s\t%s" % (dev_id, dev_name))
|
||||||
|
return ifaces
|
||||||
|
options_in = {
|
||||||
|
"choose": "\n".join(findInterfaces())
|
||||||
|
}
|
||||||
|
options_out = {
|
||||||
|
"choose": "\n".join(findInterfaces(wireless=False))
|
||||||
|
}
|
||||||
|
parameters = [
|
||||||
|
("device-input", _(MSG_GATEWAY_INTERNET), "combo", options_in),
|
||||||
|
("device-output", _(MSG_GATEWAY_HOME), "combo", options_out),
|
||||||
|
]
|
||||||
|
return parameters
|
||||||
|
|
||||||
|
def checkModule(self, parameters={}, quiet=False):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def loadModule(self, parameters={}):
|
||||||
|
# Initialize IPTables
|
||||||
|
initializeIPTables()
|
||||||
|
# Flush rules
|
||||||
|
self.unloadModule()
|
||||||
|
# Enable forwarding
|
||||||
|
os.system("echo 1 > /proc/sys/net/ipv4/ip_forward")
|
||||||
|
os.system("echo 1 > /proc/sys/net/ipv4/ip_dynaddr")
|
||||||
|
# Load rules
|
||||||
|
input = parameters.get("device-input", "")
|
||||||
|
output = parameters.get("device-output", "")
|
||||||
|
if input and output and input != output:
|
||||||
|
in_name = input.split("_")[-1]
|
||||||
|
out_name = output.split("_")[-1]
|
||||||
|
execRule("-A PARDUS-FW-MOD-SHARING -i %s -o %s -m state --state ESTABLISHED,RELATED -j ACCEPT" % (in_name, out_name))
|
||||||
|
execRule("-A PARDUS-FW-MOD-SHARING -i %s -o %s -j ACCEPT" % (out_name, in_name))
|
||||||
|
execRule("-t nat -A PARDUS-POST-MOD-SHARING -o %s -j MASQUERADE" % in_name)
|
||||||
|
# Create local NAT profile
|
||||||
|
import comar
|
||||||
|
link = comar.Link()
|
||||||
|
package, connection = findOrCreateConnection(link, output)
|
||||||
|
link.Network.Link[package].setState(connection, "up")
|
||||||
|
# Configure DHCP
|
||||||
|
makeDHCPConf(out_name)
|
||||||
|
# Start DHCP
|
||||||
|
startService("dhcpd", restart=True)
|
||||||
|
|
||||||
|
def unloadModule(self, shutdown=False):
|
||||||
|
# Stop DHCP
|
||||||
|
stopService("dhcpd")
|
||||||
|
if not shutdown:
|
||||||
|
# Unload rules
|
||||||
|
execRule("-F PARDUS-FW-MOD-SHARING")
|
||||||
|
execRule("-P PARDUS-FW-MOD-SHARING ACCEPT")
|
||||||
|
execRule("-t nat -F PARDUS-POST-MOD-SHARING")
|
||||||
|
|
||||||
|
|
||||||
|
# Usable modules
|
||||||
|
MODULES = {
|
||||||
|
"internet_sharing": InternetSharingModule,
|
||||||
|
"block_incoming": BlockIncoming,
|
||||||
|
"block_outgoing": BlockOutgoing,
|
||||||
|
}
|
||||||
|
|
||||||
|
# Network.Firewall model
|
||||||
|
|
||||||
|
def listModules():
|
||||||
|
return MODULES.keys()
|
||||||
|
|
||||||
|
def moduleInfo(module):
|
||||||
|
inst = MODULES[module]()
|
||||||
|
return inst.getInfo()
|
||||||
|
|
||||||
|
def moduleParameters(module):
|
||||||
|
inst = MODULES[module]()
|
||||||
|
return inst.getParameters()
|
||||||
|
|
||||||
|
def getModuleState(module):
|
||||||
|
info = ModuleConfig(module).info
|
||||||
|
return info.get("state", "off")
|
||||||
|
|
||||||
|
def setModuleState(name, state):
|
||||||
|
if state in ["on", "off"]:
|
||||||
|
# Save state
|
||||||
|
module = ModuleConfig(name)
|
||||||
|
module.info["state"] = state
|
||||||
|
module.save()
|
||||||
|
# Execute module if firewall is active
|
||||||
|
if getState() == "on":
|
||||||
|
inst = MODULES[name]()
|
||||||
|
if state == "on":
|
||||||
|
inst.loadModule(getModuleParameters(name))
|
||||||
|
else:
|
||||||
|
inst.unloadModule()
|
||||||
|
# Notify clients
|
||||||
|
notify("Network.Firewall", "moduleStateChanged", (name, state))
|
||||||
|
|
||||||
|
def getModuleParameters(module):
|
||||||
|
info = ModuleConfig(module).info
|
||||||
|
return info
|
||||||
|
|
||||||
|
def setModuleParameters(name, parameters):
|
||||||
|
# Save module parameters
|
||||||
|
module = ModuleConfig(name)
|
||||||
|
for key, value in parameters.iteritems():
|
||||||
|
module.info[key] = value
|
||||||
|
module.save()
|
||||||
|
# Execute module if it's active
|
||||||
|
if getState() == "on" and getModuleState(name) == "on":
|
||||||
|
inst = MODULES[name]()
|
||||||
|
inst.checkModule(parameters)
|
||||||
|
inst.loadModule(parameters)
|
||||||
|
# Notify clients
|
||||||
|
notify("Network.Firewall", "moduleSettingsChanged", (name))
|
||||||
|
|
||||||
|
def getState():
|
||||||
|
state = ModuleConfig("general").info.get("state", "off")
|
||||||
|
if state not in ["on", "off"] or not getServiceState(script()):
|
||||||
|
return "off"
|
||||||
|
return state
|
||||||
|
|
||||||
|
def setState(state):
|
||||||
|
if state in ["on", "off"]:
|
||||||
|
# Save state
|
||||||
|
general = ModuleConfig("general")
|
||||||
|
general.info["state"] = state
|
||||||
|
general.save()
|
||||||
|
if state == "on":
|
||||||
|
# Start IPTables
|
||||||
|
startService(script(), auto_start=True)
|
||||||
|
# Execute active modules
|
||||||
|
for module in listModuleConfigs():
|
||||||
|
if module not in MODULES:
|
||||||
|
continue
|
||||||
|
info = ModuleConfig(module).info
|
||||||
|
if info.get("state", "off") == "on":
|
||||||
|
inst = MODULES[module]()
|
||||||
|
inst.loadModule(getModuleParameters(module))
|
||||||
|
else:
|
||||||
|
# Flush IPTables since every module depends on it
|
||||||
|
netfilterutils.clear()
|
||||||
|
# Stop IPTables
|
||||||
|
stopService(script(), permanent=True)
|
||||||
|
# Unload modules
|
||||||
|
for module in listModuleConfigs():
|
||||||
|
if module not in MODULES:
|
||||||
|
continue
|
||||||
|
inst = MODULES[module]()
|
||||||
|
inst.unloadModule(shutdown=True)
|
||||||
|
# Notify clients
|
||||||
|
notify("Network.Firewall", "stateChanged", (state))
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from comar.service import *
|
||||||
|
|
||||||
|
serviceType = "local"
|
||||||
|
serviceDesc = _({"en": "Firewall",
|
||||||
|
"tr": "Güvenlik Duvarı"})
|
||||||
|
|
||||||
|
LOCK_FILE = "/var/lock/subsys/iptables"
|
||||||
|
FIREWALL_PATH = "/etc/firewall.conf"
|
||||||
|
|
||||||
|
import os
|
||||||
|
import pardus.netfilterutils as iptables
|
||||||
|
from pardus import iniutils
|
||||||
|
|
||||||
|
def writeFile(filename, content="", mode=0600):
|
||||||
|
'''Writes content to filename and sets file mode.'''
|
||||||
|
file(filename, "w").write(content)
|
||||||
|
os.chmod(filename, mode)
|
||||||
|
|
||||||
|
def readFile(filename):
|
||||||
|
"""Return content of a file"""
|
||||||
|
return file(filename, "r").read()
|
||||||
|
|
||||||
|
def startNetworkFirewall():
|
||||||
|
INI = iniutils.iniParser(FIREWALL_PATH)
|
||||||
|
try:
|
||||||
|
info = INI.getSection("general")
|
||||||
|
except iniutils.iniParserError:
|
||||||
|
return
|
||||||
|
if info.get("state", "off") == "on":
|
||||||
|
call(script(), "Network.Firewall", "setState", ("on"))
|
||||||
|
|
||||||
|
def stop():
|
||||||
|
# Save rules
|
||||||
|
writeFile("/var/lib/iptables/rules", iptables.getRules())
|
||||||
|
|
||||||
|
# Clear chains & rules
|
||||||
|
iptables.clear()
|
||||||
|
|
||||||
|
# Remove lock file
|
||||||
|
if os.access(LOCK_FILE, os.F_OK):
|
||||||
|
os.unlink(LOCK_FILE)
|
||||||
|
|
||||||
|
# Notify clients
|
||||||
|
notify("System.Service", "Changed", (script(), "stopped"))
|
||||||
|
|
||||||
|
def start():
|
||||||
|
# Clear chains & rules
|
||||||
|
iptables.clear()
|
||||||
|
|
||||||
|
# Load rules
|
||||||
|
profile_file = "/var/lib/iptables/rules"
|
||||||
|
if os.path.exists(profile_file):
|
||||||
|
rules = readFile(profile_file)
|
||||||
|
iptables.restoreRules(rules)
|
||||||
|
|
||||||
|
# Create lock file
|
||||||
|
writeFile(LOCK_FILE, "")
|
||||||
|
|
||||||
|
# Initialize Network.Firewall, if necessary
|
||||||
|
startNetworkFirewall()
|
||||||
|
|
||||||
|
# Notify clients
|
||||||
|
notify("System.Service", "Changed", (script(), "started"))
|
||||||
|
|
||||||
|
def status():
|
||||||
|
return os.access(LOCK_FILE, os.F_OK)
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
|
||||||
|
<PISI>
|
||||||
|
<Source>
|
||||||
|
<Name>iptables</Name>
|
||||||
|
<Homepage>http://www.iptables.org/</Homepage>
|
||||||
|
<Packager>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Packager>
|
||||||
|
<License>GPLv2</License>
|
||||||
|
<IsA>app:console</IsA>
|
||||||
|
<Summary>Firewall, NAT and packet mangling tools</Summary>
|
||||||
|
<Description>Contains iptables firewall, NAT and packet mangling tools.</Description>
|
||||||
|
<Archive sha1sum="85d4160537546a23a7e42bc26dd7ee62a0ede4c8" type="tarbz2">ftp://ftp.netfilter.org/pub/iptables/iptables-1.4.21.tar.bz2</Archive>
|
||||||
|
<BuildDependencies>
|
||||||
|
<Dependency>libnfnetlink-devel</Dependency>
|
||||||
|
</BuildDependencies>
|
||||||
|
<Patches>
|
||||||
|
<!-- these got in
|
||||||
|
<Patch>iptables-1.4.2-as-needed.patch</Patch>
|
||||||
|
<Patch>iptables-1.4.2-no-ldconfig.patch</Patch>
|
||||||
|
-->
|
||||||
|
<!--<Patch>iptables-1.4.2-glibc.patch</Patch>-->
|
||||||
|
</Patches>
|
||||||
|
</Source>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>iptables</Name>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency>libnfnetlink</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="executable">/usr/bin</Path>
|
||||||
|
<Path fileType="executable">/sbin</Path>
|
||||||
|
<Path fileType="library">/lib</Path>
|
||||||
|
<Path fileType="library">/usr/lib</Path>
|
||||||
|
<Path fileType="man">/usr/share/man</Path>
|
||||||
|
<Path fileType="config">/etc</Path>
|
||||||
|
<Path fileType="data">/var</Path>
|
||||||
|
<Path fileType="data">/usr/share/xtables</Path>
|
||||||
|
</Files>
|
||||||
|
<Provides>
|
||||||
|
<COMAR script="service.py">System.Service</COMAR>
|
||||||
|
<COMAR script="firewall.py">Network.Firewall</COMAR>
|
||||||
|
</Provides>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<Package>
|
||||||
|
<Name>iptables-devel</Name>
|
||||||
|
<Summary>Development files for iptables</Summary>
|
||||||
|
<RuntimeDependencies>
|
||||||
|
<Dependency release="current">iptables</Dependency>
|
||||||
|
</RuntimeDependencies>
|
||||||
|
<Files>
|
||||||
|
<Path fileType="header">/usr/include</Path>
|
||||||
|
<Path fileType="library">/usr/lib/*.a</Path>
|
||||||
|
<Path fileType="data">/usr/lib/pkgconfig</Path>
|
||||||
|
<Path fileType="man">/usr/share/man/man3</Path>
|
||||||
|
</Files>
|
||||||
|
</Package>
|
||||||
|
|
||||||
|
<History>
|
||||||
|
<Update release="3">
|
||||||
|
<Date>2013-11-23</Date>
|
||||||
|
<Version>1.4.21</Version>
|
||||||
|
<Comment>Version bump</Comment>
|
||||||
|
<Name>Richard de Bruin</Name>
|
||||||
|
<Email>richdb@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="2">
|
||||||
|
<Date>2013-03-04</Date>
|
||||||
|
<Version>1.4.17</Version>
|
||||||
|
<Comment>Version bump</Comment>
|
||||||
|
<Name>Yusuf Aydemir</Name>
|
||||||
|
<Email>yusuf.aydemir@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
<Update release="1">
|
||||||
|
<Date>2012-10-21</Date>
|
||||||
|
<Version>1.4.16.3</Version>
|
||||||
|
<Comment>First release</Comment>
|
||||||
|
<Requires>
|
||||||
|
<Action>reverseDependencyUpdate</Action>
|
||||||
|
</Requires>
|
||||||
|
<Name>PisiLinux Community</Name>
|
||||||
|
<Email>admins@pisilinux.org</Email>
|
||||||
|
</Update>
|
||||||
|
</History>
|
||||||
|
</PISI>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user