Compare commits
89 commits
debian/1.0
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c14863878e | ||
|
|
72c0b016d0 | ||
|
|
464df78ca9 | ||
|
|
32e725a2c0 | ||
|
|
038933e7fc | ||
|
|
6932380624 | ||
|
|
10b8518c22 | ||
|
|
b511a112e6 | ||
|
|
bc8ca65653 | ||
|
|
87cef22421 | ||
|
|
aa10d88732 | ||
|
|
1813f3157e | ||
|
|
60cff3039b | ||
|
|
f5c641f5cc | ||
|
|
2ebbac3278 | ||
|
|
26033edb96 | ||
|
|
ff64081061 | ||
|
|
36f0d3c816 | ||
|
|
34d5939212 | ||
|
|
ecd1f6f67a | ||
|
|
02de1cd2f1 | ||
|
|
a04a7bcd67 | ||
|
|
f8e1f5a528 | ||
|
|
b28bb7b29b | ||
|
|
66e86a419b | ||
|
|
5969674c46 | ||
|
|
ac78971aab | ||
|
|
e0e55285b8 | ||
|
|
2989322746 | ||
|
|
81ce06b6c9 | ||
|
|
11d9efef1b | ||
|
|
1077a20a8c | ||
|
|
dcd38ec07d | ||
|
|
502cecde93 | ||
|
|
e537caa7b1 | ||
|
|
02fdd053f1 | ||
|
|
d08a5d8f0b | ||
|
|
a83439b023 | ||
|
|
eed44cd331 | ||
|
|
c167efd01b | ||
|
|
b33a93f7f6 | ||
|
|
088ed763df | ||
|
|
4d11e18342 | ||
|
|
45b80e247e | ||
|
|
1e23c12b1d | ||
|
|
c0d04cc168 | ||
|
|
a0bb9d443f | ||
|
|
cce24e0be4 | ||
|
|
e53cefdf85 | ||
|
|
413f90b815 | ||
|
|
d7b49da4e6 | ||
|
|
c09679c3ba | ||
|
|
854118c85f | ||
|
|
a7e5217cf7 | ||
|
|
8dab3abc97 | ||
|
|
e8daab5950 | ||
|
|
37abcfc1ea | ||
|
|
6698135e07 | ||
|
|
4343b5a2fa | ||
|
|
a797a94c81 | ||
|
|
cc0493ea17 | ||
|
|
d131e9a06f | ||
|
|
06acdce080 | ||
|
|
e5d35e092f | ||
|
|
8ce89f6ef0 | ||
|
|
c63e635d89 | ||
|
|
c078db2fd8 | ||
|
|
b9a1c8df12 | ||
|
|
94e6f906d5 | ||
|
|
bb1aebd963 | ||
|
|
5a84bb737c | ||
|
|
d09cb3d82a | ||
|
|
2ad1dc3fd7 | ||
|
|
3f653aaa2d | ||
|
|
d906f6f9b0 | ||
|
|
f01c927470 | ||
|
|
3f0ae998e8 | ||
|
|
dc781ea51d | ||
|
|
0fd2ac248d | ||
|
|
2006358f32 | ||
|
|
3cfe4d82fb | ||
|
|
c54d214bf2 | ||
|
|
0dd8a42607 | ||
|
|
08ed40f17e | ||
|
|
7e336e415f | ||
|
|
b96e4c6b19 | ||
|
|
23bd9e9d53 | ||
|
|
445df16805 | ||
|
|
fa871d431d |
238 changed files with 33249 additions and 45215 deletions
768
ABOUT-NLS
768
ABOUT-NLS
|
|
@ -1,768 +0,0 @@
|
||||||
Notes on the Free Translation Project
|
|
||||||
*************************************
|
|
||||||
|
|
||||||
Free software is going international! The Free Translation Project is
|
|
||||||
a way to get maintainers of free software, translators, and users all
|
|
||||||
together, so that will gradually become able to speak many languages.
|
|
||||||
A few packages already provide translations for their messages.
|
|
||||||
|
|
||||||
If you found this `ABOUT-NLS' file inside a distribution, you may
|
|
||||||
assume that the distributed package does use GNU `gettext' internally,
|
|
||||||
itself available at your nearest GNU archive site. But you do _not_
|
|
||||||
need to install GNU `gettext' prior to configuring, installing or using
|
|
||||||
this package with messages translated.
|
|
||||||
|
|
||||||
Installers will find here some useful hints. These notes also
|
|
||||||
explain how users should proceed for getting the programs to use the
|
|
||||||
available translations. They tell how people wanting to contribute and
|
|
||||||
work at translations should contact the appropriate team.
|
|
||||||
|
|
||||||
When reporting bugs in the `intl/' directory or bugs which may be
|
|
||||||
related to internationalization, you should tell about the version of
|
|
||||||
`gettext' which is used. The information can be found in the
|
|
||||||
`intl/VERSION' file, in internationalized packages.
|
|
||||||
|
|
||||||
Quick configuration advice
|
|
||||||
==========================
|
|
||||||
|
|
||||||
If you want to exploit the full power of internationalization, you
|
|
||||||
should configure it using
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
|
|
||||||
to force usage of internationalizing routines provided within this
|
|
||||||
package, despite the existence of internationalizing capabilities in the
|
|
||||||
operating system where this package is being installed. So far, only
|
|
||||||
the `gettext' implementation in the GNU C library version 2 provides as
|
|
||||||
many features (such as locale alias, message inheritance, automatic
|
|
||||||
charset conversion or plural form handling) as the implementation here.
|
|
||||||
It is also not possible to offer this additional functionality on top
|
|
||||||
of a `catgets' implementation. Future versions of GNU `gettext' will
|
|
||||||
very likely convey even more functionality. So it might be a good idea
|
|
||||||
to change to GNU `gettext' as soon as possible.
|
|
||||||
|
|
||||||
So you need _not_ provide this option if you are using GNU libc 2 or
|
|
||||||
you have installed a recent copy of the GNU gettext package with the
|
|
||||||
included `libintl'.
|
|
||||||
|
|
||||||
INSTALL Matters
|
|
||||||
===============
|
|
||||||
|
|
||||||
Some packages are "localizable" when properly installed; the programs
|
|
||||||
they contain can be made to speak your own native language. Most such
|
|
||||||
packages use GNU `gettext'. Other packages have their own ways to
|
|
||||||
internationalization, predating GNU `gettext'.
|
|
||||||
|
|
||||||
By default, this package will be installed to allow translation of
|
|
||||||
messages. It will automatically detect whether the system already
|
|
||||||
provides the GNU `gettext' functions. If not, the GNU `gettext' own
|
|
||||||
library will be used. This library is wholly contained within this
|
|
||||||
package, usually in the `intl/' subdirectory, so prior installation of
|
|
||||||
the GNU `gettext' package is _not_ required. Installers may use
|
|
||||||
special options at configuration time for changing the default
|
|
||||||
behaviour. The commands:
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
./configure --disable-nls
|
|
||||||
|
|
||||||
will respectively bypass any pre-existing `gettext' to use the
|
|
||||||
internationalizing routines provided within this package, or else,
|
|
||||||
_totally_ disable translation of messages.
|
|
||||||
|
|
||||||
When you already have GNU `gettext' installed on your system and run
|
|
||||||
configure without an option for your new package, `configure' will
|
|
||||||
probably detect the previously built and installed `libintl.a' file and
|
|
||||||
will decide to use this. This might be not what is desirable. You
|
|
||||||
should use the more recent version of the GNU `gettext' library. I.e.
|
|
||||||
if the file `intl/VERSION' shows that the library which comes with this
|
|
||||||
package is more recent, you should use
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
|
|
||||||
to prevent auto-detection.
|
|
||||||
|
|
||||||
The configuration process will not test for the `catgets' function
|
|
||||||
and therefore it will not be used. The reason is that even an
|
|
||||||
emulation of `gettext' on top of `catgets' could not provide all the
|
|
||||||
extensions of the GNU `gettext' library.
|
|
||||||
|
|
||||||
Internationalized packages have usually many `po/LL.po' files, where
|
|
||||||
LL gives an ISO 639 two-letter code identifying the language. Unless
|
|
||||||
translations have been forbidden at `configure' time by using the
|
|
||||||
`--disable-nls' switch, all available translations are installed
|
|
||||||
together with the package. However, the environment variable `LINGUAS'
|
|
||||||
may be set, prior to configuration, to limit the installed set.
|
|
||||||
`LINGUAS' should then contain a space separated list of two-letter
|
|
||||||
codes, stating which languages are allowed.
|
|
||||||
|
|
||||||
Using This Package
|
|
||||||
==================
|
|
||||||
|
|
||||||
As a user, if your language has been installed for this package, you
|
|
||||||
only have to set the `LANG' environment variable to the appropriate
|
|
||||||
`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
|
|
||||||
and `CC' is an ISO 3166 two-letter country code. For example, let's
|
|
||||||
suppose that you speak German and live in Germany. At the shell
|
|
||||||
prompt, merely execute `setenv LANG de_DE' (in `csh'),
|
|
||||||
`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
|
|
||||||
This can be done from your `.login' or `.profile' file, once and for
|
|
||||||
all.
|
|
||||||
|
|
||||||
You might think that the country code specification is redundant.
|
|
||||||
But in fact, some languages have dialects in different countries. For
|
|
||||||
example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
|
|
||||||
country code serves to distinguish the dialects.
|
|
||||||
|
|
||||||
The locale naming convention of `LL_CC', with `LL' denoting the
|
|
||||||
language and `CC' denoting the country, is the one use on systems based
|
|
||||||
on GNU libc. On other systems, some variations of this scheme are
|
|
||||||
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
|
||||||
locales supported by your system for your country by running the command
|
|
||||||
`locale -a | grep '^LL''.
|
|
||||||
|
|
||||||
Not all programs have translations for all languages. By default, an
|
|
||||||
English message is shown in place of a nonexistent translation. If you
|
|
||||||
understand other languages, you can set up a priority list of languages.
|
|
||||||
This is done through a different environment variable, called
|
|
||||||
`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
|
|
||||||
for the purpose of message handling, but you still need to have `LANG'
|
|
||||||
set to the primary language; this is required by other parts of the
|
|
||||||
system libraries. For example, some Swedish users who would rather
|
|
||||||
read translations in German than English for when Swedish is not
|
|
||||||
available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
|
|
||||||
|
|
||||||
Special advice for Norwegian users: The language code for Norwegian
|
|
||||||
bokma*l changed from `no' to `nb' recently (in 2003). During the
|
|
||||||
transition period, while some message catalogs for this language are
|
|
||||||
installed under `nb' and some older ones under `no', it's recommended
|
|
||||||
for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
|
|
||||||
older translations are used.
|
|
||||||
|
|
||||||
In the `LANGUAGE' environment variable, but not in the `LANG'
|
|
||||||
environment variable, `LL_CC' combinations can be abbreviated as `LL'
|
|
||||||
to denote the language's main dialect. For example, `de' is equivalent
|
|
||||||
to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
|
|
||||||
(Portuguese as spoken in Portugal) in this context.
|
|
||||||
|
|
||||||
Translating Teams
|
|
||||||
=================
|
|
||||||
|
|
||||||
For the Free Translation Project to be a success, we need interested
|
|
||||||
people who like their own language and write it well, and who are also
|
|
||||||
able to synergize with other translators speaking the same language.
|
|
||||||
Each translation team has its own mailing list. The up-to-date list of
|
|
||||||
teams can be found at the Free Translation Project's homepage,
|
|
||||||
`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
|
|
||||||
area.
|
|
||||||
|
|
||||||
If you'd like to volunteer to _work_ at translating messages, you
|
|
||||||
should become a member of the translating team for your own language.
|
|
||||||
The subscribing address is _not_ the same as the list itself, it has
|
|
||||||
`-request' appended. For example, speakers of Swedish can send a
|
|
||||||
message to `sv-request@li.org', having this message body:
|
|
||||||
|
|
||||||
subscribe
|
|
||||||
|
|
||||||
Keep in mind that team members are expected to participate
|
|
||||||
_actively_ in translations, or at solving translational difficulties,
|
|
||||||
rather than merely lurking around. If your team does not exist yet and
|
|
||||||
you want to start one, or if you are unsure about what to do or how to
|
|
||||||
get started, please write to `translation@iro.umontreal.ca' to reach the
|
|
||||||
coordinator for all translator teams.
|
|
||||||
|
|
||||||
The English team is special. It works at improving and uniformizing
|
|
||||||
the terminology in use. Proven linguistic skill are praised more than
|
|
||||||
programming skill, here.
|
|
||||||
|
|
||||||
Available Packages
|
|
||||||
==================
|
|
||||||
|
|
||||||
Languages are not equally supported in all packages. The following
|
|
||||||
matrix shows the current state of internationalization, as of January
|
|
||||||
2004. The matrix shows, in regard of each package, for which languages
|
|
||||||
PO files have been submitted to translation coordination, with a
|
|
||||||
translation percentage of at least 50%.
|
|
||||||
|
|
||||||
Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es
|
|
||||||
+----------------------------------------------------+
|
|
||||||
a2ps | [] [] [] [] |
|
|
||||||
aegis | () |
|
|
||||||
ant-phone | () |
|
|
||||||
anubis | |
|
|
||||||
ap-utils | |
|
|
||||||
aspell | [] |
|
|
||||||
bash | [] [] [] [] |
|
|
||||||
batchelor | |
|
|
||||||
bfd | [] [] |
|
|
||||||
binutils | [] [] |
|
|
||||||
bison | [] [] [] |
|
|
||||||
bluez-pin | [] [] [] |
|
|
||||||
clisp | |
|
|
||||||
clisp | [] [] [] |
|
|
||||||
console-tools | [] [] |
|
|
||||||
coreutils | [] [] [] [] |
|
|
||||||
cpio | [] [] [] |
|
|
||||||
darkstat | [] () [] |
|
|
||||||
diffutils | [] [] [] [] [] [] [] |
|
|
||||||
e2fsprogs | [] [] [] |
|
|
||||||
enscript | [] [] [] [] |
|
|
||||||
error | [] [] [] [] [] |
|
|
||||||
fetchmail | [] () [] [] [] [] |
|
|
||||||
fileutils | [] [] [] |
|
|
||||||
findutils | [] [] [] [] [] [] [] |
|
|
||||||
flex | [] [] [] [] |
|
|
||||||
fslint | |
|
|
||||||
gas | [] |
|
|
||||||
gawk | [] [] [] [] |
|
|
||||||
gbiff | [] |
|
|
||||||
gcal | [] |
|
|
||||||
gcc | [] [] |
|
|
||||||
gettext | [] [] [] [] [] |
|
|
||||||
gettext-examples | [] [] [] [] |
|
|
||||||
gettext-runtime | [] [] [] [] [] |
|
|
||||||
gettext-tools | [] [] [] |
|
|
||||||
gimp-print | [] [] [] [] [] |
|
|
||||||
gliv | |
|
|
||||||
glunarclock | [] [] |
|
|
||||||
gnubiff | [] |
|
|
||||||
gnucash | [] () [] [] |
|
|
||||||
gnucash-glossary | [] () [] |
|
|
||||||
gnupg | [] () [] [] [] [] |
|
|
||||||
gpe-aerial | [] |
|
|
||||||
gpe-beam | [] [] |
|
|
||||||
gpe-calendar | [] [] |
|
|
||||||
gpe-clock | [] [] |
|
|
||||||
gpe-conf | [] [] |
|
|
||||||
gpe-contacts | [] [] |
|
|
||||||
gpe-edit | [] |
|
|
||||||
gpe-go | [] |
|
|
||||||
gpe-login | [] [] |
|
|
||||||
gpe-ownerinfo | [] [] |
|
|
||||||
gpe-sketchbook | [] [] |
|
|
||||||
gpe-su | [] [] |
|
|
||||||
gpe-taskmanager | [] [] |
|
|
||||||
gpe-timesheet | [] |
|
|
||||||
gpe-today | [] [] |
|
|
||||||
gpe-todo | [] [] |
|
|
||||||
gphoto2 | [] [] [] [] |
|
|
||||||
gprof | [] [] [] |
|
|
||||||
gpsdrive | () () () |
|
|
||||||
gramadoir | [] |
|
|
||||||
grep | [] [] [] [] [] [] |
|
|
||||||
gretl | [] |
|
|
||||||
gtick | [] () |
|
|
||||||
hello | [] [] [] [] [] [] |
|
|
||||||
id-utils | [] [] |
|
|
||||||
indent | [] [] [] [] |
|
|
||||||
iso_3166 | [] [] [] [] [] [] [] [] [] [] |
|
|
||||||
iso_3166_1 | [] [] [] [] [] [] |
|
|
||||||
iso_3166_2 | |
|
|
||||||
iso_3166_3 | [] |
|
|
||||||
iso_4217 | [] [] [] [] |
|
|
||||||
iso_639 | |
|
|
||||||
jpilot | [] [] [] |
|
|
||||||
jtag | |
|
|
||||||
jwhois | [] |
|
|
||||||
kbd | [] [] [] [] [] |
|
|
||||||
latrine | () |
|
|
||||||
ld | [] [] |
|
|
||||||
libc | [] [] [] [] [] [] |
|
|
||||||
libgpewidget | [] [] |
|
|
||||||
libiconv | [] [] [] [] [] |
|
|
||||||
lifelines | [] () |
|
|
||||||
lilypond | [] |
|
|
||||||
lingoteach | |
|
|
||||||
lingoteach_lessons | () () |
|
|
||||||
lynx | [] [] [] [] |
|
|
||||||
m4 | [] [] [] [] |
|
|
||||||
mailutils | [] [] |
|
|
||||||
make | [] [] [] |
|
|
||||||
man-db | [] () [] [] () |
|
|
||||||
minicom | [] [] [] |
|
|
||||||
mysecretdiary | [] [] [] |
|
|
||||||
nano | [] () [] [] [] |
|
|
||||||
nano_1_0 | [] () [] [] [] |
|
|
||||||
opcodes | [] |
|
|
||||||
parted | [] [] [] [] [] |
|
|
||||||
ptx | [] [] [] [] [] |
|
|
||||||
python | |
|
|
||||||
radius | [] |
|
|
||||||
recode | [] [] [] [] [] [] [] |
|
|
||||||
rpm | [] [] |
|
|
||||||
screem | |
|
|
||||||
scrollkeeper | [] [] [] [] [] [] |
|
|
||||||
sed | [] [] [] [] [] [] |
|
|
||||||
sh-utils | [] [] [] |
|
|
||||||
shared-mime-info | |
|
|
||||||
sharutils | [] [] [] [] [] [] |
|
|
||||||
silky | () |
|
|
||||||
skencil | [] () [] |
|
|
||||||
sketch | [] () [] |
|
|
||||||
soundtracker | [] [] [] |
|
|
||||||
sp | [] |
|
|
||||||
tar | [] [] [] [] |
|
|
||||||
texinfo | [] [] [] |
|
|
||||||
textutils | [] [] [] [] |
|
|
||||||
tin | () () |
|
|
||||||
tp-robot | |
|
|
||||||
tuxpaint | [] [] [] [] [] [] [] |
|
|
||||||
unicode-han-tra... | |
|
|
||||||
unicode-transla... | |
|
|
||||||
util-linux | [] [] [] [] [] |
|
|
||||||
vorbis-tools | [] [] [] [] |
|
|
||||||
wastesedge | () |
|
|
||||||
wdiff | [] [] [] [] |
|
|
||||||
wget | [] [] [] [] [] [] |
|
|
||||||
xchat | [] [] [] [] |
|
|
||||||
xfree86_xkb_xml | [] [] |
|
|
||||||
xpad | [] |
|
|
||||||
+----------------------------------------------------+
|
|
||||||
af am ar az be bg bs ca cs da de el en en_GB eo es
|
|
||||||
4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68
|
|
||||||
|
|
||||||
et eu fa fi fr ga gl he hr hu id is it ja ko lg
|
|
||||||
+-------------------------------------------------+
|
|
||||||
a2ps | [] [] [] () () |
|
|
||||||
aegis | |
|
|
||||||
ant-phone | [] |
|
|
||||||
anubis | [] |
|
|
||||||
ap-utils | [] |
|
|
||||||
aspell | [] [] |
|
|
||||||
bash | [] [] |
|
|
||||||
batchelor | [] [] |
|
|
||||||
bfd | [] |
|
|
||||||
binutils | [] [] |
|
|
||||||
bison | [] [] [] [] |
|
|
||||||
bluez-pin | [] [] [] [] [] |
|
|
||||||
clisp | |
|
|
||||||
clisp | [] |
|
|
||||||
console-tools | |
|
|
||||||
coreutils | [] [] [] [] [] [] |
|
|
||||||
cpio | [] [] [] [] |
|
|
||||||
darkstat | () [] [] [] |
|
|
||||||
diffutils | [] [] [] [] [] [] [] |
|
|
||||||
e2fsprogs | |
|
|
||||||
enscript | [] [] |
|
|
||||||
error | [] [] [] [] |
|
|
||||||
fetchmail | [] |
|
|
||||||
fileutils | [] [] [] [] [] [] |
|
|
||||||
findutils | [] [] [] [] [] [] [] [] [] [] [] |
|
|
||||||
flex | [] [] [] |
|
|
||||||
fslint | [] |
|
|
||||||
gas | [] |
|
|
||||||
gawk | [] [] [] |
|
|
||||||
gbiff | [] |
|
|
||||||
gcal | [] |
|
|
||||||
gcc | [] |
|
|
||||||
gettext | [] [] [] |
|
|
||||||
gettext-examples | [] [] |
|
|
||||||
gettext-runtime | [] [] [] [] [] |
|
|
||||||
gettext-tools | [] [] [] |
|
|
||||||
gimp-print | [] [] |
|
|
||||||
gliv | () |
|
|
||||||
glunarclock | [] [] [] [] |
|
|
||||||
gnubiff | [] |
|
|
||||||
gnucash | () [] |
|
|
||||||
gnucash-glossary | [] |
|
|
||||||
gnupg | [] [] [] [] [] [] [] |
|
|
||||||
gpe-aerial | [] |
|
|
||||||
gpe-beam | [] |
|
|
||||||
gpe-calendar | [] [] [] |
|
|
||||||
gpe-clock | [] |
|
|
||||||
gpe-conf | [] |
|
|
||||||
gpe-contacts | [] [] |
|
|
||||||
gpe-edit | [] [] |
|
|
||||||
gpe-go | [] |
|
|
||||||
gpe-login | [] [] |
|
|
||||||
gpe-ownerinfo | [] [] [] |
|
|
||||||
gpe-sketchbook | [] |
|
|
||||||
gpe-su | [] |
|
|
||||||
gpe-taskmanager | [] |
|
|
||||||
gpe-timesheet | [] [] [] |
|
|
||||||
gpe-today | [] [] |
|
|
||||||
gpe-todo | [] [] |
|
|
||||||
gphoto2 | [] [] [] |
|
|
||||||
gprof | [] [] |
|
|
||||||
gpsdrive | () () () |
|
|
||||||
gramadoir | [] [] |
|
|
||||||
grep | [] [] [] [] [] [] [] [] [] [] [] |
|
|
||||||
gretl | [] [] |
|
|
||||||
gtick | [] [] [] |
|
|
||||||
hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
|
|
||||||
id-utils | [] [] [] [] |
|
|
||||||
indent | [] [] [] [] [] [] [] [] [] |
|
|
||||||
iso_3166 | [] [] [] [] [] [] [] |
|
|
||||||
iso_3166_1 | [] [] [] [] [] |
|
|
||||||
iso_3166_2 | |
|
|
||||||
iso_3166_3 | |
|
|
||||||
iso_4217 | [] [] [] [] [] [] |
|
|
||||||
iso_639 | |
|
|
||||||
jpilot | [] () |
|
|
||||||
jtag | [] |
|
|
||||||
jwhois | [] [] [] [] |
|
|
||||||
kbd | [] |
|
|
||||||
latrine | [] |
|
|
||||||
ld | [] |
|
|
||||||
libc | [] [] [] [] [] [] |
|
|
||||||
libgpewidget | [] [] [] [] |
|
|
||||||
libiconv | [] [] [] [] [] [] [] [] [] |
|
|
||||||
lifelines | () |
|
|
||||||
lilypond | [] |
|
|
||||||
lingoteach | [] [] |
|
|
||||||
lingoteach_lessons | |
|
|
||||||
lynx | [] [] [] [] |
|
|
||||||
m4 | [] [] [] [] |
|
|
||||||
mailutils | |
|
|
||||||
make | [] [] [] [] [] [] |
|
|
||||||
man-db | () () |
|
|
||||||
minicom | [] [] [] [] |
|
|
||||||
mysecretdiary | [] [] |
|
|
||||||
nano | [] [] [] [] |
|
|
||||||
nano_1_0 | [] [] [] [] |
|
|
||||||
opcodes | [] |
|
|
||||||
parted | [] [] [] |
|
|
||||||
ptx | [] [] [] [] [] [] [] |
|
|
||||||
python | |
|
|
||||||
radius | [] |
|
|
||||||
recode | [] [] [] [] [] [] |
|
|
||||||
rpm | [] [] |
|
|
||||||
screem | |
|
|
||||||
scrollkeeper | [] |
|
|
||||||
sed | [] [] [] [] [] [] [] [] [] |
|
|
||||||
sh-utils | [] [] [] [] [] [] [] |
|
|
||||||
shared-mime-info | [] [] [] |
|
|
||||||
sharutils | [] [] [] [] [] |
|
|
||||||
silky | () [] () () |
|
|
||||||
skencil | [] |
|
|
||||||
sketch | [] |
|
|
||||||
soundtracker | [] [] |
|
|
||||||
sp | [] () |
|
|
||||||
tar | [] [] [] [] [] [] [] [] [] |
|
|
||||||
texinfo | [] [] [] [] |
|
|
||||||
textutils | [] [] [] [] [] [] |
|
|
||||||
tin | [] () |
|
|
||||||
tp-robot | [] |
|
|
||||||
tuxpaint | [] [] [] [] [] [] [] [] [] |
|
|
||||||
unicode-han-tra... | |
|
|
||||||
unicode-transla... | [] [] |
|
|
||||||
util-linux | [] [] [] [] () [] |
|
|
||||||
vorbis-tools | [] |
|
|
||||||
wastesedge | () |
|
|
||||||
wdiff | [] [] [] [] [] [] |
|
|
||||||
wget | [] [] [] [] [] [] [] |
|
|
||||||
xchat | [] [] [] |
|
|
||||||
xfree86_xkb_xml | [] [] |
|
|
||||||
xpad | [] [] |
|
|
||||||
+-------------------------------------------------+
|
|
||||||
et eu fa fi fr ga gl he hr hu id is it ja ko lg
|
|
||||||
22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0
|
|
||||||
|
|
||||||
lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
|
|
||||||
+-----------------------------------------------------+
|
|
||||||
a2ps | [] [] () () [] [] [] |
|
|
||||||
aegis | () () () |
|
|
||||||
ant-phone | [] [] |
|
|
||||||
anubis | [] [] [] [] [] [] |
|
|
||||||
ap-utils | [] () [] |
|
|
||||||
aspell | [] |
|
|
||||||
bash | [] [] [] |
|
|
||||||
batchelor | [] |
|
|
||||||
bfd | [] |
|
|
||||||
binutils | [] |
|
|
||||||
bison | [] [] [] [] [] |
|
|
||||||
bluez-pin | [] [] [] |
|
|
||||||
clisp | |
|
|
||||||
clisp | [] |
|
|
||||||
console-tools | [] |
|
|
||||||
coreutils | [] [] |
|
|
||||||
cpio | [] [] [] [] [] |
|
|
||||||
darkstat | [] [] [] [] |
|
|
||||||
diffutils | [] [] [] [] [] [] |
|
|
||||||
e2fsprogs | [] |
|
|
||||||
enscript | [] [] [] [] |
|
|
||||||
error | [] [] [] |
|
|
||||||
fetchmail | [] [] () [] |
|
|
||||||
fileutils | [] [] [] |
|
|
||||||
findutils | [] [] [] [] [] |
|
|
||||||
flex | [] [] [] [] |
|
|
||||||
fslint | [] [] |
|
|
||||||
gas | |
|
|
||||||
gawk | [] [] [] |
|
|
||||||
gbiff | [] [] |
|
|
||||||
gcal | |
|
|
||||||
gcc | |
|
|
||||||
gettext | [] [] [] |
|
|
||||||
gettext-examples | [] [] [] |
|
|
||||||
gettext-runtime | [] [] [] [] |
|
|
||||||
gettext-tools | [] [] |
|
|
||||||
gimp-print | [] |
|
|
||||||
gliv | [] [] [] |
|
|
||||||
glunarclock | [] [] [] [] |
|
|
||||||
gnubiff | [] |
|
|
||||||
gnucash | [] [] () [] |
|
|
||||||
gnucash-glossary | [] [] |
|
|
||||||
gnupg | [] |
|
|
||||||
gpe-aerial | [] [] [] [] |
|
|
||||||
gpe-beam | [] [] [] [] |
|
|
||||||
gpe-calendar | [] [] [] [] |
|
|
||||||
gpe-clock | [] [] [] [] |
|
|
||||||
gpe-conf | [] [] [] [] |
|
|
||||||
gpe-contacts | [] [] [] [] |
|
|
||||||
gpe-edit | [] [] [] [] |
|
|
||||||
gpe-go | [] [] [] |
|
|
||||||
gpe-login | [] [] [] [] |
|
|
||||||
gpe-ownerinfo | [] [] [] [] |
|
|
||||||
gpe-sketchbook | [] [] [] [] |
|
|
||||||
gpe-su | [] [] [] [] |
|
|
||||||
gpe-taskmanager | [] [] [] [] |
|
|
||||||
gpe-timesheet | [] [] [] [] |
|
|
||||||
gpe-today | [] [] [] [] |
|
|
||||||
gpe-todo | [] [] [] [] |
|
|
||||||
gphoto2 | [] |
|
|
||||||
gprof | [] [] |
|
|
||||||
gpsdrive | () () [] |
|
|
||||||
gramadoir | () [] |
|
|
||||||
grep | [] [] [] [] [] |
|
|
||||||
gretl | |
|
|
||||||
gtick | [] [] [] |
|
|
||||||
hello | [] [] [] [] [] [] [] [] [] [] |
|
|
||||||
id-utils | [] [] [] [] |
|
|
||||||
indent | [] [] [] [] |
|
|
||||||
iso_3166 | [] [] [] |
|
|
||||||
iso_3166_1 | [] [] |
|
|
||||||
iso_3166_2 | |
|
|
||||||
iso_3166_3 | [] |
|
|
||||||
iso_4217 | [] [] [] [] [] [] [] [] |
|
|
||||||
iso_639 | [] |
|
|
||||||
jpilot | () () |
|
|
||||||
jtag | |
|
|
||||||
jwhois | [] [] [] [] () |
|
|
||||||
kbd | [] [] [] |
|
|
||||||
latrine | [] |
|
|
||||||
ld | |
|
|
||||||
libc | [] [] [] [] |
|
|
||||||
libgpewidget | [] [] [] |
|
|
||||||
libiconv | [] [] [] [] [] |
|
|
||||||
lifelines | |
|
|
||||||
lilypond | |
|
|
||||||
lingoteach | |
|
|
||||||
lingoteach_lessons | |
|
|
||||||
lynx | [] [] [] |
|
|
||||||
m4 | [] [] [] [] [] |
|
|
||||||
mailutils | [] [] [] |
|
|
||||||
make | [] [] [] [] |
|
|
||||||
man-db | [] |
|
|
||||||
minicom | [] [] [] [] |
|
|
||||||
mysecretdiary | [] [] [] |
|
|
||||||
nano | [] [] [] [] [] |
|
|
||||||
nano_1_0 | [] [] [] [] [] [] |
|
|
||||||
opcodes | [] [] |
|
|
||||||
parted | [] [] [] [] |
|
|
||||||
ptx | [] [] [] [] [] [] [] [] |
|
|
||||||
python | |
|
|
||||||
radius | [] [] |
|
|
||||||
recode | [] [] [] [] |
|
|
||||||
rpm | [] [] [] |
|
|
||||||
screem | |
|
|
||||||
scrollkeeper | [] [] [] [] [] |
|
|
||||||
sed | [] [] [] |
|
|
||||||
sh-utils | [] [] |
|
|
||||||
shared-mime-info | [] [] |
|
|
||||||
sharutils | [] [] |
|
|
||||||
silky | () |
|
|
||||||
skencil | [] [] |
|
|
||||||
sketch | [] [] |
|
|
||||||
soundtracker | |
|
|
||||||
sp | |
|
|
||||||
tar | [] [] [] [] [] [] |
|
|
||||||
texinfo | [] [] [] [] |
|
|
||||||
textutils | [] [] |
|
|
||||||
tin | |
|
|
||||||
tp-robot | [] |
|
|
||||||
tuxpaint | [] [] [] [] [] [] [] [] |
|
|
||||||
unicode-han-tra... | |
|
|
||||||
unicode-transla... | |
|
|
||||||
util-linux | [] [] [] |
|
|
||||||
vorbis-tools | [] [] [] |
|
|
||||||
wastesedge | |
|
|
||||||
wdiff | [] [] [] [] [] |
|
|
||||||
wget | [] [] [] |
|
|
||||||
xchat | [] [] [] |
|
|
||||||
xfree86_xkb_xml | [] [] |
|
|
||||||
xpad | [] [] |
|
|
||||||
+-----------------------------------------------------+
|
|
||||||
lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
|
|
||||||
1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63
|
|
||||||
|
|
||||||
sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
|
|
||||||
+-----------------------------------------------------+
|
|
||||||
a2ps | [] [] [] [] | 16
|
|
||||||
aegis | | 0
|
|
||||||
ant-phone | | 3
|
|
||||||
anubis | [] [] | 9
|
|
||||||
ap-utils | () | 3
|
|
||||||
aspell | | 4
|
|
||||||
bash | | 9
|
|
||||||
batchelor | | 3
|
|
||||||
bfd | [] [] | 6
|
|
||||||
binutils | [] [] [] | 8
|
|
||||||
bison | [] [] | 14
|
|
||||||
bluez-pin | [] [] [] | 14
|
|
||||||
clisp | | 0
|
|
||||||
clisp | | 5
|
|
||||||
console-tools | | 3
|
|
||||||
coreutils | [] [] [] [] | 16
|
|
||||||
cpio | [] [] | 14
|
|
||||||
darkstat | [] [] [] () () | 12
|
|
||||||
diffutils | [] [] [] | 23
|
|
||||||
e2fsprogs | [] [] | 6
|
|
||||||
enscript | [] [] | 12
|
|
||||||
error | [] [] [] | 15
|
|
||||||
fetchmail | [] [] | 11
|
|
||||||
fileutils | [] [] [] [] [] | 17
|
|
||||||
findutils | [] [] [] [] [] [] | 29
|
|
||||||
flex | [] [] | 13
|
|
||||||
fslint | | 3
|
|
||||||
gas | [] | 3
|
|
||||||
gawk | [] [] | 12
|
|
||||||
gbiff | | 4
|
|
||||||
gcal | [] [] | 4
|
|
||||||
gcc | [] | 4
|
|
||||||
gettext | [] [] [] [] [] | 16
|
|
||||||
gettext-examples | [] [] [] [] [] | 14
|
|
||||||
gettext-runtime | [] [] [] [] [] [] [] [] | 22
|
|
||||||
gettext-tools | [] [] [] [] [] [] | 14
|
|
||||||
gimp-print | [] [] | 10
|
|
||||||
gliv | | 3
|
|
||||||
glunarclock | [] [] [] | 13
|
|
||||||
gnubiff | | 3
|
|
||||||
gnucash | [] [] | 9
|
|
||||||
gnucash-glossary | [] [] [] | 8
|
|
||||||
gnupg | [] [] [] [] | 17
|
|
||||||
gpe-aerial | [] | 7
|
|
||||||
gpe-beam | [] | 8
|
|
||||||
gpe-calendar | [] [] [] [] | 13
|
|
||||||
gpe-clock | [] [] [] | 10
|
|
||||||
gpe-conf | [] [] | 9
|
|
||||||
gpe-contacts | [] [] [] | 11
|
|
||||||
gpe-edit | [] [] [] [] [] | 12
|
|
||||||
gpe-go | | 5
|
|
||||||
gpe-login | [] [] [] [] [] | 13
|
|
||||||
gpe-ownerinfo | [] [] [] [] | 13
|
|
||||||
gpe-sketchbook | [] [] | 9
|
|
||||||
gpe-su | [] [] [] | 10
|
|
||||||
gpe-taskmanager | [] [] [] | 10
|
|
||||||
gpe-timesheet | [] [] [] [] | 12
|
|
||||||
gpe-today | [] [] [] [] [] | 13
|
|
||||||
gpe-todo | [] [] [] [] | 12
|
|
||||||
gphoto2 | [] [] [] | 11
|
|
||||||
gprof | [] [] | 9
|
|
||||||
gpsdrive | [] [] | 3
|
|
||||||
gramadoir | [] | 5
|
|
||||||
grep | [] [] [] [] | 26
|
|
||||||
gretl | | 3
|
|
||||||
gtick | | 7
|
|
||||||
hello | [] [] [] [] [] | 34
|
|
||||||
id-utils | [] [] | 12
|
|
||||||
indent | [] [] [] [] | 21
|
|
||||||
iso_3166 | [] [] [] [] [] [] [] | 27
|
|
||||||
iso_3166_1 | [] [] [] | 16
|
|
||||||
iso_3166_2 | | 0
|
|
||||||
iso_3166_3 | | 2
|
|
||||||
iso_4217 | [] [] [] [] [] [] | 24
|
|
||||||
iso_639 | | 1
|
|
||||||
jpilot | [] [] [] [] [] | 9
|
|
||||||
jtag | [] | 2
|
|
||||||
jwhois | () [] [] | 11
|
|
||||||
kbd | [] [] | 11
|
|
||||||
latrine | | 2
|
|
||||||
ld | [] [] | 5
|
|
||||||
libc | [] [] [] [] | 20
|
|
||||||
libgpewidget | [] [] [] [] | 13
|
|
||||||
libiconv | [] [] [] [] [] [] [] [] | 27
|
|
||||||
lifelines | [] | 2
|
|
||||||
lilypond | [] | 3
|
|
||||||
lingoteach | | 2
|
|
||||||
lingoteach_lessons | () | 0
|
|
||||||
lynx | [] [] [] | 14
|
|
||||||
m4 | [] [] | 15
|
|
||||||
mailutils | | 5
|
|
||||||
make | [] [] [] | 16
|
|
||||||
man-db | [] | 5
|
|
||||||
minicom | | 11
|
|
||||||
mysecretdiary | [] [] | 10
|
|
||||||
nano | [] [] [] [] | 17
|
|
||||||
nano_1_0 | [] [] [] | 17
|
|
||||||
opcodes | [] [] | 6
|
|
||||||
parted | [] [] [] | 15
|
|
||||||
ptx | [] [] | 22
|
|
||||||
python | | 0
|
|
||||||
radius | | 4
|
|
||||||
recode | [] [] [] | 20
|
|
||||||
rpm | [] [] | 9
|
|
||||||
screem | [] [] | 2
|
|
||||||
scrollkeeper | [] [] [] | 15
|
|
||||||
sed | [] [] [] [] [] [] | 24
|
|
||||||
sh-utils | [] [] | 14
|
|
||||||
shared-mime-info | [] [] | 7
|
|
||||||
sharutils | [] [] [] [] | 17
|
|
||||||
silky | () | 3
|
|
||||||
skencil | [] | 6
|
|
||||||
sketch | [] | 6
|
|
||||||
soundtracker | [] [] | 7
|
|
||||||
sp | [] | 3
|
|
||||||
tar | [] [] [] [] [] | 24
|
|
||||||
texinfo | [] [] [] | 14
|
|
||||||
textutils | [] [] [] [] | 16
|
|
||||||
tin | | 1
|
|
||||||
tp-robot | | 2
|
|
||||||
tuxpaint | [] [] [] [] [] | 29
|
|
||||||
unicode-han-tra... | | 0
|
|
||||||
unicode-transla... | | 2
|
|
||||||
util-linux | [] [] | 15
|
|
||||||
vorbis-tools | | 8
|
|
||||||
wastesedge | | 0
|
|
||||||
wdiff | [] [] [] | 18
|
|
||||||
wget | [] [] [] [] [] [] [] [] | 24
|
|
||||||
xchat | [] [] [] [] [] | 15
|
|
||||||
xfree86_xkb_xml | [] [] [] [] [] | 11
|
|
||||||
xpad | | 5
|
|
||||||
+-----------------------------------------------------+
|
|
||||||
63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
|
|
||||||
131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373
|
|
||||||
|
|
||||||
Some counters in the preceding matrix are higher than the number of
|
|
||||||
visible blocks let us expect. This is because a few extra PO files are
|
|
||||||
used for implementing regional variants of languages, or language
|
|
||||||
dialects.
|
|
||||||
|
|
||||||
For a PO file in the matrix above to be effective, the package to
|
|
||||||
which it applies should also have been internationalized and
|
|
||||||
distributed as such by its maintainer. There might be an observable
|
|
||||||
lag between the mere existence a PO file and its wide availability in a
|
|
||||||
distribution.
|
|
||||||
|
|
||||||
If January 2004 seems to be old, you may fetch a more recent copy of
|
|
||||||
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
|
||||||
matrix with full percentage details can be found at
|
|
||||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
|
||||||
|
|
||||||
Using `gettext' in new packages
|
|
||||||
===============================
|
|
||||||
|
|
||||||
If you are writing a freely available program and want to
|
|
||||||
internationalize it you are welcome to use GNU `gettext' in your
|
|
||||||
package. Of course you have to respect the GNU Library General Public
|
|
||||||
License which covers the use of the GNU `gettext' library. This means
|
|
||||||
in particular that even non-free programs can use `libintl' as a shared
|
|
||||||
library, whereas only free software can use `libintl' as a static
|
|
||||||
library or use modified versions of `libintl'.
|
|
||||||
|
|
||||||
Once the sources are changed appropriately and the setup can handle
|
|
||||||
the use of `gettext' the only thing missing are the translations. The
|
|
||||||
Free Translation Project is also available for packages which are not
|
|
||||||
developed inside the GNU project. Therefore the information given above
|
|
||||||
applies also for every other Free Software Project. Contact
|
|
||||||
`translation@iro.umontreal.ca' to make the `.pot' files available to
|
|
||||||
the translation teams.
|
|
||||||
|
|
||||||
18
AUTHORS
18
AUTHORS
|
|
@ -1,11 +1,25 @@
|
||||||
Main tinc authors:
|
Main tinc authors:
|
||||||
Guus Sliepen <guus@tinc-vpn.org>
|
- Guus Sliepen <guus@tinc-vpn.org>
|
||||||
Ivo Timmermans (inactive)
|
- Ivo Timmermans (inactive)
|
||||||
|
|
||||||
|
Significant contributions from:
|
||||||
|
- Michael Tokarev <mjt@tls.msk.ru>
|
||||||
|
- Florian Forster <octo@verplant.org>
|
||||||
|
- Grzegorz Dymarek <gregd72002@googlemail.com>
|
||||||
|
- Max Rijevski <maksuf@gmail.com>
|
||||||
|
- Scott Lamb <slamb@slamb.org>
|
||||||
|
- Julien Muchembled <jm@jmuchemb.eu>
|
||||||
|
- Timothy Redaelli <timothy@redaelli.eu>
|
||||||
|
- Brandon Black <blblack@gmail.com>
|
||||||
|
- Loïc Grenié <loic.grenie@gmail.com>
|
||||||
|
|
||||||
These files are from other sources:
|
These files are from other sources:
|
||||||
* lib/pidfile.h and lib/pidfile.c are by Martin Schulze, taken from
|
* lib/pidfile.h and lib/pidfile.c are by Martin Schulze, taken from
|
||||||
the syslog 1.3 sources.
|
the syslog 1.3 sources.
|
||||||
|
|
||||||
|
* src/bsd/tunemu.c and tunemu.h are by Friedrich Schöller
|
||||||
|
<friedrich.schoeller@gmail.com>
|
||||||
|
|
||||||
Also some of the macro files in the directory m4, and their
|
Also some of the macro files in the directory m4, and their
|
||||||
accompanying files in lib, were taken from GNU fileutils.
|
accompanying files in lib, were taken from GNU fileutils.
|
||||||
|
|
||||||
|
|
|
||||||
893
COPYING
893
COPYING
|
|
@ -1,674 +1,289 @@
|
||||||
GNU GENERAL PUBLIC LICENSE
|
Copyright (C) 1998-2019 Ivo Timmermans, Guus Sliepen and others.
|
||||||
Version 3, 29 June 2007
|
See the AUTHORS file for a complete list.
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the Free Software
|
||||||
|
Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
Preamble
|
Preamble
|
||||||
|
|
||||||
The GNU General Public License is a free, copyleft license for
|
The licenses for most software are designed to take away your
|
||||||
software and other kinds of works.
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
The licenses for most software and other practical works are designed
|
software--to make sure the software is free for all its users. This
|
||||||
to take away your freedom to share and change the works. By contrast,
|
General Public License applies to most of the Free Software
|
||||||
the GNU General Public License is intended to guarantee your freedom to
|
Foundation's software and to any other program whose authors commit to
|
||||||
share and change all versions of a program--to make sure it remains free
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
software for all its users. We, the Free Software Foundation, use the
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
GNU General Public License for most of our software; it applies also to
|
|
||||||
any other work released this way by its authors. You can apply it to
|
|
||||||
your programs, too.
|
your programs, too.
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
have the freedom to distribute copies of free software (and charge for
|
have the freedom to distribute copies of free software (and charge for
|
||||||
them if you wish), that you receive source code or can get it if you
|
this service if you wish), that you receive source code or can get it
|
||||||
want it, that you can change the software or use pieces of it in new
|
if you want it, that you can change the software or use pieces of it
|
||||||
free programs, and that you know you can do these things.
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
To protect your rights, we need to prevent others from denying you
|
To protect your rights, we need to make restrictions that forbid
|
||||||
these rights or asking you to surrender the rights. Therefore, you have
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
certain responsibilities if you distribute copies of the software, or if
|
These restrictions translate to certain responsibilities for you if you
|
||||||
you modify it: responsibilities to respect the freedom of others.
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
For example, if you distribute copies of such a program, whether
|
||||||
gratis or for a fee, you must pass on to the recipients the same
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
freedoms that you received. You must make sure that they, too, receive
|
you have. You must make sure that they, too, receive or can get the
|
||||||
or can get the source code. And you must show them these terms so they
|
source code. And you must show them these terms so they know their
|
||||||
know their rights.
|
rights.
|
||||||
|
|
||||||
Developers that use the GNU GPL protect your rights with two steps:
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
(1) assert copyright on the software, and (2) offer you this License
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
giving you legal permission to copy, distribute and/or modify it.
|
distribute and/or modify the software.
|
||||||
|
|
||||||
For the developers' and authors' protection, the GPL clearly explains
|
Also, for each author's protection and ours, we want to make certain
|
||||||
that there is no warranty for this free software. For both users' and
|
that everyone understands that there is no warranty for this free
|
||||||
authors' sake, the GPL requires that modified versions be marked as
|
software. If the software is modified by someone else and passed on, we
|
||||||
changed, so that their problems will not be attributed erroneously to
|
want its recipients to know that what they have is not the original, so
|
||||||
authors of previous versions.
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
Some devices are designed to deny users access to install or run
|
Finally, any free program is threatened constantly by software
|
||||||
modified versions of the software inside them, although the manufacturer
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
can do so. This is fundamentally incompatible with the aim of
|
program will individually obtain patent licenses, in effect making the
|
||||||
protecting users' freedom to change the software. The systematic
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
pattern of such abuse occurs in the area of products for individuals to
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
use, which is precisely where it is most unacceptable. Therefore, we
|
|
||||||
have designed this version of the GPL to prohibit the practice for those
|
|
||||||
products. If such problems arise substantially in other domains, we
|
|
||||||
stand ready to extend this provision to those domains in future versions
|
|
||||||
of the GPL, as needed to protect the freedom of users.
|
|
||||||
|
|
||||||
Finally, every program is threatened constantly by software patents.
|
|
||||||
States should not allow patents to restrict development and use of
|
|
||||||
software on general-purpose computers, but in those that do, we wish to
|
|
||||||
avoid the special danger that patents applied to a free program could
|
|
||||||
make it effectively proprietary. To prevent this, the GPL assures that
|
|
||||||
patents cannot be used to render the program non-free.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
|
|
||||||
TERMS AND CONDITIONS
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
0. Definitions.
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
"This License" refers to version 3 of the GNU General Public License.
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
refers to any such program or work, and a "work based on the Program"
|
||||||
works, such as semiconductor masks.
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
"The Program" refers to any copyrightable work licensed under this
|
either verbatim or with modifications and/or translated into another
|
||||||
License. Each licensee is addressed as "you". "Licensees" and
|
language. (Hereinafter, translation is included without limitation in
|
||||||
"recipients" may be individuals or organizations.
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
To "modify" a work means to copy from or adapt all or part of the work
|
Activities other than copying, distribution and modification are not
|
||||||
in a fashion requiring copyright permission, other than the making of an
|
covered by this License; they are outside its scope. The act of
|
||||||
exact copy. The resulting work is called a "modified version" of the
|
running the Program is not restricted, and the output from the Program
|
||||||
earlier work or a work "based on" the earlier work.
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
A "covered work" means either the unmodified Program or a work based
|
Whether that is true depends on what the Program does.
|
||||||
on the Program.
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
To "propagate" a work means to do anything with it that, without
|
source code as you receive it, in any medium, provided that you
|
||||||
permission, would make you directly or secondarily liable for
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
infringement under applicable copyright law, except executing it on a
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
computer or modifying a private copy. Propagation includes copying,
|
notices that refer to this License and to the absence of any warranty;
|
||||||
distribution (with or without modification), making available to the
|
and give any other recipients of the Program a copy of this License
|
||||||
public, and in some countries other activities as well.
|
along with the Program.
|
||||||
|
|
||||||
To "convey" a work means any kind of propagation that enables other
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
parties to make or receive copies. Mere interaction with a user through
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
a computer network, with no transfer of a copy, is not conveying.
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
An interactive user interface displays "Appropriate Legal Notices"
|
of it, thus forming a work based on the Program, and copy and
|
||||||
to the extent that it includes a convenient and prominently visible
|
distribute such modifications or work under the terms of Section 1
|
||||||
feature that (1) displays an appropriate copyright notice, and (2)
|
above, provided that you also meet all of these conditions:
|
||||||
tells the user that there is no warranty for the work (except to the
|
|
||||||
extent that warranties are provided), that licensees may convey the
|
a) You must cause the modified files to carry prominent notices
|
||||||
work under this License, and how to view a copy of this License. If
|
stating that you changed the files and the date of any change.
|
||||||
the interface presents a list of user commands or options, such as a
|
|
||||||
menu, a prominent item in the list meets this criterion.
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
1. Source Code.
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
The "source code" for a work means the preferred form of the work
|
|
||||||
for making modifications to it. "Object code" means any non-source
|
c) If the modified program normally reads commands interactively
|
||||||
form of a work.
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
A "Standard Interface" means an interface that either is an official
|
announcement including an appropriate copyright notice and a
|
||||||
standard defined by a recognized standards body, or, in the case of
|
notice that there is no warranty (or else, saying that you provide
|
||||||
interfaces specified for a particular programming language, one that
|
a warranty) and that users may redistribute the program under
|
||||||
is widely used among developers working in that language.
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
The "System Libraries" of an executable work include anything, other
|
does not normally print such an announcement, your work based on
|
||||||
than the work as a whole, that (a) is included in the normal form of
|
the Program is not required to print an announcement.)
|
||||||
packaging a Major Component, but which is not part of that Major
|
|
||||||
Component, and (b) serves only to enable use of the work with that
|
These requirements apply to the modified work as a whole. If
|
||||||
Major Component, or to implement a Standard Interface for which an
|
identifiable sections of that work are not derived from the Program,
|
||||||
implementation is available to the public in source code form. A
|
and can be reasonably considered independent and separate works in
|
||||||
"Major Component", in this context, means a major essential component
|
themselves, then this License, and its terms, do not apply to those
|
||||||
(kernel, window system, and so on) of the specific operating system
|
sections when you distribute them as separate works. But when you
|
||||||
(if any) on which the executable work runs, or a compiler used to
|
distribute the same sections as part of a whole which is a work based
|
||||||
produce the work, or an object code interpreter used to run it.
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
The "Corresponding Source" for a work in object code form means all
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
the source code needed to generate, install, and (for an executable
|
|
||||||
work) run the object code and to modify the work, including scripts to
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
control those activities. However, it does not include the work's
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
System Libraries, or general-purpose tools or generally available free
|
exercise the right to control the distribution of derivative or
|
||||||
programs which are used unmodified in performing those activities but
|
collective works based on the Program.
|
||||||
which are not part of the work. For example, Corresponding Source
|
|
||||||
includes interface definition files associated with source files for
|
In addition, mere aggregation of another work not based on the Program
|
||||||
the work, and the source code for shared libraries and dynamically
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
linked subprograms that the work is specifically designed to require,
|
a storage or distribution medium does not bring the other work under
|
||||||
such as by intimate data communication or control flow between those
|
the scope of this License.
|
||||||
subprograms and other parts of the work.
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
The Corresponding Source need not include anything that users
|
under Section 2) in object code or executable form under the terms of
|
||||||
can regenerate automatically from other parts of the Corresponding
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
Source.
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
The Corresponding Source for a work in source code form is that
|
source code, which must be distributed under the terms of Sections
|
||||||
same work.
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
2. Basic Permissions.
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
All rights granted under this License are granted for the term of
|
cost of physically performing source distribution, a complete
|
||||||
copyright on the Program, and are irrevocable provided the stated
|
machine-readable copy of the corresponding source code, to be
|
||||||
conditions are met. This License explicitly affirms your unlimited
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
permission to run the unmodified Program. The output from running a
|
customarily used for software interchange; or,
|
||||||
covered work is covered by this License only if the output, given its
|
|
||||||
content, constitutes a covered work. This License acknowledges your
|
c) Accompany it with the information you received as to the offer
|
||||||
rights of fair use or other equivalent, as provided by copyright law.
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
You may make, run and propagate covered works that you do not
|
received the program in object code or executable form with such
|
||||||
convey, without conditions so long as your license otherwise remains
|
an offer, in accord with Subsection b above.)
|
||||||
in force. You may convey covered works to others for the sole purpose
|
|
||||||
of having them make modifications exclusively for you, or provide you
|
The source code for a work means the preferred form of the work for
|
||||||
with facilities for running those works, provided that you comply with
|
making modifications to it. For an executable work, complete source
|
||||||
the terms of this License in conveying all material for which you do
|
code means all the source code for all modules it contains, plus any
|
||||||
not control copyright. Those thus making or running the covered works
|
associated interface definition files, plus the scripts used to
|
||||||
for you must do so exclusively on your behalf, under your direction
|
control compilation and installation of the executable. However, as a
|
||||||
and control, on terms that prohibit them from making any copies of
|
special exception, the source code distributed need not include
|
||||||
your copyrighted material outside their relationship with you.
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
Conveying under any other circumstances is permitted solely under
|
operating system on which the executable runs, unless that component
|
||||||
the conditions stated below. Sublicensing is not allowed; section 10
|
itself accompanies the executable.
|
||||||
makes it unnecessary.
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
No covered work shall be deemed part of an effective technological
|
distribution of the source code, even though third parties are not
|
||||||
measure under any applicable law fulfilling obligations under article
|
compelled to copy the source along with the object code.
|
||||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
|
||||||
similar laws prohibiting or restricting circumvention of such
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
measures.
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
When you convey a covered work, you waive any legal power to forbid
|
void, and will automatically terminate your rights under this License.
|
||||||
circumvention of technological measures to the extent such circumvention
|
However, parties who have received copies, or rights, from you under
|
||||||
is effected by exercising rights under this License with respect to
|
this License will not have their licenses terminated so long as such
|
||||||
the covered work, and you disclaim any intention to limit operation or
|
parties remain in full compliance.
|
||||||
modification of the work as a means of enforcing, against the work's
|
|
||||||
users, your or third parties' legal rights to forbid circumvention of
|
5. You are not required to accept this License, since you have not
|
||||||
technological measures.
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
4. Conveying Verbatim Copies.
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
You may convey verbatim copies of the Program's source code as you
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
receive it, in any medium, provided that you conspicuously and
|
all its terms and conditions for copying, distributing or modifying
|
||||||
appropriately publish on each copy an appropriate copyright notice;
|
the Program or works based on it.
|
||||||
keep intact all notices stating that this License and any
|
|
||||||
non-permissive terms added in accord with section 7 apply to the code;
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
keep intact all notices of the absence of any warranty; and give all
|
Program), the recipient automatically receives a license from the
|
||||||
recipients a copy of this License along with the Program.
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
You may charge any price or no price for each copy that you convey,
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
and you may offer support or warranty protection for a fee.
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
|
||||||
5. Conveying Modified Source Versions.
|
|
||||||
|
|
||||||
You may convey a work based on the Program, or the modifications to
|
|
||||||
produce it from the Program, in the form of source code under the
|
|
||||||
terms of section 4, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The work must carry prominent notices stating that you modified
|
|
||||||
it, and giving a relevant date.
|
|
||||||
|
|
||||||
b) The work must carry prominent notices stating that it is
|
|
||||||
released under this License and any conditions added under section
|
|
||||||
7. This requirement modifies the requirement in section 4 to
|
|
||||||
"keep intact all notices".
|
|
||||||
|
|
||||||
c) You must license the entire work, as a whole, under this
|
|
||||||
License to anyone who comes into possession of a copy. This
|
|
||||||
License will therefore apply, along with any applicable section 7
|
|
||||||
additional terms, to the whole of the work, and all its parts,
|
|
||||||
regardless of how they are packaged. This License gives no
|
|
||||||
permission to license the work in any other way, but it does not
|
|
||||||
invalidate such permission if you have separately received it.
|
|
||||||
|
|
||||||
d) If the work has interactive user interfaces, each must display
|
|
||||||
Appropriate Legal Notices; however, if the Program has interactive
|
|
||||||
interfaces that do not display Appropriate Legal Notices, your
|
|
||||||
work need not make them do so.
|
|
||||||
|
|
||||||
A compilation of a covered work with other separate and independent
|
|
||||||
works, which are not by their nature extensions of the covered work,
|
|
||||||
and which are not combined with it such as to form a larger program,
|
|
||||||
in or on a volume of a storage or distribution medium, is called an
|
|
||||||
"aggregate" if the compilation and its resulting copyright are not
|
|
||||||
used to limit the access or legal rights of the compilation's users
|
|
||||||
beyond what the individual works permit. Inclusion of a covered work
|
|
||||||
in an aggregate does not cause this License to apply to the other
|
|
||||||
parts of the aggregate.
|
|
||||||
|
|
||||||
6. Conveying Non-Source Forms.
|
|
||||||
|
|
||||||
You may convey a covered work in object code form under the terms
|
|
||||||
of sections 4 and 5, provided that you also convey the
|
|
||||||
machine-readable Corresponding Source under the terms of this License,
|
|
||||||
in one of these ways:
|
|
||||||
|
|
||||||
a) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by the
|
|
||||||
Corresponding Source fixed on a durable physical medium
|
|
||||||
customarily used for software interchange.
|
|
||||||
|
|
||||||
b) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by a
|
|
||||||
written offer, valid for at least three years and valid for as
|
|
||||||
long as you offer spare parts or customer support for that product
|
|
||||||
model, to give anyone who possesses the object code either (1) a
|
|
||||||
copy of the Corresponding Source for all the software in the
|
|
||||||
product that is covered by this License, on a durable physical
|
|
||||||
medium customarily used for software interchange, for a price no
|
|
||||||
more than your reasonable cost of physically performing this
|
|
||||||
conveying of source, or (2) access to copy the
|
|
||||||
Corresponding Source from a network server at no charge.
|
|
||||||
|
|
||||||
c) Convey individual copies of the object code with a copy of the
|
|
||||||
written offer to provide the Corresponding Source. This
|
|
||||||
alternative is allowed only occasionally and noncommercially, and
|
|
||||||
only if you received the object code with such an offer, in accord
|
|
||||||
with subsection 6b.
|
|
||||||
|
|
||||||
d) Convey the object code by offering access from a designated
|
|
||||||
place (gratis or for a charge), and offer equivalent access to the
|
|
||||||
Corresponding Source in the same way through the same place at no
|
|
||||||
further charge. You need not require recipients to copy the
|
|
||||||
Corresponding Source along with the object code. If the place to
|
|
||||||
copy the object code is a network server, the Corresponding Source
|
|
||||||
may be on a different server (operated by you or a third party)
|
|
||||||
that supports equivalent copying facilities, provided you maintain
|
|
||||||
clear directions next to the object code saying where to find the
|
|
||||||
Corresponding Source. Regardless of what server hosts the
|
|
||||||
Corresponding Source, you remain obligated to ensure that it is
|
|
||||||
available for as long as needed to satisfy these requirements.
|
|
||||||
|
|
||||||
e) Convey the object code using peer-to-peer transmission, provided
|
|
||||||
you inform other peers where the object code and Corresponding
|
|
||||||
Source of the work are being offered to the general public at no
|
|
||||||
charge under subsection 6d.
|
|
||||||
|
|
||||||
A separable portion of the object code, whose source code is excluded
|
|
||||||
from the Corresponding Source as a System Library, need not be
|
|
||||||
included in conveying the object code work.
|
|
||||||
|
|
||||||
A "User Product" is either (1) a "consumer product", which means any
|
|
||||||
tangible personal property which is normally used for personal, family,
|
|
||||||
or household purposes, or (2) anything designed or sold for incorporation
|
|
||||||
into a dwelling. In determining whether a product is a consumer product,
|
|
||||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
|
||||||
product received by a particular user, "normally used" refers to a
|
|
||||||
typical or common use of that class of product, regardless of the status
|
|
||||||
of the particular user or of the way in which the particular user
|
|
||||||
actually uses, or expects or is expected to use, the product. A product
|
|
||||||
is a consumer product regardless of whether the product has substantial
|
|
||||||
commercial, industrial or non-consumer uses, unless such uses represent
|
|
||||||
the only significant mode of use of the product.
|
|
||||||
|
|
||||||
"Installation Information" for a User Product means any methods,
|
|
||||||
procedures, authorization keys, or other information required to install
|
|
||||||
and execute modified versions of a covered work in that User Product from
|
|
||||||
a modified version of its Corresponding Source. The information must
|
|
||||||
suffice to ensure that the continued functioning of the modified object
|
|
||||||
code is in no case prevented or interfered with solely because
|
|
||||||
modification has been made.
|
|
||||||
|
|
||||||
If you convey an object code work under this section in, or with, or
|
|
||||||
specifically for use in, a User Product, and the conveying occurs as
|
|
||||||
part of a transaction in which the right of possession and use of the
|
|
||||||
User Product is transferred to the recipient in perpetuity or for a
|
|
||||||
fixed term (regardless of how the transaction is characterized), the
|
|
||||||
Corresponding Source conveyed under this section must be accompanied
|
|
||||||
by the Installation Information. But this requirement does not apply
|
|
||||||
if neither you nor any third party retains the ability to install
|
|
||||||
modified object code on the User Product (for example, the work has
|
|
||||||
been installed in ROM).
|
|
||||||
|
|
||||||
The requirement to provide Installation Information does not include a
|
|
||||||
requirement to continue to provide support service, warranty, or updates
|
|
||||||
for a work that has been modified or installed by the recipient, or for
|
|
||||||
the User Product in which it has been modified or installed. Access to a
|
|
||||||
network may be denied when the modification itself materially and
|
|
||||||
adversely affects the operation of the network or violates the rules and
|
|
||||||
protocols for communication across the network.
|
|
||||||
|
|
||||||
Corresponding Source conveyed, and Installation Information provided,
|
|
||||||
in accord with this section must be in a format that is publicly
|
|
||||||
documented (and with an implementation available to the public in
|
|
||||||
source code form), and must require no special password or key for
|
|
||||||
unpacking, reading or copying.
|
|
||||||
|
|
||||||
7. Additional Terms.
|
|
||||||
|
|
||||||
"Additional permissions" are terms that supplement the terms of this
|
|
||||||
License by making exceptions from one or more of its conditions.
|
|
||||||
Additional permissions that are applicable to the entire Program shall
|
|
||||||
be treated as though they were included in this License, to the extent
|
|
||||||
that they are valid under applicable law. If additional permissions
|
|
||||||
apply only to part of the Program, that part may be used separately
|
|
||||||
under those permissions, but the entire Program remains governed by
|
|
||||||
this License without regard to the additional permissions.
|
|
||||||
|
|
||||||
When you convey a copy of a covered work, you may at your option
|
|
||||||
remove any additional permissions from that copy, or from any part of
|
|
||||||
it. (Additional permissions may be written to require their own
|
|
||||||
removal in certain cases when you modify the work.) You may place
|
|
||||||
additional permissions on material, added by you to a covered work,
|
|
||||||
for which you have or can give appropriate copyright permission.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, for material you
|
|
||||||
add to a covered work, you may (if authorized by the copyright holders of
|
|
||||||
that material) supplement the terms of this License with terms:
|
|
||||||
|
|
||||||
a) Disclaiming warranty or limiting liability differently from the
|
|
||||||
terms of sections 15 and 16 of this License; or
|
|
||||||
|
|
||||||
b) Requiring preservation of specified reasonable legal notices or
|
|
||||||
author attributions in that material or in the Appropriate Legal
|
|
||||||
Notices displayed by works containing it; or
|
|
||||||
|
|
||||||
c) Prohibiting misrepresentation of the origin of that material, or
|
|
||||||
requiring that modified versions of such material be marked in
|
|
||||||
reasonable ways as different from the original version; or
|
|
||||||
|
|
||||||
d) Limiting the use for publicity purposes of names of licensors or
|
|
||||||
authors of the material; or
|
|
||||||
|
|
||||||
e) Declining to grant rights under trademark law for use of some
|
|
||||||
trade names, trademarks, or service marks; or
|
|
||||||
|
|
||||||
f) Requiring indemnification of licensors and authors of that
|
|
||||||
material by anyone who conveys the material (or modified versions of
|
|
||||||
it) with contractual assumptions of liability to the recipient, for
|
|
||||||
any liability that these contractual assumptions directly impose on
|
|
||||||
those licensors and authors.
|
|
||||||
|
|
||||||
All other non-permissive additional terms are considered "further
|
|
||||||
restrictions" within the meaning of section 10. If the Program as you
|
|
||||||
received it, or any part of it, contains a notice stating that it is
|
|
||||||
governed by this License along with a term that is a further
|
|
||||||
restriction, you may remove that term. If a license document contains
|
|
||||||
a further restriction but permits relicensing or conveying under this
|
|
||||||
License, you may add to a covered work material governed by the terms
|
|
||||||
of that license document, provided that the further restriction does
|
|
||||||
not survive such relicensing or conveying.
|
|
||||||
|
|
||||||
If you add terms to a covered work in accord with this section, you
|
|
||||||
must place, in the relevant source files, a statement of the
|
|
||||||
additional terms that apply to those files, or a notice indicating
|
|
||||||
where to find the applicable terms.
|
|
||||||
|
|
||||||
Additional terms, permissive or non-permissive, may be stated in the
|
|
||||||
form of a separately written license, or stated as exceptions;
|
|
||||||
the above requirements apply either way.
|
|
||||||
|
|
||||||
8. Termination.
|
|
||||||
|
|
||||||
You may not propagate or modify a covered work except as expressly
|
|
||||||
provided under this License. Any attempt otherwise to propagate or
|
|
||||||
modify it is void, and will automatically terminate your rights under
|
|
||||||
this License (including any patent licenses granted under the third
|
|
||||||
paragraph of section 11).
|
|
||||||
|
|
||||||
However, if you cease all violation of this License, then your
|
|
||||||
license from a particular copyright holder is reinstated (a)
|
|
||||||
provisionally, unless and until the copyright holder explicitly and
|
|
||||||
finally terminates your license, and (b) permanently, if the copyright
|
|
||||||
holder fails to notify you of the violation by some reasonable means
|
|
||||||
prior to 60 days after the cessation.
|
|
||||||
|
|
||||||
Moreover, your license from a particular copyright holder is
|
|
||||||
reinstated permanently if the copyright holder notifies you of the
|
|
||||||
violation by some reasonable means, this is the first time you have
|
|
||||||
received notice of violation of this License (for any work) from that
|
|
||||||
copyright holder, and you cure the violation prior to 30 days after
|
|
||||||
your receipt of the notice.
|
|
||||||
|
|
||||||
Termination of your rights under this section does not terminate the
|
|
||||||
licenses of parties who have received copies or rights from you under
|
|
||||||
this License. If your rights have been terminated and not permanently
|
|
||||||
reinstated, you do not qualify to receive new licenses for the same
|
|
||||||
material under section 10.
|
|
||||||
|
|
||||||
9. Acceptance Not Required for Having Copies.
|
|
||||||
|
|
||||||
You are not required to accept this License in order to receive or
|
|
||||||
run a copy of the Program. Ancillary propagation of a covered work
|
|
||||||
occurring solely as a consequence of using peer-to-peer transmission
|
|
||||||
to receive a copy likewise does not require acceptance. However,
|
|
||||||
nothing other than this License grants you permission to propagate or
|
|
||||||
modify any covered work. These actions infringe copyright if you do
|
|
||||||
not accept this License. Therefore, by modifying or propagating a
|
|
||||||
covered work, you indicate your acceptance of this License to do so.
|
|
||||||
|
|
||||||
10. Automatic Licensing of Downstream Recipients.
|
|
||||||
|
|
||||||
Each time you convey a covered work, the recipient automatically
|
|
||||||
receives a license from the original licensors, to run, modify and
|
|
||||||
propagate that work, subject to this License. You are not responsible
|
|
||||||
for enforcing compliance by third parties with this License.
|
|
||||||
|
|
||||||
An "entity transaction" is a transaction transferring control of an
|
|
||||||
organization, or substantially all assets of one, or subdividing an
|
|
||||||
organization, or merging organizations. If propagation of a covered
|
|
||||||
work results from an entity transaction, each party to that
|
|
||||||
transaction who receives a copy of the work also receives whatever
|
|
||||||
licenses to the work the party's predecessor in interest had or could
|
|
||||||
give under the previous paragraph, plus a right to possession of the
|
|
||||||
Corresponding Source of the work from the predecessor in interest, if
|
|
||||||
the predecessor has it or can get it with reasonable efforts.
|
|
||||||
|
|
||||||
You may not impose any further restrictions on the exercise of the
|
|
||||||
rights granted or affirmed under this License. For example, you may
|
|
||||||
not impose a license fee, royalty, or other charge for exercise of
|
|
||||||
rights granted under this License, and you may not initiate litigation
|
|
||||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
|
||||||
any patent claim is infringed by making, using, selling, offering for
|
|
||||||
sale, or importing the Program or any portion of it.
|
|
||||||
|
|
||||||
11. Patents.
|
|
||||||
|
|
||||||
A "contributor" is a copyright holder who authorizes use under this
|
|
||||||
License of the Program or a work on which the Program is based. The
|
|
||||||
work thus licensed is called the contributor's "contributor version".
|
|
||||||
|
|
||||||
A contributor's "essential patent claims" are all patent claims
|
|
||||||
owned or controlled by the contributor, whether already acquired or
|
|
||||||
hereafter acquired, that would be infringed by some manner, permitted
|
|
||||||
by this License, of making, using, or selling its contributor version,
|
|
||||||
but do not include claims that would be infringed only as a
|
|
||||||
consequence of further modification of the contributor version. For
|
|
||||||
purposes of this definition, "control" includes the right to grant
|
|
||||||
patent sublicenses in a manner consistent with the requirements of
|
|
||||||
this License.
|
this License.
|
||||||
|
|
||||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
patent license under the contributor's essential patent claims, to
|
infringement or for any other reason (not limited to patent issues),
|
||||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
propagate the contents of its contributor version.
|
|
||||||
|
|
||||||
In the following three paragraphs, a "patent license" is any express
|
|
||||||
agreement or commitment, however denominated, not to enforce a patent
|
|
||||||
(such as an express permission to practice a patent or covenant not to
|
|
||||||
sue for patent infringement). To "grant" such a patent license to a
|
|
||||||
party means to make such an agreement or commitment not to enforce a
|
|
||||||
patent against the party.
|
|
||||||
|
|
||||||
If you convey a covered work, knowingly relying on a patent license,
|
|
||||||
and the Corresponding Source of the work is not available for anyone
|
|
||||||
to copy, free of charge and under the terms of this License, through a
|
|
||||||
publicly available network server or other readily accessible means,
|
|
||||||
then you must either (1) cause the Corresponding Source to be so
|
|
||||||
available, or (2) arrange to deprive yourself of the benefit of the
|
|
||||||
patent license for this particular work, or (3) arrange, in a manner
|
|
||||||
consistent with the requirements of this License, to extend the patent
|
|
||||||
license to downstream recipients. "Knowingly relying" means you have
|
|
||||||
actual knowledge that, but for the patent license, your conveying the
|
|
||||||
covered work in a country, or your recipient's use of the covered work
|
|
||||||
in a country, would infringe one or more identifiable patents in that
|
|
||||||
country that you have reason to believe are valid.
|
|
||||||
|
|
||||||
If, pursuant to or in connection with a single transaction or
|
|
||||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
|
||||||
covered work, and grant a patent license to some of the parties
|
|
||||||
receiving the covered work authorizing them to use, propagate, modify
|
|
||||||
or convey a specific copy of the covered work, then the patent license
|
|
||||||
you grant is automatically extended to all recipients of the covered
|
|
||||||
work and works based on it.
|
|
||||||
|
|
||||||
A patent license is "discriminatory" if it does not include within
|
|
||||||
the scope of its coverage, prohibits the exercise of, or is
|
|
||||||
conditioned on the non-exercise of one or more of the rights that are
|
|
||||||
specifically granted under this License. You may not convey a covered
|
|
||||||
work if you are a party to an arrangement with a third party that is
|
|
||||||
in the business of distributing software, under which you make payment
|
|
||||||
to the third party based on the extent of your activity of conveying
|
|
||||||
the work, and under which the third party grants, to any of the
|
|
||||||
parties who would receive the covered work from you, a discriminatory
|
|
||||||
patent license (a) in connection with copies of the covered work
|
|
||||||
conveyed by you (or copies made from those copies), or (b) primarily
|
|
||||||
for and in connection with specific products or compilations that
|
|
||||||
contain the covered work, unless you entered into that arrangement,
|
|
||||||
or that patent license was granted, prior to 28 March 2007.
|
|
||||||
|
|
||||||
Nothing in this License shall be construed as excluding or limiting
|
|
||||||
any implied license or other defenses to infringement that may
|
|
||||||
otherwise be available to you under applicable patent law.
|
|
||||||
|
|
||||||
12. No Surrender of Others' Freedom.
|
|
||||||
|
|
||||||
If conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
excuse you from the conditions of this License. If you cannot convey a
|
excuse you from the conditions of this License. If you cannot
|
||||||
covered work so as to satisfy simultaneously your obligations under this
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
License and any other pertinent obligations, then as a consequence you may
|
License and any other pertinent obligations, then as a consequence you
|
||||||
not convey it at all. For example, if you agree to terms that obligate you
|
may not distribute the Program at all. For example, if a patent
|
||||||
to collect a royalty for further conveying from those to whom you convey
|
license would not permit royalty-free redistribution of the Program by
|
||||||
the Program, the only way you could satisfy both those terms and this
|
all those who receive copies directly or indirectly through you, then
|
||||||
License would be to refrain entirely from conveying the Program.
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
13. Use with the GNU Affero General Public License.
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, you have
|
It is not the purpose of this section to induce you to infringe any
|
||||||
permission to link or combine any covered work with a work licensed
|
patents or other property right claims or to contest validity of any
|
||||||
under version 3 of the GNU Affero General Public License into a single
|
such claims; this section has the sole purpose of protecting the
|
||||||
combined work, and to convey the resulting work. The terms of this
|
integrity of the free software distribution system, which is
|
||||||
License will continue to apply to the part which is the covered work,
|
implemented by public license practices. Many people have made
|
||||||
but the special requirements of the GNU Affero General Public License,
|
generous contributions to the wide range of software distributed
|
||||||
section 13, concerning interaction through a network will apply to the
|
through that system in reliance on consistent application of that
|
||||||
combination as such.
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
14. Revised Versions of this License.
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions of
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
the GNU General Public License from time to time. Such new versions will
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
address new problems or concerns.
|
address new problems or concerns.
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
Each version is given a distinguishing version number. If the Program
|
||||||
Program specifies that a certain numbered version of the GNU General
|
specifies a version number of this License which applies to it and "any
|
||||||
Public License "or any later version" applies to it, you have the
|
later version", you have the option of following the terms and conditions
|
||||||
option of following the terms and conditions either of that numbered
|
either of that version or of any later version published by the Free
|
||||||
version or of any later version published by the Free Software
|
Software Foundation. If the Program does not specify a version number of
|
||||||
Foundation. If the Program does not specify a version number of the
|
this License, you may choose any version ever published by the Free Software
|
||||||
GNU General Public License, you may choose any version ever published
|
Foundation.
|
||||||
by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Program specifies that a proxy can decide which future
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
versions of the GNU General Public License can be used, that proxy's
|
programs whose distribution conditions are different, write to the author
|
||||||
public statement of acceptance of a version permanently authorizes you
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
to choose that version for the Program.
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
Later license versions may give you additional or different
|
NO WARRANTY
|
||||||
permissions. However, no additional obligations are imposed on any
|
|
||||||
author or copyright holder as a result of your choosing to follow a
|
|
||||||
later version.
|
|
||||||
|
|
||||||
15. Disclaimer of Warranty.
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
16. Limitation of Liability.
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
|
||||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
|
||||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
|
||||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
|
||||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
|
||||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
|
||||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
|
||||||
SUCH DAMAGES.
|
|
||||||
|
|
||||||
17. Interpretation of Sections 15 and 16.
|
|
||||||
|
|
||||||
If the disclaimer of warranty and limitation of liability provided
|
|
||||||
above cannot be given local legal effect according to their terms,
|
|
||||||
reviewing courts shall apply local law that most closely approximates
|
|
||||||
an absolute waiver of all civil liability in connection with the
|
|
||||||
Program, unless a warranty or assumption of liability accompanies a
|
|
||||||
copy of the Program in return for a fee.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
state the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program does terminal interaction, make it output a short
|
|
||||||
notice like this when it starts in an interactive mode:
|
|
||||||
|
|
||||||
<program> Copyright (C) <year> <name of author>
|
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, your program's commands
|
|
||||||
might be different; for a GUI interface, you would use an "about box".
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or school,
|
|
||||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
|
||||||
For more information on this, and how to apply and follow the GNU GPL, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
The GNU General Public License does not permit incorporating your program
|
|
||||||
into proprietary programs. If your program is a subroutine library, you
|
|
||||||
may consider it more useful to permit linking proprietary applications with
|
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
|
||||||
Public License instead of this License. But first, please read
|
|
||||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,13 @@ of the GPL are met.
|
||||||
|
|
||||||
The following applies to the LZO library:
|
The following applies to the LZO library:
|
||||||
|
|
||||||
Hereby I grant a special exception to the tinc VPN project
|
Hereby I grant a special exception to the tinc VPN project
|
||||||
(http://tinc.nl.linux.org/) to link the LZO library with the OpenSSL library
|
(http://tinc.nl.linux.org/) to link the LZO library with the OpenSSL library
|
||||||
(http://www.openssl.org).
|
(http://www.openssl.org).
|
||||||
|
|
||||||
|
Markus F.X.J. Oberhumer
|
||||||
|
|
||||||
|
When tinc is compiled with the --enable-tunemu option, the resulting binary
|
||||||
|
falls under the GPL version 3 or later.
|
||||||
|
|
||||||
|
|
||||||
Markus F.X.J. Oberhumer
|
|
||||||
|
|
|
||||||
371
INSTALL
371
INSTALL
|
|
@ -1,85 +1,107 @@
|
||||||
Installation Instructions
|
Installation Instructions
|
||||||
*************************
|
*************************
|
||||||
|
|
||||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
|
||||||
2006, 2007 Free Software Foundation, Inc.
|
Foundation, Inc.
|
||||||
|
|
||||||
This file is free documentation; the Free Software Foundation gives
|
Copying and distribution of this file, with or without modification,
|
||||||
unlimited permission to copy, distribute and modify it.
|
are permitted in any medium without royalty provided the copyright
|
||||||
|
notice and this notice are preserved. This file is offered as-is,
|
||||||
|
without warranty of any kind.
|
||||||
|
|
||||||
Basic Installation
|
Basic Installation
|
||||||
==================
|
==================
|
||||||
|
|
||||||
Briefly, the shell commands `./configure; make; make install' should
|
Briefly, the shell command './configure && make && make install'
|
||||||
configure, build, and install this package. The following
|
should configure, build, and install this package. The following
|
||||||
more-detailed instructions are generic; see the `README' file for
|
more-detailed instructions are generic; see the 'README' file for
|
||||||
instructions specific to this package.
|
instructions specific to this package. Some packages provide this
|
||||||
|
'INSTALL' file but do not implement all of the features documented
|
||||||
|
below. The lack of an optional feature in a given package is not
|
||||||
|
necessarily a bug. More recommendations for GNU packages can be found
|
||||||
|
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||||
|
|
||||||
The `configure' shell script attempts to guess correct values for
|
The 'configure' shell script attempts to guess correct values for
|
||||||
various system-dependent variables used during compilation. It uses
|
various system-dependent variables used during compilation. It uses
|
||||||
those values to create a `Makefile' in each directory of the package.
|
those values to create a 'Makefile' in each directory of the package.
|
||||||
It may also create one or more `.h' files containing system-dependent
|
It may also create one or more '.h' files containing system-dependent
|
||||||
definitions. Finally, it creates a shell script `config.status' that
|
definitions. Finally, it creates a shell script 'config.status' that
|
||||||
you can run in the future to recreate the current configuration, and a
|
you can run in the future to recreate the current configuration, and a
|
||||||
file `config.log' containing compiler output (useful mainly for
|
file 'config.log' containing compiler output (useful mainly for
|
||||||
debugging `configure').
|
debugging 'configure').
|
||||||
|
|
||||||
It can also use an optional file (typically called `config.cache'
|
It can also use an optional file (typically called 'config.cache' and
|
||||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
enabled with '--cache-file=config.cache' or simply '-C') that saves the
|
||||||
the results of its tests to speed up reconfiguring. Caching is
|
results of its tests to speed up reconfiguring. Caching is disabled by
|
||||||
disabled by default to prevent problems with accidental use of stale
|
default to prevent problems with accidental use of stale cache files.
|
||||||
cache files.
|
|
||||||
|
|
||||||
If you need to do unusual things to compile the package, please try
|
If you need to do unusual things to compile the package, please try
|
||||||
to figure out how `configure' could check whether to do them, and mail
|
to figure out how 'configure' could check whether to do them, and mail
|
||||||
diffs or instructions to the address given in the `README' so they can
|
diffs or instructions to the address given in the 'README' so they can
|
||||||
be considered for the next release. If you are using the cache, and at
|
be considered for the next release. If you are using the cache, and at
|
||||||
some point `config.cache' contains results you don't want to keep, you
|
some point 'config.cache' contains results you don't want to keep, you
|
||||||
may remove or edit it.
|
may remove or edit it.
|
||||||
|
|
||||||
The file `configure.ac' (or `configure.in') is used to create
|
The file 'configure.ac' (or 'configure.in') is used to create
|
||||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
'configure' by a program called 'autoconf'. You need 'configure.ac' if
|
||||||
you want to change it or regenerate `configure' using a newer version
|
you want to change it or regenerate 'configure' using a newer version of
|
||||||
of `autoconf'.
|
'autoconf'.
|
||||||
|
|
||||||
The simplest way to compile this package is:
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
1. `cd' to the directory containing the package's source code and type
|
1. 'cd' to the directory containing the package's source code and type
|
||||||
`./configure' to configure the package for your system.
|
'./configure' to configure the package for your system.
|
||||||
|
|
||||||
Running `configure' might take a while. While running, it prints
|
Running 'configure' might take a while. While running, it prints
|
||||||
some messages telling which features it is checking for.
|
some messages telling which features it is checking for.
|
||||||
|
|
||||||
2. Type `make' to compile the package.
|
2. Type 'make' to compile the package.
|
||||||
|
|
||||||
3. Optionally, type `make check' to run any self-tests that come with
|
3. Optionally, type 'make check' to run any self-tests that come with
|
||||||
the package.
|
the package, generally using the just-built uninstalled binaries.
|
||||||
|
|
||||||
4. Type `make install' to install the programs and any data files and
|
4. Type 'make install' to install the programs and any data files and
|
||||||
documentation.
|
documentation. When installing into a prefix owned by root, it is
|
||||||
|
recommended that the package be configured and built as a regular
|
||||||
|
user, and only the 'make install' phase executed with root
|
||||||
|
privileges.
|
||||||
|
|
||||||
5. You can remove the program binaries and object files from the
|
5. Optionally, type 'make installcheck' to repeat any self-tests, but
|
||||||
source code directory by typing `make clean'. To also remove the
|
this time using the binaries in their final installed location.
|
||||||
files that `configure' created (so you can compile the package for
|
This target does not install anything. Running this target as a
|
||||||
a different kind of computer), type `make distclean'. There is
|
regular user, particularly if the prior 'make install' required
|
||||||
also a `make maintainer-clean' target, but that is intended mainly
|
root privileges, verifies that the installation completed
|
||||||
|
correctly.
|
||||||
|
|
||||||
|
6. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing 'make clean'. To also remove the
|
||||||
|
files that 'configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type 'make distclean'. There is
|
||||||
|
also a 'make maintainer-clean' target, but that is intended mainly
|
||||||
for the package's developers. If you use it, you may have to get
|
for the package's developers. If you use it, you may have to get
|
||||||
all sorts of other programs in order to regenerate files that came
|
all sorts of other programs in order to regenerate files that came
|
||||||
with the distribution.
|
with the distribution.
|
||||||
|
|
||||||
6. Often, you can also type `make uninstall' to remove the installed
|
7. Often, you can also type 'make uninstall' to remove the installed
|
||||||
files again.
|
files again. In practice, not all packages have tested that
|
||||||
|
uninstallation works correctly, even though it is required by the
|
||||||
|
GNU Coding Standards.
|
||||||
|
|
||||||
|
8. Some packages, particularly those that use Automake, provide 'make
|
||||||
|
distcheck', which can by used by developers to test that all other
|
||||||
|
targets like 'make install' and 'make uninstall' work correctly.
|
||||||
|
This target is generally not run by end users.
|
||||||
|
|
||||||
Compilers and Options
|
Compilers and Options
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
Some systems require unusual options for compilation or linking that the
|
Some systems require unusual options for compilation or linking that
|
||||||
`configure' script does not know about. Run `./configure --help' for
|
the 'configure' script does not know about. Run './configure --help'
|
||||||
details on some of the pertinent environment variables.
|
for details on some of the pertinent environment variables.
|
||||||
|
|
||||||
You can give `configure' initial values for configuration parameters
|
You can give 'configure' initial values for configuration parameters
|
||||||
by setting variables in the command line or in the environment. Here
|
by setting variables in the command line or in the environment. Here is
|
||||||
is an example:
|
an example:
|
||||||
|
|
||||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||||
|
|
||||||
|
|
@ -88,150 +110,259 @@ is an example:
|
||||||
Compiling For Multiple Architectures
|
Compiling For Multiple Architectures
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
You can compile the package for more than one kind of computer at the
|
You can compile the package for more than one kind of computer at the
|
||||||
same time, by placing the object files for each architecture in their
|
same time, by placing the object files for each architecture in their
|
||||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
own directory. To do this, you can use GNU 'make'. 'cd' to the
|
||||||
directory where you want the object files and executables to go and run
|
directory where you want the object files and executables to go and run
|
||||||
the `configure' script. `configure' automatically checks for the
|
the 'configure' script. 'configure' automatically checks for the source
|
||||||
source code in the directory that `configure' is in and in `..'.
|
code in the directory that 'configure' is in and in '..'. This is known
|
||||||
|
as a "VPATH" build.
|
||||||
|
|
||||||
With a non-GNU `make', it is safer to compile the package for one
|
With a non-GNU 'make', it is safer to compile the package for one
|
||||||
architecture at a time in the source code directory. After you have
|
architecture at a time in the source code directory. After you have
|
||||||
installed the package for one architecture, use `make distclean' before
|
installed the package for one architecture, use 'make distclean' before
|
||||||
reconfiguring for another architecture.
|
reconfiguring for another architecture.
|
||||||
|
|
||||||
|
On MacOS X 10.5 and later systems, you can create libraries and
|
||||||
|
executables that work on multiple system types--known as "fat" or
|
||||||
|
"universal" binaries--by specifying multiple '-arch' options to the
|
||||||
|
compiler but only a single '-arch' option to the preprocessor. Like
|
||||||
|
this:
|
||||||
|
|
||||||
|
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||||
|
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||||
|
CPP="gcc -E" CXXCPP="g++ -E"
|
||||||
|
|
||||||
|
This is not guaranteed to produce working output in all cases, you
|
||||||
|
may have to build one architecture at a time and combine the results
|
||||||
|
using the 'lipo' tool if you have problems.
|
||||||
|
|
||||||
Installation Names
|
Installation Names
|
||||||
==================
|
==================
|
||||||
|
|
||||||
By default, `make install' installs the package's commands under
|
By default, 'make install' installs the package's commands under
|
||||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
'/usr/local/bin', include files under '/usr/local/include', etc. You
|
||||||
can specify an installation prefix other than `/usr/local' by giving
|
can specify an installation prefix other than '/usr/local' by giving
|
||||||
`configure' the option `--prefix=PREFIX'.
|
'configure' the option '--prefix=PREFIX', where PREFIX must be an
|
||||||
|
absolute file name.
|
||||||
|
|
||||||
You can specify separate installation prefixes for
|
You can specify separate installation prefixes for
|
||||||
architecture-specific files and architecture-independent files. If you
|
architecture-specific files and architecture-independent files. If you
|
||||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
|
||||||
PREFIX as the prefix for installing programs and libraries.
|
PREFIX as the prefix for installing programs and libraries.
|
||||||
Documentation and other data files still use the regular prefix.
|
Documentation and other data files still use the regular prefix.
|
||||||
|
|
||||||
In addition, if you use an unusual directory layout you can give
|
In addition, if you use an unusual directory layout you can give
|
||||||
options like `--bindir=DIR' to specify different values for particular
|
options like '--bindir=DIR' to specify different values for particular
|
||||||
kinds of files. Run `configure --help' for a list of the directories
|
kinds of files. Run 'configure --help' for a list of the directories
|
||||||
you can set and what kinds of files go in them.
|
you can set and what kinds of files go in them. In general, the default
|
||||||
|
for these options is expressed in terms of '${prefix}', so that
|
||||||
|
specifying just '--prefix' will affect all of the other directory
|
||||||
|
specifications that were not explicitly provided.
|
||||||
|
|
||||||
If the package supports it, you can cause programs to be installed
|
The most portable way to affect installation locations is to pass the
|
||||||
with an extra prefix or suffix on their names by giving `configure' the
|
correct locations to 'configure'; however, many packages provide one or
|
||||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
both of the following shortcuts of passing variable assignments to the
|
||||||
|
'make install' command line to change installation locations without
|
||||||
|
having to reconfigure or recompile.
|
||||||
|
|
||||||
|
The first method involves providing an override variable for each
|
||||||
|
affected directory. For example, 'make install
|
||||||
|
prefix=/alternate/directory' will choose an alternate location for all
|
||||||
|
directory configuration variables that were expressed in terms of
|
||||||
|
'${prefix}'. Any directories that were specified during 'configure',
|
||||||
|
but not in terms of '${prefix}', must each be overridden at install time
|
||||||
|
for the entire installation to be relocated. The approach of makefile
|
||||||
|
variable overrides for each directory variable is required by the GNU
|
||||||
|
Coding Standards, and ideally causes no recompilation. However, some
|
||||||
|
platforms have known limitations with the semantics of shared libraries
|
||||||
|
that end up requiring recompilation when using this method, particularly
|
||||||
|
noticeable in packages that use GNU Libtool.
|
||||||
|
|
||||||
|
The second method involves providing the 'DESTDIR' variable. For
|
||||||
|
example, 'make install DESTDIR=/alternate/directory' will prepend
|
||||||
|
'/alternate/directory' before all installation names. The approach of
|
||||||
|
'DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||||
|
does not work on platforms that have drive letters. On the other hand,
|
||||||
|
it does better at avoiding recompilation issues, and works well even
|
||||||
|
when some directory options were not specified in terms of '${prefix}'
|
||||||
|
at 'configure' time.
|
||||||
|
|
||||||
Optional Features
|
Optional Features
|
||||||
=================
|
=================
|
||||||
|
|
||||||
Some packages pay attention to `--enable-FEATURE' options to
|
If the package supports it, you can cause programs to be installed
|
||||||
`configure', where FEATURE indicates an optional part of the package.
|
with an extra prefix or suffix on their names by giving 'configure' the
|
||||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
|
||||||
is something like `gnu-as' or `x' (for the X Window System). The
|
|
||||||
`README' should mention any `--enable-' and `--with-' options that the
|
Some packages pay attention to '--enable-FEATURE' options to
|
||||||
|
'configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to '--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like 'gnu-as' or 'x' (for the X Window System). The
|
||||||
|
'README' should mention any '--enable-' and '--with-' options that the
|
||||||
package recognizes.
|
package recognizes.
|
||||||
|
|
||||||
For packages that use the X Window System, `configure' can usually
|
For packages that use the X Window System, 'configure' can usually
|
||||||
find the X include and library files automatically, but if it doesn't,
|
find the X include and library files automatically, but if it doesn't,
|
||||||
you can use the `configure' options `--x-includes=DIR' and
|
you can use the 'configure' options '--x-includes=DIR' and
|
||||||
`--x-libraries=DIR' to specify their locations.
|
'--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Some packages offer the ability to configure how verbose the
|
||||||
|
execution of 'make' will be. For these packages, running './configure
|
||||||
|
--enable-silent-rules' sets the default to minimal output, which can be
|
||||||
|
overridden with 'make V=1'; while running './configure
|
||||||
|
--disable-silent-rules' sets the default to verbose, which can be
|
||||||
|
overridden with 'make V=0'.
|
||||||
|
|
||||||
|
Particular systems
|
||||||
|
==================
|
||||||
|
|
||||||
|
On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
|
||||||
|
is not installed, it is recommended to use the following options in
|
||||||
|
order to use an ANSI C compiler:
|
||||||
|
|
||||||
|
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||||
|
|
||||||
|
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||||
|
|
||||||
|
HP-UX 'make' updates targets which have the same time stamps as their
|
||||||
|
prerequisites, which makes it generally unusable when shipped generated
|
||||||
|
files such as 'configure' are involved. Use GNU 'make' instead.
|
||||||
|
|
||||||
|
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||||
|
parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
|
||||||
|
workaround. If GNU CC is not installed, it is therefore recommended to
|
||||||
|
try
|
||||||
|
|
||||||
|
./configure CC="cc"
|
||||||
|
|
||||||
|
and if that doesn't work, try
|
||||||
|
|
||||||
|
./configure CC="cc -nodtk"
|
||||||
|
|
||||||
|
On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
|
||||||
|
directory contains several dysfunctional programs; working variants of
|
||||||
|
these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
|
||||||
|
in your 'PATH', put it _after_ '/usr/bin'.
|
||||||
|
|
||||||
|
On Haiku, software installed for all users goes in '/boot/common',
|
||||||
|
not '/usr/local'. It is recommended to use the following options:
|
||||||
|
|
||||||
|
./configure --prefix=/boot/common
|
||||||
|
|
||||||
Specifying the System Type
|
Specifying the System Type
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
There may be some features `configure' cannot figure out automatically,
|
There may be some features 'configure' cannot figure out
|
||||||
but needs to determine by the type of machine the package will run on.
|
automatically, but needs to determine by the type of machine the package
|
||||||
Usually, assuming the package is built to be run on the _same_
|
will run on. Usually, assuming the package is built to be run on the
|
||||||
architectures, `configure' can figure that out, but if it prints a
|
_same_ architectures, 'configure' can figure that out, but if it prints
|
||||||
message saying it cannot guess the machine type, give it the
|
a message saying it cannot guess the machine type, give it the
|
||||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
'--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
type, such as `sun4', or a canonical name which has the form:
|
type, such as 'sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
CPU-COMPANY-SYSTEM
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
where SYSTEM can have one of these forms:
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
OS KERNEL-OS
|
OS
|
||||||
|
KERNEL-OS
|
||||||
|
|
||||||
See the file `config.sub' for the possible values of each field. If
|
See the file 'config.sub' for the possible values of each field. If
|
||||||
`config.sub' isn't included in this package, then this package doesn't
|
'config.sub' isn't included in this package, then this package doesn't
|
||||||
need to know the machine type.
|
need to know the machine type.
|
||||||
|
|
||||||
If you are _building_ compiler tools for cross-compiling, you should
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
use the option `--target=TYPE' to select the type of system they will
|
use the option '--target=TYPE' to select the type of system they will
|
||||||
produce code for.
|
produce code for.
|
||||||
|
|
||||||
If you want to _use_ a cross compiler, that generates code for a
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
platform different from the build platform, you should specify the
|
platform different from the build platform, you should specify the
|
||||||
"host" platform (i.e., that on which the generated programs will
|
"host" platform (i.e., that on which the generated programs will
|
||||||
eventually be run) with `--host=TYPE'.
|
eventually be run) with '--host=TYPE'.
|
||||||
|
|
||||||
Sharing Defaults
|
Sharing Defaults
|
||||||
================
|
================
|
||||||
|
|
||||||
If you want to set default values for `configure' scripts to share, you
|
If you want to set default values for 'configure' scripts to share,
|
||||||
can create a site shell script called `config.site' that gives default
|
you can create a site shell script called 'config.site' that gives
|
||||||
values for variables like `CC', `cache_file', and `prefix'.
|
default values for variables like 'CC', 'cache_file', and 'prefix'.
|
||||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
'configure' looks for 'PREFIX/share/config.site' if it exists, then
|
||||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
'PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
`CONFIG_SITE' environment variable to the location of the site script.
|
'CONFIG_SITE' environment variable to the location of the site script.
|
||||||
A warning: not all `configure' scripts look for a site script.
|
A warning: not all 'configure' scripts look for a site script.
|
||||||
|
|
||||||
Defining Variables
|
Defining Variables
|
||||||
==================
|
==================
|
||||||
|
|
||||||
Variables not defined in a site shell script can be set in the
|
Variables not defined in a site shell script can be set in the
|
||||||
environment passed to `configure'. However, some packages may run
|
environment passed to 'configure'. However, some packages may run
|
||||||
configure again during the build, and the customized values of these
|
configure again during the build, and the customized values of these
|
||||||
variables may be lost. In order to avoid this problem, you should set
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
them in the `configure' command line, using `VAR=value'. For example:
|
them in the 'configure' command line, using 'VAR=value'. For example:
|
||||||
|
|
||||||
./configure CC=/usr/local2/bin/gcc
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
causes the specified 'gcc' to be used as the C compiler (unless it is
|
||||||
overridden in the site shell script).
|
overridden in the site shell script).
|
||||||
|
|
||||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
|
||||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
Autoconf limitation. Until the limitation is lifted, you can use this
|
||||||
|
workaround:
|
||||||
|
|
||||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
`configure' Invocation
|
'configure' Invocation
|
||||||
======================
|
======================
|
||||||
|
|
||||||
`configure' recognizes the following options to control how it operates.
|
'configure' recognizes the following options to control how it
|
||||||
|
operates.
|
||||||
|
|
||||||
`--help'
|
'--help'
|
||||||
`-h'
|
'-h'
|
||||||
Print a summary of the options to `configure', and exit.
|
Print a summary of all of the options to 'configure', and exit.
|
||||||
|
|
||||||
`--version'
|
'--help=short'
|
||||||
`-V'
|
'--help=recursive'
|
||||||
Print the version of Autoconf used to generate the `configure'
|
Print a summary of the options unique to this package's
|
||||||
|
'configure', and exit. The 'short' variant lists options used only
|
||||||
|
in the top level, while the 'recursive' variant lists options also
|
||||||
|
present in any nested packages.
|
||||||
|
|
||||||
|
'--version'
|
||||||
|
'-V'
|
||||||
|
Print the version of Autoconf used to generate the 'configure'
|
||||||
script, and exit.
|
script, and exit.
|
||||||
|
|
||||||
`--cache-file=FILE'
|
'--cache-file=FILE'
|
||||||
Enable the cache: use and save the results of the tests in FILE,
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
traditionally 'config.cache'. FILE defaults to '/dev/null' to
|
||||||
disable caching.
|
disable caching.
|
||||||
|
|
||||||
`--config-cache'
|
'--config-cache'
|
||||||
`-C'
|
'-C'
|
||||||
Alias for `--cache-file=config.cache'.
|
Alias for '--cache-file=config.cache'.
|
||||||
|
|
||||||
`--quiet'
|
'--quiet'
|
||||||
`--silent'
|
'--silent'
|
||||||
`-q'
|
'-q'
|
||||||
Do not print messages saying which checks are being made. To
|
Do not print messages saying which checks are being made. To
|
||||||
suppress all normal output, redirect it to `/dev/null' (any error
|
suppress all normal output, redirect it to '/dev/null' (any error
|
||||||
messages will still be shown).
|
messages will still be shown).
|
||||||
|
|
||||||
`--srcdir=DIR'
|
'--srcdir=DIR'
|
||||||
Look for the package's source code in directory DIR. Usually
|
Look for the package's source code in directory DIR. Usually
|
||||||
`configure' can determine that directory automatically.
|
'configure' can determine that directory automatically.
|
||||||
|
|
||||||
`configure' also accepts some other, not widely useful, options. Run
|
'--prefix=DIR'
|
||||||
`configure --help' for more details.
|
Use DIR as the installation prefix. *note Installation Names:: for
|
||||||
|
more details, including other options available for fine-tuning the
|
||||||
|
installation locations.
|
||||||
|
|
||||||
|
'--no-create'
|
||||||
|
'-n'
|
||||||
|
Run the configure checks, but stop before creating any output
|
||||||
|
files.
|
||||||
|
|
||||||
|
'configure' also accepts some other, not widely useful, options. Run
|
||||||
|
'configure --help' for more details.
|
||||||
|
|
|
||||||
25
Makefile.am
25
Makefile.am
|
|
@ -2,29 +2,14 @@
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = gnu
|
AUTOMAKE_OPTIONS = gnu
|
||||||
|
|
||||||
SUBDIRS = m4 lib src doc po
|
SUBDIRS = src doc systemd
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
EXTRA_DIST = config.rpath mkinstalldirs have.h system.h COPYING.README depcomp
|
EXTRA_DIST = COPYING.README README.android
|
||||||
|
|
||||||
ChangeLog:
|
ChangeLog:
|
||||||
svn log > ChangeLog
|
git log > ChangeLog
|
||||||
|
|
||||||
svn-clean: maintainer-clean
|
astyle:
|
||||||
svn status --no-ignore | sed -n 's/^[?I] \+//p' | tr '\012' '\0' | xargs -r0 rm -rf
|
astyle --options=.astylerc -nQ src/*.[ch] src/*/*.[ch]
|
||||||
|
|
||||||
deb:
|
|
||||||
dpkg-buildpackage -rfakeroot
|
|
||||||
|
|
||||||
rpm: dist
|
|
||||||
cp $(distdir).tar.gz /usr/src/redhat/SOURCES/
|
|
||||||
cp redhat/tinc.spec /usr/src/redhat/SOURCES/
|
|
||||||
cd /usr/src/redhat/SOURCES/ && rpm -bb tinc.spec
|
|
||||||
|
|
||||||
release:
|
|
||||||
rm -f ChangeLog
|
|
||||||
$(MAKE) ChangeLog
|
|
||||||
echo "Please edit the NEWS file now..."
|
|
||||||
/usr/bin/editor NEWS
|
|
||||||
$(MAKE) dist
|
|
||||||
|
|
|
||||||
631
Makefile.in
631
Makefile.in
|
|
@ -1,8 +1,8 @@
|
||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.16.2 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
@ -14,9 +14,65 @@
|
||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = { \
|
||||||
|
if test -z '$(MAKELEVEL)'; then \
|
||||||
|
false; \
|
||||||
|
elif test -n '$(MAKE_HOST)'; then \
|
||||||
|
true; \
|
||||||
|
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||||
|
true; \
|
||||||
|
else \
|
||||||
|
false; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
|
am__make_running_with_option = \
|
||||||
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
|
case $$MAKEFLAGS in \
|
||||||
|
*\\[\ \ ]*) \
|
||||||
|
bs=\\; \
|
||||||
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
|
esac; \
|
||||||
|
fi; \
|
||||||
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
|
@ -32,54 +88,130 @@ POST_UNINSTALL = :
|
||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
subdir = .
|
subdir = .
|
||||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
|
||||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
|
||||||
$(top_srcdir)/configure ABOUT-NLS AUTHORS COPYING ChangeLog \
|
|
||||||
INSTALL NEWS THANKS config.guess config.rpath config.sub \
|
|
||||||
depcomp install-sh missing mkinstalldirs
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
|
||||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
|
$(top_srcdir)/m4/ax_append_flag.m4 \
|
||||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
|
||||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
|
$(top_srcdir)/m4/ax_check_compile_flag.m4 \
|
||||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \
|
$(top_srcdir)/m4/ax_check_link_flag.m4 \
|
||||||
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
|
$(top_srcdir)/m4/ax_require_defined.m4 $(top_srcdir)/m4/lzo.m4 \
|
||||||
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in
|
$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/zlib.m4 \
|
||||||
|
$(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||||
|
$(am__configure_deps) $(am__DIST_COMMON)
|
||||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
configure.lineno config.status.lineno
|
configure.lineno config.status.lineno
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = config.h
|
CONFIG_HEADER = config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
|
am__v_P_0 = false
|
||||||
|
am__v_P_1 = :
|
||||||
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||||
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||||
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
|
am__v_GEN_1 =
|
||||||
|
AM_V_at = $(am__v_at_@AM_V@)
|
||||||
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||||
|
am__v_at_0 = @
|
||||||
|
am__v_at_1 =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||||
html-recursive info-recursive install-data-recursive \
|
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||||
install-dvi-recursive install-exec-recursive \
|
install-data-recursive install-dvi-recursive \
|
||||||
install-html-recursive install-info-recursive \
|
install-exec-recursive install-html-recursive \
|
||||||
install-pdf-recursive install-ps-recursive install-recursive \
|
install-info-recursive install-pdf-recursive \
|
||||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
install-ps-recursive install-recursive installcheck-recursive \
|
||||||
ps-recursive uninstall-recursive
|
installdirs-recursive pdf-recursive ps-recursive \
|
||||||
|
tags-recursive uninstall-recursive
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
*) (install-info --version) >/dev/null 2>&1;; \
|
||||||
|
esac
|
||||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
distclean-recursive maintainer-clean-recursive
|
distclean-recursive maintainer-clean-recursive
|
||||||
|
am__recursive_targets = \
|
||||||
|
$(RECURSIVE_TARGETS) \
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS) \
|
||||||
|
$(am__extra_recursive_targets)
|
||||||
|
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||||
|
cscope distdir distdir-am dist dist-all distcheck
|
||||||
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
|
||||||
|
config.h.in
|
||||||
|
# Read a list of newline-separated strings from the standard input,
|
||||||
|
# and print each of them once, without duplicates. Input order is
|
||||||
|
# *not* preserved.
|
||||||
|
am__uniquify_input = $(AWK) '\
|
||||||
|
BEGIN { nonempty = 0; } \
|
||||||
|
{ items[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in items) print i; }; } \
|
||||||
|
'
|
||||||
|
# Make sure the list of sources is unique. This is necessary because,
|
||||||
|
# e.g., the same source file might be shared among _SOURCES variables
|
||||||
|
# for different programs/libraries.
|
||||||
|
am__define_uniq_tagged_files = \
|
||||||
|
list='$(am__tagged_files)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | $(am__uniquify_input)`
|
||||||
ETAGS = etags
|
ETAGS = etags
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
|
CSCOPE = cscope
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
|
||||||
|
COPYING ChangeLog INSTALL NEWS README THANKS compile \
|
||||||
|
config.guess config.sub depcomp install-sh missing
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
distdir = $(PACKAGE)-$(VERSION)
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
top_distdir = $(distdir)
|
top_distdir = $(distdir)
|
||||||
am__remove_distdir = \
|
am__remove_distdir = \
|
||||||
{ test ! -d $(distdir) \
|
if test -d "$(distdir)"; then \
|
||||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||||
&& rm -fr $(distdir); }; }
|
&& rm -rf "$(distdir)" \
|
||||||
|
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||||
|
else :; fi
|
||||||
|
am__post_remove_distdir = $(am__remove_distdir)
|
||||||
|
am__relativize = \
|
||||||
|
dir0=`pwd`; \
|
||||||
|
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||||
|
sed_rest='s,^[^/]*/*,,'; \
|
||||||
|
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||||
|
sed_butlast='s,/*[^/]*$$,,'; \
|
||||||
|
while test -n "$$dir1"; do \
|
||||||
|
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first" != "."; then \
|
||||||
|
if test "$$first" = ".."; then \
|
||||||
|
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||||
|
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||||
|
else \
|
||||||
|
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first2" = "$$first"; then \
|
||||||
|
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||||
|
else \
|
||||||
|
dir2="../$$dir2"; \
|
||||||
|
fi; \
|
||||||
|
dir0="$$dir0"/"$$first"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||||
|
done; \
|
||||||
|
reldir="$$dir2"
|
||||||
DIST_ARCHIVES = $(distdir).tar.gz
|
DIST_ARCHIVES = $(distdir).tar.gz
|
||||||
GZIP_ENV = --best
|
GZIP_ENV = --best
|
||||||
|
DIST_TARGETS = dist-gzip
|
||||||
distuninstallcheck_listfiles = find . -type f -print
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||||
|
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||||
distcleancheck_listfiles = find . -type f -print
|
distcleancheck_listfiles = find . -type f -print
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
ALLOCA = @ALLOCA@
|
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
AUTOCONF = @AUTOCONF@
|
AUTOCONF = @AUTOCONF@
|
||||||
AUTOHEADER = @AUTOHEADER@
|
AUTOHEADER = @AUTOHEADER@
|
||||||
AUTOMAKE = @AUTOMAKE@
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
|
@ -97,46 +229,31 @@ ECHO_N = @ECHO_N@
|
||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
GMSGFMT = @GMSGFMT@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
INCLUDES = @INCLUDES@
|
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
INTLLIBS = @INTLLIBS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
LIBICONV = @LIBICONV@
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
LIBOBJS = @LIBOBJS@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
LN_S = @LN_S@
|
|
||||||
LTLIBICONV = @LTLIBICONV@
|
|
||||||
LTLIBINTL = @LTLIBINTL@
|
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
MAINT = @MAINT@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
MKDIR_P = @MKDIR_P@
|
MKDIR_P = @MKDIR_P@
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
MSGFMT = @MSGFMT@
|
|
||||||
MSGMERGE = @MSGMERGE@
|
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
PACKAGE = @PACKAGE@
|
PACKAGE = @PACKAGE@
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
POSUB = @POSUB@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
SET_MAKE = @SET_MAKE@
|
||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
USE_NLS = @USE_NLS@
|
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
XGETTEXT = @XGETTEXT@
|
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
|
@ -179,66 +296,67 @@ pdfdir = @pdfdir@
|
||||||
prefix = @prefix@
|
prefix = @prefix@
|
||||||
program_transform_name = @program_transform_name@
|
program_transform_name = @program_transform_name@
|
||||||
psdir = @psdir@
|
psdir = @psdir@
|
||||||
|
runstatedir = @runstatedir@
|
||||||
sbindir = @sbindir@
|
sbindir = @sbindir@
|
||||||
sharedstatedir = @sharedstatedir@
|
sharedstatedir = @sharedstatedir@
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
|
systemd_path = @systemd_path@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
AUTOMAKE_OPTIONS = gnu
|
AUTOMAKE_OPTIONS = gnu
|
||||||
SUBDIRS = m4 lib src doc po
|
SUBDIRS = src doc systemd
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
EXTRA_DIST = config.rpath mkinstalldirs have.h system.h COPYING.README depcomp
|
EXTRA_DIST = COPYING.README README.android
|
||||||
all: config.h
|
all: config.h
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
am--refresh:
|
am--refresh: Makefile
|
||||||
@:
|
@:
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||||
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||||
&& exit 0; \
|
&& exit 0; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu Makefile
|
$(AUTOMAKE) --gnu Makefile
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
*config.status*) \
|
*config.status*) \
|
||||||
echo ' $(SHELL) ./config.status'; \
|
echo ' $(SHELL) ./config.status'; \
|
||||||
$(SHELL) ./config.status;; \
|
$(SHELL) ./config.status;; \
|
||||||
*) \
|
*) \
|
||||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
|
||||||
esac;
|
esac;
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
$(SHELL) ./config.status --recheck
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
cd $(srcdir) && $(AUTOCONF)
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
config.h: stamp-h1
|
config.h: stamp-h1
|
||||||
@if test ! -f $@; then \
|
@test -f $@ || rm -f stamp-h1
|
||||||
rm -f stamp-h1; \
|
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||||
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
|
|
||||||
else :; fi
|
|
||||||
|
|
||||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||||
@rm -f stamp-h1
|
@rm -f stamp-h1
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||||
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
$(srcdir)/config.h.in: $(am__configure_deps)
|
||||||
cd $(top_srcdir) && $(AUTOHEADER)
|
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||||
rm -f stamp-h1
|
rm -f stamp-h1
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
|
|
@ -246,22 +364,25 @@ distclean-hdr:
|
||||||
-rm -f config.h stamp-h1
|
-rm -f config.h stamp-h1
|
||||||
|
|
||||||
# This directory's subdirectories are mostly independent; you can cd
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
# into them and run `make' without going through this Makefile.
|
# into them and run 'make' without going through this Makefile.
|
||||||
# To change the values of `make' variables: instead of editing Makefiles,
|
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||||
# (1) if the variable is set in `config.status', edit `config.status'
|
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||||
# (2) otherwise, pass the desired values on the `make' command line.
|
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||||
$(RECURSIVE_TARGETS):
|
$(am__recursive_targets):
|
||||||
@failcom='exit 1'; \
|
@fail=; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
if $(am__make_keepgoing); then \
|
||||||
case $$f in \
|
failcom='fail=yes'; \
|
||||||
*=* | --[!k]*);; \
|
else \
|
||||||
*k*) failcom='fail=yes';; \
|
failcom='exit 1'; \
|
||||||
esac; \
|
fi; \
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
dot_seen=no; \
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
case "$@" in \
|
||||||
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
|
*) list='$(SUBDIRS)' ;; \
|
||||||
|
esac; \
|
||||||
|
for subdir in $$list; do \
|
||||||
echo "Making $$target in $$subdir"; \
|
echo "Making $$target in $$subdir"; \
|
||||||
if test "$$subdir" = "."; then \
|
if test "$$subdir" = "."; then \
|
||||||
dot_seen=yes; \
|
dot_seen=yes; \
|
||||||
|
|
@ -269,65 +390,20 @@ $(RECURSIVE_TARGETS):
|
||||||
else \
|
else \
|
||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| eval $$failcom; \
|
||||||
done; \
|
done; \
|
||||||
if test "$$dot_seen" = "no"; then \
|
if test "$$dot_seen" = "no"; then \
|
||||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
fi; test -z "$$fail"
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
$(RECURSIVE_CLEAN_TARGETS):
|
ID: $(am__tagged_files)
|
||||||
@failcom='exit 1'; \
|
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||||
for f in x $$MAKEFLAGS; do \
|
tags: tags-recursive
|
||||||
case $$f in \
|
TAGS: tags
|
||||||
*=* | --[!k]*);; \
|
|
||||||
*k*) failcom='fail=yes';; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
dot_seen=no; \
|
|
||||||
case "$@" in \
|
|
||||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
|
||||||
*) list='$(SUBDIRS)' ;; \
|
|
||||||
esac; \
|
|
||||||
rev=''; for subdir in $$list; do \
|
|
||||||
if test "$$subdir" = "."; then :; else \
|
|
||||||
rev="$$subdir $$rev"; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
rev="$$rev ."; \
|
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
|
||||||
for subdir in $$rev; do \
|
|
||||||
echo "Making $$target in $$subdir"; \
|
|
||||||
if test "$$subdir" = "."; then \
|
|
||||||
local_target="$$target-am"; \
|
|
||||||
else \
|
|
||||||
local_target="$$target"; \
|
|
||||||
fi; \
|
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
|
||||||
|| eval $$failcom; \
|
|
||||||
done && test -z "$$fail"
|
|
||||||
tags-recursive:
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
|
||||||
done
|
|
||||||
ctags-recursive:
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
|
||||||
done
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
set x; \
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
mkid -fID $$unique
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
|
||||||
tags=; \
|
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
include_option=--etags-include; \
|
include_option=--etags-include; \
|
||||||
|
|
@ -339,45 +415,72 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test ! -f $$subdir/TAGS || \
|
test ! -f $$subdir/TAGS || \
|
||||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||||
fi; \
|
fi; \
|
||||||
done; \
|
done; \
|
||||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
$(am__define_uniq_tagged_files); \
|
||||||
unique=`for i in $$list; do \
|
shift; \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
|
||||||
test -n "$$unique" || unique=$$empty_fix; \
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
if test $$# -gt 0; then \
|
||||||
$$tags $$unique; \
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
fi
|
fi
|
||||||
ctags: CTAGS
|
ctags: ctags-recursive
|
||||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
CTAGS: ctags
|
||||||
tags=; \
|
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
$(am__define_uniq_tagged_files); \
|
||||||
unique=`for i in $$list; do \
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
|
||||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
$$tags $$unique
|
$$unique
|
||||||
|
|
||||||
GTAGS:
|
GTAGS:
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
&& cd $(top_srcdir) \
|
&& $(am__cd) $(top_srcdir) \
|
||||||
&& gtags -i $(GTAGS_ARGS) $$here
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
cscope: cscope.files
|
||||||
|
test ! -s cscope.files \
|
||||||
|
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||||
|
clean-cscope:
|
||||||
|
-rm -f cscope.files
|
||||||
|
cscope.files: clean-cscope cscopelist
|
||||||
|
cscopelist: cscopelist-recursive
|
||||||
|
|
||||||
|
cscopelist-am: $(am__tagged_files)
|
||||||
|
list='$(am__tagged_files)'; \
|
||||||
|
case "$(srcdir)" in \
|
||||||
|
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||||
|
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||||
|
esac; \
|
||||||
|
for i in $$list; do \
|
||||||
|
if test -f "$$i"; then \
|
||||||
|
echo "$(subdir)/$$i"; \
|
||||||
|
else \
|
||||||
|
echo "$$sdir/$$i"; \
|
||||||
|
fi; \
|
||||||
|
done >> $(top_builddir)/cscope.files
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
distdir: $(BUILT_SOURCES)
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||||
|
|
||||||
|
distdir-am: $(DISTFILES)
|
||||||
|
@case `sed 15q $(srcdir)/NEWS` in \
|
||||||
|
*"$(VERSION)"*) : ;; \
|
||||||
|
*) \
|
||||||
|
echo "NEWS not updated; not releasing" 1>&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac
|
||||||
$(am__remove_distdir)
|
$(am__remove_distdir)
|
||||||
test -d $(distdir) || mkdir $(distdir)
|
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
list='$(DISTFILES)'; \
|
list='$(DISTFILES)'; \
|
||||||
|
|
@ -393,66 +496,94 @@ distdir: $(DISTFILES)
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test -d "$(distdir)/$$subdir" \
|
$(am__make_dryrun) \
|
||||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
|| test -d "$(distdir)/$$subdir" \
|
||||||
|| exit 1; \
|
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
|| exit 1; \
|
||||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||||
(cd $$subdir && \
|
$(am__relativize); \
|
||||||
|
new_distdir=$$reldir; \
|
||||||
|
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_top_distdir=$$reldir; \
|
||||||
|
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||||
|
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||||
|
($(am__cd) $$subdir && \
|
||||||
$(MAKE) $(AM_MAKEFLAGS) \
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
top_distdir="$$top_distdir" \
|
top_distdir="$$new_top_distdir" \
|
||||||
distdir="$$distdir/$$subdir" \
|
distdir="$$new_distdir" \
|
||||||
am__remove_distdir=: \
|
am__remove_distdir=: \
|
||||||
am__skip_length_check=: \
|
am__skip_length_check=: \
|
||||||
|
am__skip_mode_fix=: \
|
||||||
distdir) \
|
distdir) \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
-test -n "$(am__skip_mode_fix)" \
|
||||||
|
|| find "$(distdir)" -type d ! -perm -755 \
|
||||||
|
-exec chmod u+rwx,go+rx {} \; -o \
|
||||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||||
|| chmod -R a+r $(distdir)
|
|| chmod -R a+r "$(distdir)"
|
||||||
dist-gzip: distdir
|
dist-gzip: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
||||||
$(am__remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-bzip2: distdir
|
dist-bzip2: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||||
$(am__remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-lzma: distdir
|
dist-lzip: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||||
$(am__remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-xz: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
|
dist-zstd: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-tarZ: distdir
|
dist-tarZ: distdir
|
||||||
|
@echo WARNING: "Support for distribution archives compressed with" \
|
||||||
|
"legacy program 'compress' is deprecated." >&2
|
||||||
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
$(am__remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-shar: distdir
|
dist-shar: distdir
|
||||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
@echo WARNING: "Support for shar distribution archives is" \
|
||||||
$(am__remove_distdir)
|
"deprecated." >&2
|
||||||
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||||
|
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
||||||
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-zip: distdir
|
dist-zip: distdir
|
||||||
-rm -f $(distdir).zip
|
-rm -f $(distdir).zip
|
||||||
zip -rq $(distdir).zip $(distdir)
|
zip -rq $(distdir).zip $(distdir)
|
||||||
$(am__remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist dist-all: distdir
|
dist dist-all:
|
||||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||||
$(am__remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
# This target untars the dist file and tries a VPATH configuration. Then
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
# it guarantees that the distribution is self-contained by making another
|
# it guarantees that the distribution is self-contained by making another
|
||||||
|
|
@ -460,27 +591,35 @@ dist dist-all: distdir
|
||||||
distcheck: dist
|
distcheck: dist
|
||||||
case '$(DIST_ARCHIVES)' in \
|
case '$(DIST_ARCHIVES)' in \
|
||||||
*.tar.gz*) \
|
*.tar.gz*) \
|
||||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
*.tar.bz2*) \
|
*.tar.bz2*) \
|
||||||
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
*.tar.lzma*) \
|
*.tar.lz*) \
|
||||||
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
|
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||||
|
*.tar.xz*) \
|
||||||
|
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||||
*.tar.Z*) \
|
*.tar.Z*) \
|
||||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
*.shar.gz*) \
|
*.shar.gz*) \
|
||||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
||||||
*.zip*) \
|
*.zip*) \
|
||||||
unzip $(distdir).zip ;;\
|
unzip $(distdir).zip ;;\
|
||||||
|
*.tar.zst*) \
|
||||||
|
zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
|
||||||
esac
|
esac
|
||||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
chmod -R a-w $(distdir)
|
||||||
mkdir $(distdir)/_build
|
chmod u+w $(distdir)
|
||||||
mkdir $(distdir)/_inst
|
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||||
chmod a-w $(distdir)
|
chmod a-w $(distdir)
|
||||||
|
test -d $(distdir)/_build || exit 0; \
|
||||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||||
&& cd $(distdir)/_build \
|
&& am__cwd=`pwd` \
|
||||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
&& $(am__cd) $(distdir)/_build/sub \
|
||||||
|
&& ../../configure \
|
||||||
|
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
|
@ -500,14 +639,24 @@ distcheck: dist
|
||||||
&& rm -rf "$$dc_destdir" \
|
&& rm -rf "$$dc_destdir" \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||||
&& rm -rf $(DIST_ARCHIVES) \
|
&& rm -rf $(DIST_ARCHIVES) \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||||
$(am__remove_distdir)
|
&& cd "$$am__cwd" \
|
||||||
|
|| exit 1
|
||||||
|
$(am__post_remove_distdir)
|
||||||
@(echo "$(distdir) archives ready for distribution: "; \
|
@(echo "$(distdir) archives ready for distribution: "; \
|
||||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||||
distuninstallcheck:
|
distuninstallcheck:
|
||||||
@cd $(distuninstallcheck_dir) \
|
@test -n '$(distuninstallcheck_dir)' || { \
|
||||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
echo 'ERROR: trying to run $@ with an empty' \
|
||||||
|
'$$(distuninstallcheck_dir)' >&2; \
|
||||||
|
exit 1; \
|
||||||
|
}; \
|
||||||
|
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||||
|
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||||
|
exit 1; \
|
||||||
|
}; \
|
||||||
|
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||||
|| { echo "ERROR: files left after uninstall:" ; \
|
|| { echo "ERROR: files left after uninstall:" ; \
|
||||||
if test -n "$(DESTDIR)"; then \
|
if test -n "$(DESTDIR)"; then \
|
||||||
echo " (check DESTDIR support)"; \
|
echo " (check DESTDIR support)"; \
|
||||||
|
|
@ -538,16 +687,22 @@ install-am: all-am
|
||||||
|
|
||||||
installcheck: installcheck-recursive
|
installcheck: installcheck-recursive
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
|
|
@ -567,6 +722,8 @@ dvi-am:
|
||||||
|
|
||||||
html: html-recursive
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-recursive
|
info: info-recursive
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
|
|
@ -575,18 +732,28 @@ install-data-am:
|
||||||
|
|
||||||
install-dvi: install-dvi-recursive
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-recursive
|
install-html: install-html-recursive
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-recursive
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
install-pdf: install-pdf-recursive
|
install-pdf: install-pdf-recursive
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-recursive
|
install-ps: install-ps-recursive
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-recursive
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
|
@ -609,45 +776,33 @@ ps-am:
|
||||||
|
|
||||||
uninstall-am:
|
uninstall-am:
|
||||||
|
|
||||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
.MAKE: $(am__recursive_targets) all install-am install-strip
|
||||||
install-strip
|
|
||||||
|
|
||||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||||
all all-am am--refresh check check-am clean clean-generic \
|
am--refresh check check-am clean clean-cscope clean-generic \
|
||||||
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
|
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
|
||||||
dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \
|
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
|
||||||
distclean-generic distclean-hdr distclean-tags distcleancheck \
|
dist-zstd distcheck distclean distclean-generic distclean-hdr \
|
||||||
distdir distuninstallcheck dvi dvi-am html html-am info \
|
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||||
info-am install install-am install-data install-data-am \
|
dvi-am html html-am info info-am install install-am \
|
||||||
install-dvi install-dvi-am install-exec install-exec-am \
|
install-data install-data-am install-dvi install-dvi-am \
|
||||||
install-html install-html-am install-info install-info-am \
|
install-exec install-exec-am install-html install-html-am \
|
||||||
install-man install-pdf install-pdf-am install-ps \
|
install-info install-info-am install-man install-pdf \
|
||||||
install-ps-am install-strip installcheck installcheck-am \
|
install-pdf-am install-ps install-ps-am install-strip \
|
||||||
installdirs installdirs-am maintainer-clean \
|
installcheck installcheck-am installdirs installdirs-am \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
|
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||||
|
uninstall-am
|
||||||
|
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
|
||||||
|
|
||||||
ChangeLog:
|
ChangeLog:
|
||||||
svn log > ChangeLog
|
git log > ChangeLog
|
||||||
|
|
||||||
svn-clean: maintainer-clean
|
astyle:
|
||||||
svn status --no-ignore | sed -n 's/^[?I] \+//p' | tr '\012' '\0' | xargs -r0 rm -rf
|
astyle --options=.astylerc -nQ src/*.[ch] src/*/*.[ch]
|
||||||
|
|
||||||
deb:
|
|
||||||
dpkg-buildpackage -rfakeroot
|
|
||||||
|
|
||||||
rpm: dist
|
|
||||||
cp $(distdir).tar.gz /usr/src/redhat/SOURCES/
|
|
||||||
cp redhat/tinc.spec /usr/src/redhat/SOURCES/
|
|
||||||
cd /usr/src/redhat/SOURCES/ && rpm -bb tinc.spec
|
|
||||||
|
|
||||||
release:
|
|
||||||
rm -f ChangeLog
|
|
||||||
$(MAKE) ChangeLog
|
|
||||||
echo "Please edit the NEWS file now..."
|
|
||||||
/usr/bin/editor NEWS
|
|
||||||
$(MAKE) dist
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# 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.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
|
|
||||||
366
NEWS
366
NEWS
|
|
@ -1,3 +1,361 @@
|
||||||
|
Version 1.0.36 August 26 2019
|
||||||
|
|
||||||
|
* Fix compiling tinc with certain versions of the OpenSSL library.
|
||||||
|
* Fix parsing some IPv6 addresses with :: in them.
|
||||||
|
* Fix GraphDumpFile output to handle node names starting with a digit.
|
||||||
|
* Fix a potential segmentation fault when fragmenting packets.
|
||||||
|
|
||||||
|
Thanks to Rosen Penev, Quentin Rameau and Werner Schreiber for their
|
||||||
|
contributions to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.35 October 5 2018
|
||||||
|
|
||||||
|
* Prevent oracle attacks (CVE-2018-16737, CVE-2018-16738).
|
||||||
|
* Prevent a MITM from forcing a NULL cipher for UDP (CVE-2018-16758).
|
||||||
|
* Minor fixes in the documentation.
|
||||||
|
|
||||||
|
Thanks to Amine Amri and Rafael Sadowski for their contributions to this
|
||||||
|
version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.34 June 12 2018
|
||||||
|
|
||||||
|
* Fix a potential segmentation fault when connecting to an IPv6 peer via a
|
||||||
|
proxy.
|
||||||
|
* Minor improvements to the build system.
|
||||||
|
* Make the systemd service file identical to the one from the 1.1 branch.
|
||||||
|
* Fix a potential problem causing IPv4 sockets to not work on macOS.
|
||||||
|
|
||||||
|
Thanks to Maximilian Stein and Wang Liu Shuai for their contributions to this
|
||||||
|
version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.33 November 4 2017
|
||||||
|
|
||||||
|
* Allow compilation from a build directory.
|
||||||
|
* Source code cleanups.
|
||||||
|
* Fix some options specified on the command line not surviving a HUP signal.
|
||||||
|
* Handle tun/tap device returning EPERM or EBUSY.
|
||||||
|
* Disable PMTUDiscovery when TCPOnly is used.
|
||||||
|
* Support the --runstatedir option of the autoconf 2.70.
|
||||||
|
|
||||||
|
Thanks to Rafael Sadowski and Pierre-Olivier Mercier for their contributions to
|
||||||
|
this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.32 September 2 2017
|
||||||
|
|
||||||
|
* Fix segmentation fault when using Cipher = none.
|
||||||
|
* Fix Proxy = exec.
|
||||||
|
* Support PriorityInheritance for IPv6 packets.
|
||||||
|
* Fixes for Solaris tun/tap support.
|
||||||
|
* Bind outgoing TCP sockets when ListenAddress is used.
|
||||||
|
|
||||||
|
Thanks to Vittorio Gambaletta for his contribution to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.31 January 15 2017
|
||||||
|
|
||||||
|
* Remove ExecStop in tinc@.service.
|
||||||
|
|
||||||
|
Thanks to Élie Bouttier for his contribution to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.30 October 30 2016
|
||||||
|
|
||||||
|
* Fix troubles connecting to some HTTP proxies.
|
||||||
|
|
||||||
|
* Add mitigations for the Sweet32 attack when using a 64-bit block cipher.
|
||||||
|
|
||||||
|
* Use AES256 and SHA256 as the default encryption and digest algorithms.
|
||||||
|
|
||||||
|
Version 1.0.29 October 9 2016
|
||||||
|
|
||||||
|
* Fix UDP communication with peers with link-local IPv6 addresses.
|
||||||
|
|
||||||
|
* Ensure compatibility with OpenSSL 1.1.0.
|
||||||
|
|
||||||
|
* Ensure autoreconf can be run without requiring autoconf-archive.
|
||||||
|
|
||||||
|
* Log warnings about dropped packets only at debug level 5.
|
||||||
|
|
||||||
|
Version 1.0.28 April 10 2016
|
||||||
|
|
||||||
|
* Fix compilation on BSD platforms.
|
||||||
|
|
||||||
|
* Add systemd service files.
|
||||||
|
|
||||||
|
Version 1.0.27 April 10 2016
|
||||||
|
|
||||||
|
* When using Proxy, let the proxy resolve hostnames if tinc can't.
|
||||||
|
|
||||||
|
* Fixes and improvements of the DecrementTTL option.
|
||||||
|
|
||||||
|
* Fixed the $NAME variable in subnet-up/down scripts for the local Subnets.
|
||||||
|
|
||||||
|
* Fixed potentially wrong checksum generation when clamping the MSS.
|
||||||
|
|
||||||
|
* Properly choose between the system's or our own copy of getopt.
|
||||||
|
|
||||||
|
* Fixed compiling tinc for Cygwin with MinGW installed.
|
||||||
|
|
||||||
|
* Added support for OS X utun interfaces.
|
||||||
|
|
||||||
|
* Documentation updates and minor fixes.
|
||||||
|
|
||||||
|
Thanks to Vittorio Gambaletta, LunarShaddow, Florian Weik and Nathan Stratton
|
||||||
|
Treadway for their contributions to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.26 July 5 2015
|
||||||
|
|
||||||
|
* Tinc now forces glibc to reload /etc/resolv.conf for every hostname lookup.
|
||||||
|
|
||||||
|
* Fixed --logfile without a filename on Windows.
|
||||||
|
|
||||||
|
* Ensure tinc can be compiled when using musl libc.
|
||||||
|
|
||||||
|
Thanks to Jo-Philipp Wich for his contribution to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.25 December 22 2014
|
||||||
|
|
||||||
|
* Documentation updates.
|
||||||
|
|
||||||
|
* Support linking against -lresolv on Mac OS X.
|
||||||
|
|
||||||
|
* Fix scripts on Windows when using the ScriptsInterpreter option.
|
||||||
|
|
||||||
|
* Allow a minimum reconnect timeout to be specified.
|
||||||
|
|
||||||
|
* Support PriorityInheritance on IPv6 sockets.
|
||||||
|
|
||||||
|
Thanks to David Pflug, Baptiste Jonglez, Alexis Hildebrandt, Borg, Jochen Voss,
|
||||||
|
Tomislav Čohar and VittGam for their contributions to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.24 May 11 2014
|
||||||
|
|
||||||
|
* Various compiler hardening flags are enabled by default.
|
||||||
|
|
||||||
|
* Updated support for Solaris, allowing switch mode on Solaris 11.
|
||||||
|
|
||||||
|
* Configuration will now also be read from a conf.d directory.
|
||||||
|
|
||||||
|
* Various updates to the documentation.
|
||||||
|
|
||||||
|
* Tinc now forces glibc to reload /etc/resolv.conf after it receives SIGALRM.
|
||||||
|
|
||||||
|
* Fixed a potential routing loop when IndirectData or TCPOnly is used and
|
||||||
|
broadcast packets are being sent.
|
||||||
|
|
||||||
|
* Improved security with constant time memcmp and stricter use of OpenSSL's
|
||||||
|
RNG functions.
|
||||||
|
|
||||||
|
* Fixed all issues found by Coverity.
|
||||||
|
|
||||||
|
Thanks to Florent Clairambault, Vilbrekin, luckyhacky, Armin Fisslthaler, Loïc
|
||||||
|
Dachary and Steffan Karger for their contributions to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.23 October 19 2013
|
||||||
|
|
||||||
|
* Start authentication immediately on outgoing connections (useful for sslh).
|
||||||
|
|
||||||
|
* Fixed segfault when Name = $HOST but $HOST is not set.
|
||||||
|
|
||||||
|
* Updated the build system and the documentation.
|
||||||
|
|
||||||
|
* Clean up child processes left over from Proxy = exec.
|
||||||
|
|
||||||
|
Version 1.0.22 August 13 2013
|
||||||
|
|
||||||
|
* Fixed the combination of Mode = router and DeviceType = tap.
|
||||||
|
|
||||||
|
* The $NAME variable is now set in subnet-up/down scripts.
|
||||||
|
|
||||||
|
* Tinc now gives an error when unknown options are given on the command line.
|
||||||
|
|
||||||
|
* Tinc now correctly handles a space between a short command line option and
|
||||||
|
an optional argument.
|
||||||
|
|
||||||
|
Thanks to Etienne Dechamps for his contribution to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.21 April 22 2013
|
||||||
|
|
||||||
|
* Drop packets forwarded via TCP if they are too big (CVE-2013-1428).
|
||||||
|
|
||||||
|
Thanks to Martin Schobert for auditing tinc and reporting this vulnerability.
|
||||||
|
|
||||||
|
Version 1.0.20 March 03 2013
|
||||||
|
|
||||||
|
* Use /dev/tap0 by default on FreeBSD and NetBSD when using switch mode.
|
||||||
|
|
||||||
|
* Minor improvements and clarifications in the documentation.
|
||||||
|
|
||||||
|
* Allow tinc to be cross-compiled with Android's NDK.
|
||||||
|
|
||||||
|
* The discovered PMTU is now also applied to VLAN tagged traffic.
|
||||||
|
|
||||||
|
* The LocalDiscovery option now makes use of all addresses tinc is bound to.
|
||||||
|
|
||||||
|
* Fixed support for tunemu on iOS devices.
|
||||||
|
|
||||||
|
* The PriorityInheritance option now also works with switch mode.
|
||||||
|
|
||||||
|
* Fixed tinc crashing when using a SOCKS5 proxy.
|
||||||
|
|
||||||
|
Thanks to Mesar Hameed, Vilbrekin and Martin Schürrer for their contributions
|
||||||
|
to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.19 June 25 2012
|
||||||
|
|
||||||
|
* Allow :: notation in IPv6 Subnets.
|
||||||
|
|
||||||
|
* Add support for systemd style socket activation.
|
||||||
|
|
||||||
|
* Allow environment variables to be used for the Name option.
|
||||||
|
|
||||||
|
* Add basic support for SOCKS proxies, HTTP proxies, and proxying through an
|
||||||
|
external command.
|
||||||
|
|
||||||
|
Thanks to Anthony G. Basile and Michael Tokarev for their contributions to
|
||||||
|
this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.18 March 25 2012
|
||||||
|
|
||||||
|
* Fixed IPv6 in switch mode by turning off DecrementTTL by default.
|
||||||
|
|
||||||
|
* Allow a port number to be specified in BindToAddress, which also allows tinc
|
||||||
|
to listen on multiple ports.
|
||||||
|
|
||||||
|
* Add support for multicast communication with UML/QEMU/KVM.
|
||||||
|
|
||||||
|
Version 1.0.17 March 10 2012
|
||||||
|
|
||||||
|
* The DeviceType option can now be used to select dummy, raw socket, UML and
|
||||||
|
VDE devices without needing to recompile tinc.
|
||||||
|
|
||||||
|
* Allow multiple BindToAddress statements.
|
||||||
|
|
||||||
|
* Decrement TTL value of IPv4 and IPv6 packets.
|
||||||
|
|
||||||
|
* Add LocalDiscovery option allowing tinc to detect peers that are behind the
|
||||||
|
same NAT.
|
||||||
|
|
||||||
|
* Accept Subnets passed with the -o option when StrictSubnets = yes.
|
||||||
|
|
||||||
|
* Disabling old RSA keys when generating new ones now also works properly on
|
||||||
|
Windows.
|
||||||
|
|
||||||
|
Thanks to Nick Hibma for his contribution to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.16 July 23 2011
|
||||||
|
|
||||||
|
* Fixed a performance issue with TCP communication under Windows.
|
||||||
|
|
||||||
|
* Fixed code that, during network outages, would cause tinc to exit when it
|
||||||
|
thought two nodes with identical Names were on the VPN.
|
||||||
|
|
||||||
|
Version 1.0.15 June 24 2011
|
||||||
|
|
||||||
|
* Improved logging to file.
|
||||||
|
|
||||||
|
* Reduced amount of process wakeups on platforms which support pselect().
|
||||||
|
|
||||||
|
* Fixed ProcessPriority option under Windows.
|
||||||
|
|
||||||
|
Version 1.0.14 May 8 2011
|
||||||
|
|
||||||
|
* Fixed reading configuration files that do not end with a newline. Again.
|
||||||
|
|
||||||
|
* Allow arbitrary configuration options being specified on the command line.
|
||||||
|
|
||||||
|
* Allow all options in both tinc.conf and the local host config file.
|
||||||
|
|
||||||
|
* Configurable replay window, UDP send and receive buffers for performance tuning.
|
||||||
|
|
||||||
|
* Try harder to get UDP communication back after falling back to TCP.
|
||||||
|
|
||||||
|
* Initial support for attaching tinc to a VDE switch.
|
||||||
|
|
||||||
|
* DragonFly BSD support.
|
||||||
|
|
||||||
|
* Allow linking with OpenSSL 1.0.0.
|
||||||
|
|
||||||
|
Thanks to Brandon Black, Julien Muchembled, Michael Tokarev, Rumko and Timothy
|
||||||
|
Redaelli for their contributions to this version of tinc.
|
||||||
|
|
||||||
|
Version 1.0.13 Apr 11 2010
|
||||||
|
|
||||||
|
* Allow building tinc without LZO and/or Zlib.
|
||||||
|
|
||||||
|
* Clamp MSS of TCP packets in both directions.
|
||||||
|
|
||||||
|
* Experimental StrictSubnets, Forwarding and DirectOnly options,
|
||||||
|
giving more control over information and packets received from/sent to other
|
||||||
|
nodes.
|
||||||
|
|
||||||
|
* Ensure tinc never sends symbolic names for ports over the wire.
|
||||||
|
|
||||||
|
Version 1.0.12 Feb 3 2010
|
||||||
|
|
||||||
|
* Really allow fast roaming of hosts to other nodes in a switched VPN.
|
||||||
|
|
||||||
|
* Fixes missing or incorrect environment variables when calling host-up/down
|
||||||
|
and subnet-up/down scripts in some cases.
|
||||||
|
|
||||||
|
* Allow port to be specified in Address statements.
|
||||||
|
|
||||||
|
* Clamp MSS of TCP packets to the discovered path MTU.
|
||||||
|
|
||||||
|
* Let two nodes behind NAT learn each others current UDP address and port via
|
||||||
|
a third node, potentially allowing direct communications in a similar way to
|
||||||
|
STUN.
|
||||||
|
|
||||||
|
Version 1.0.11 Nov 1 2009
|
||||||
|
|
||||||
|
* Fixed potential crash when the HUP signal is sent.
|
||||||
|
|
||||||
|
* Fixes handling of weighted Subnets in switch and hub modes, preventing
|
||||||
|
unnecessary broadcasts.
|
||||||
|
|
||||||
|
* Works around a MinGW bug that caused packets to Windows nodes to always be
|
||||||
|
sent via TCP.
|
||||||
|
|
||||||
|
* Improvements to the PMTU discovery code, especially on Windows.
|
||||||
|
|
||||||
|
* Use UDP again in certain cases where 1.0.10 was too conservative and fell
|
||||||
|
back to TCP unnecessarily.
|
||||||
|
|
||||||
|
* Allow fast roaming of hosts to other nodes in a switched VPN.
|
||||||
|
|
||||||
|
Version 1.0.10 Oct 18 2009
|
||||||
|
|
||||||
|
* Fixed potential crashes during shutdown and (in rare conditions) when other
|
||||||
|
nodes disconnected from the VPN.
|
||||||
|
|
||||||
|
* Improved NAT handling: tinc now copes with mangled port numbers, and will
|
||||||
|
automatically fall back to TCP if direct UDP connection between nodes is not
|
||||||
|
possible. The TCPOnly option should not have to be used anymore.
|
||||||
|
|
||||||
|
* Allow configuration files with CRLF line endings to be read on UNIX.
|
||||||
|
|
||||||
|
* Disable old RSA keys when generating new ones, and raise the default size of
|
||||||
|
new RSA keys to 2048 bits.
|
||||||
|
|
||||||
|
* Many fixes in the path MTU discovery code, especially when Compression is
|
||||||
|
being used.
|
||||||
|
|
||||||
|
* Tinc can now drop privileges and/or chroot itself.
|
||||||
|
|
||||||
|
* The TunnelServer code now just ignores information from clients instead of
|
||||||
|
disconnecting them.
|
||||||
|
|
||||||
|
* Improved performance on Windows by using the new ProcessPriority option and
|
||||||
|
by making the handling of packets received from the TAP-Win32 adapter more
|
||||||
|
efficient.
|
||||||
|
|
||||||
|
* Code cleanups: tinc now follows the C99 standard, copyright headers have
|
||||||
|
been updated to include patch authors, checkpoint tracing and localisation
|
||||||
|
features have been removed.
|
||||||
|
|
||||||
|
* Support for (jailbroken) iPhone and iPod Touch has been added.
|
||||||
|
|
||||||
|
Thanks to Florian Forster, Grzegorz Dymarek and especially Michael Tokarev for
|
||||||
|
their contributions to this version of tinc.
|
||||||
|
|
||||||
Version 1.0.9 Dec 26 2008
|
Version 1.0.9 Dec 26 2008
|
||||||
|
|
||||||
* Fixed tinc as a service under Windows 2003.
|
* Fixed tinc as a service under Windows 2003.
|
||||||
|
|
@ -13,7 +371,9 @@ Version 1.0.9 Dec 26 2008
|
||||||
|
|
||||||
* Enable path MTU discovery by default.
|
* Enable path MTU discovery by default.
|
||||||
|
|
||||||
* Fixed a memory leak that occured when connections were closed.
|
* Fixed a memory leak that occurred when connections were closed.
|
||||||
|
|
||||||
|
Thanks to Max Rijevski for his contributions to this version of tinc.
|
||||||
|
|
||||||
Version 1.0.8 May 16 2007
|
Version 1.0.8 May 16 2007
|
||||||
|
|
||||||
|
|
@ -21,6 +381,8 @@ Version 1.0.8 May 16 2007
|
||||||
|
|
||||||
* Made network sockets non-blocking under Windows.
|
* Made network sockets non-blocking under Windows.
|
||||||
|
|
||||||
|
Thanks to Scott Lamb and "dnk" for their contributions to this version of tinc.
|
||||||
|
|
||||||
Version 1.0.7 Jan 5 2007
|
Version 1.0.7 Jan 5 2007
|
||||||
|
|
||||||
* Fixed a bug that caused slow network speeds on Windows.
|
* Fixed a bug that caused slow network speeds on Windows.
|
||||||
|
|
@ -48,6 +410,8 @@ version 1.0.5 Nov 14 2006
|
||||||
|
|
||||||
* Support LZO 2.0 and later.
|
* Support LZO 2.0 and later.
|
||||||
|
|
||||||
|
Thanks to Scott Lamb for his contributions to this version of tinc.
|
||||||
|
|
||||||
version 1.0.4 May 4 2005
|
version 1.0.4 May 4 2005
|
||||||
|
|
||||||
* Fix switch and hub modes.
|
* Fix switch and hub modes.
|
||||||
|
|
|
||||||
71
README
71
README
|
|
@ -1,7 +1,7 @@
|
||||||
This is the README file for tinc version 1.0.9. Installation
|
This is the README file for tinc version 1.0.36. Installation
|
||||||
instructions may be found in the INSTALL file.
|
instructions may be found in the INSTALL file.
|
||||||
|
|
||||||
tinc is Copyright (C) 1998-2008 by:
|
tinc is Copyright (C) 1998-2019 by:
|
||||||
|
|
||||||
Ivo Timmermans,
|
Ivo Timmermans,
|
||||||
Guus Sliepen <guus@tinc-vpn.org>,
|
Guus Sliepen <guus@tinc-vpn.org>,
|
||||||
|
|
@ -36,49 +36,53 @@ writeup describing various security issues in several VPN daemons. He showed
|
||||||
that tinc lacks perfect forward security, the connection authentication could
|
that tinc lacks perfect forward security, the connection authentication could
|
||||||
be done more properly, that the sequence number we use as an IV is not the best
|
be done more properly, that the sequence number we use as an IV is not the best
|
||||||
practice and that the default length of the HMAC for packets is too short in
|
practice and that the default length of the HMAC for packets is too short in
|
||||||
his opinion. We do not know of a way to exploit these weaknesses, but we will
|
his opinion. We do not know of a way to exploit these weaknesses, but these
|
||||||
address these issues in tinc 2.0.
|
issues are being addressed in the tinc 1.1 branch.
|
||||||
|
|
||||||
|
The Sweet32 attack affects versions of tinc prior to 1.0.30.
|
||||||
|
|
||||||
|
On September 6th, 2018, Michael Yonly contacted us and provided
|
||||||
|
proof-of-concept code that allowed a remote attacker to create an
|
||||||
|
authenticated, one-way connection with a node, and also that there was a
|
||||||
|
possibility for a man-in-the-middle to force UDP packets from a node to be sent
|
||||||
|
in plaintext. The first issue was trivial to exploit on tinc versions prior to
|
||||||
|
1.0.30, but the changes in 1.0.30 to mitigate the Sweet32 attack made this
|
||||||
|
weakness much harder to exploit. These issues have been fixed in tinc 1.0.35.
|
||||||
|
The new protocol in the tinc 1.1 branch is not susceptible to these issues.
|
||||||
|
|
||||||
Cryptography is a hard thing to get right. We cannot make any
|
Cryptography is a hard thing to get right. We cannot make any
|
||||||
guarantees. Time, review and feedback are the only things that can
|
guarantees. Time, review and feedback are the only things that can
|
||||||
prove the security of any cryptographic product. If you wish to review
|
prove the security of any cryptographic product. If you wish to review
|
||||||
tinc or give us feedback, you are stronly encouraged to do so.
|
tinc or give us feedback, you are strongly encouraged to do so.
|
||||||
|
|
||||||
|
|
||||||
Changes to configuration file format since 1.0pre5
|
|
||||||
--------------------------------------------------
|
|
||||||
|
|
||||||
Some configuration variables have different names now. Most notably "TapDevice"
|
|
||||||
should be changed into "Device", and "Device" should be changed into
|
|
||||||
"BindToDevice".
|
|
||||||
|
|
||||||
Compatibility
|
Compatibility
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Version 1.0.9 is compatible with 1.0pre8, 1.0 and later, but not with older
|
Version 1.0.35 is compatible with 1.0pre8, 1.0 and later, but not with older
|
||||||
versions of tinc.
|
versions of tinc. Note that since version 1.0.30, tinc requires all nodes in
|
||||||
|
the VPN to be compiled with a version of LibreSSL or OpenSSL that supports the
|
||||||
|
AES256 and SHA256 algorithms.
|
||||||
|
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Since 1.0pre3, we use OpenSSL for all cryptographic functions. So you
|
The OpenSSL library is used for all cryptographic functions. You can find it at
|
||||||
need to install this library first; grab it from
|
https://www.openssl.org/. You will need version 1.0.1 or later with support for
|
||||||
http://www.openssl.org/. You will need version 0.9.7 or later. If
|
AES256 and SHA256 enabled. If this library is not installed on your system, the
|
||||||
this library is not installed on you system, configure will fail. The
|
configure script will fail. The manual in doc/tinc.texi contains more detailed
|
||||||
manual in doc/tinc.texi contains more detailed information on how to
|
information on how to install this library. Alternatively, you may also use the
|
||||||
install this library.
|
LibreSSL library.
|
||||||
|
|
||||||
Since 1.0pre6, the zlib library is used for optional compression. You need this
|
The zlib library is used for optional compression. You can
|
||||||
library whether or not you plan to enable the compression. You can find it at
|
find it at https://zlib.net/. Because of a possible exploit in
|
||||||
http://www.gzip.org/zlib/. Because of a possible exploit in earlier versions we
|
earlier versions we recommend that you download version 1.1.4 or later.
|
||||||
recommand that you download version 1.1.4 or later.
|
|
||||||
|
|
||||||
Since 1.0, the lzo library is also used for optional compression. You need this
|
The LZO library is also used for optional compression. You can
|
||||||
library whether or not you plan to enable compression. You can find it at
|
find it at https://www.oberhumer.com/opensource/lzo/.
|
||||||
http://www.oberhumer.com/opensource/lzo/.
|
|
||||||
|
|
||||||
In order to compile tinc, you will need a GNU C compiler environment.
|
In order to compile tinc, you will need a C99 compliant compiler.
|
||||||
|
|
||||||
|
|
||||||
Features
|
Features
|
||||||
|
|
@ -108,15 +112,14 @@ Linux, FreeBSD and Windows.
|
||||||
The algorithms used for encryption and generating message authentication codes
|
The algorithms used for encryption and generating message authentication codes
|
||||||
can now be changed in the configuration files. All cipher and digest algorithms
|
can now be changed in the configuration files. All cipher and digest algorithms
|
||||||
supported by OpenSSL can be used. Useful ciphers are "blowfish" (default),
|
supported by OpenSSL can be used. Useful ciphers are "blowfish" (default),
|
||||||
"bf-ofb", "des", "des3", etcetera. Useful digests are "sha1" (default), "md5",
|
"bf-ofb", "des", "des3", et cetera. Useful digests are "sha1" (default), "md5",
|
||||||
etcetera.
|
et cetera.
|
||||||
|
|
||||||
Support for routing IPv6 packets has been added. Just add Subnet lines with
|
Support for routing IPv6 packets has been added. Just add Subnet lines with
|
||||||
IPv6 addresses (without using :: abbreviations) and use ifconfig or ip (from
|
IPv6 addresses (without using :: abbreviations) and use ifconfig or ip (from
|
||||||
the iproute package) to give the virtual network interface corresponding IPv6
|
the iproute package) to give the virtual network interface corresponding IPv6
|
||||||
addresses. tinc does not provide autoconfiguration for IPv6 hosts, if you need
|
addresses. tinc does not provide autoconfiguration for IPv6 hosts. Consider
|
||||||
it use radvd or zebra. Tunneling IPv6 packets only works on Linux, FreeBSD,
|
using radvd or zebra if you need it.
|
||||||
Windows and possibly OpenBSD.
|
|
||||||
|
|
||||||
It is also possible to make tunnels to other tinc daemons over IPv6 networks,
|
It is also possible to make tunnels to other tinc daemons over IPv6 networks,
|
||||||
if the operating system supports IPv6. tinc will automatically use both IPv6
|
if the operating system supports IPv6. tinc will automatically use both IPv6
|
||||||
|
|
@ -124,7 +127,7 @@ and IPv4 when available, but this can be changed by adding the option
|
||||||
"AddressFamily = ipv4" or "AddressFamily = ipv6" to the tinc.conf file.
|
"AddressFamily = ipv4" or "AddressFamily = ipv6" to the tinc.conf file.
|
||||||
|
|
||||||
Normally, when started tinc will detach and run in the background. In a native
|
Normally, when started tinc will detach and run in the background. In a native
|
||||||
Windows environment this means tinc will intall itself as a service, which will
|
Windows environment this means tinc will install itself as a service, which will
|
||||||
restart after reboots. To prevent tinc from detaching or running as a service,
|
restart after reboots. To prevent tinc from detaching or running as a service,
|
||||||
use the -D option.
|
use the -D option.
|
||||||
|
|
||||||
|
|
|
||||||
25
README.android
Normal file
25
README.android
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
Quick how-to cross compile tinc for android (done from $HOME/android/):
|
||||||
|
|
||||||
|
- Download android NDK and setup local ARM toolchain:
|
||||||
|
wget http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86.tar.bz2
|
||||||
|
tar xfj android-ndk-r9d-linux-x86.tar.bz2
|
||||||
|
./android-ndk-r9d/build/tools/make-standalone-toolchain.sh --platform=android-5 --install-dir=/tmp/my-android-toolchain
|
||||||
|
|
||||||
|
- Download and cross-compile openSSL for ARM:
|
||||||
|
wget http://www.openssl.org/source/openssl-1.0.1h.tar.gz
|
||||||
|
tar xfz openssl-1.0.1h.tar.gz
|
||||||
|
cd openssl-1.0.1h
|
||||||
|
./Configure dist
|
||||||
|
make CC=/tmp/my-android-toolchain/bin/arm-linux-androideabi-gcc AR="/tmp/my-android-toolchain/bin/arm-linux-androideabi-ar r" RANLIB=/tmp/my-android-toolchain/bin/arm-linux-androideabi-ranlib
|
||||||
|
cd -
|
||||||
|
|
||||||
|
- Clone and cross-compile tinc:
|
||||||
|
git clone git://tinc-vpn.org/tinc
|
||||||
|
cd tinc
|
||||||
|
autoreconf -fsi
|
||||||
|
CC=/tmp/my-android-toolchain/bin/arm-linux-androideabi-gcc ./configure --host=arm-linux --disable-lzo --with-openssl-lib=$HOME/android/openssl-1.0.1g --with-openssl-include=$HOME/android/openssl-1.0.1g/include/ --disable-hardening
|
||||||
|
make -j5
|
||||||
|
|
||||||
|
- Strip tincd binary to make it smaller
|
||||||
|
/tmp/my-android-toolchain/bin/arm-linux-androideabi-strip src/tincd
|
||||||
|
|
||||||
93
THANKS
93
THANKS
|
|
@ -1,39 +1,126 @@
|
||||||
We would like to thank the following people for their contributions to tinc:
|
We would like to thank the following people for their contributions to tinc:
|
||||||
|
|
||||||
* Alexander Reil and Gemeinde Berg
|
* Alexander Reil and Gemeinde Berg
|
||||||
|
* Alexander Ried
|
||||||
|
* Alexis Hildebrandt
|
||||||
* Allesandro Gatti
|
* Allesandro Gatti
|
||||||
* Andreas van Cranenburgh
|
* Andreas van Cranenburgh
|
||||||
|
* Andrew Hahn
|
||||||
|
* Anthony G. Basile
|
||||||
* Armijn Hemel
|
* Armijn Hemel
|
||||||
|
* Armin Fisslthaler
|
||||||
|
* Aron Cowan
|
||||||
|
* Ashish Bajaj
|
||||||
|
* Baptiste Jonglez
|
||||||
|
* Borg
|
||||||
|
* Brandon Black
|
||||||
|
* Cheng LI
|
||||||
* Cris van Pelt
|
* Cris van Pelt
|
||||||
|
* Darius Jahandarie
|
||||||
|
* Dato Simó
|
||||||
|
* David Pflug
|
||||||
|
* Delf Eldkraft
|
||||||
|
* Dennis Joachimsthaler
|
||||||
|
* dnk
|
||||||
|
* Егор Палкин
|
||||||
|
* Élie Bouttier
|
||||||
* Enrique Zanardi
|
* Enrique Zanardi
|
||||||
|
* Erik Tews
|
||||||
|
* Etienne Dechamps
|
||||||
|
* Florent Clairambault
|
||||||
|
* Florian Forster
|
||||||
|
* Florian Klink
|
||||||
|
* Florian Weik
|
||||||
* Flynn Marquardt
|
* Flynn Marquardt
|
||||||
|
* Franz Pletz
|
||||||
|
* Gary Kessler and Claudia Gonzalez
|
||||||
|
* Grzegorz Dymarek
|
||||||
|
* Gusariev Oleksandr
|
||||||
* Hans Bayle
|
* Hans Bayle
|
||||||
|
* Harvest
|
||||||
* Ivo van Dong
|
* Ivo van Dong
|
||||||
|
* Ivo Smits
|
||||||
|
* James Cook
|
||||||
* James MacLean
|
* James MacLean
|
||||||
* Jamie Briggs
|
* Jamie Briggs
|
||||||
|
* Jan Štembera
|
||||||
* Jason Harper
|
* Jason Harper
|
||||||
|
* Jason Livesay
|
||||||
|
* Jasper Krijgsman
|
||||||
|
* Jelle de Jong
|
||||||
|
* Jeroen Domburg
|
||||||
* Jeroen Ubbink
|
* Jeroen Ubbink
|
||||||
* Jerome Etienne
|
* Jerome Etienne
|
||||||
|
* Jo-Philipp Wich
|
||||||
|
* Jochen Voss
|
||||||
|
* Julien Muchembled
|
||||||
|
* Lavrans Laading
|
||||||
|
* Loïc Dachary
|
||||||
|
* Loïc Grenié
|
||||||
* Lubomír Bulej
|
* Lubomír Bulej
|
||||||
|
* luckyhacky
|
||||||
|
* LunarShaddow
|
||||||
* Mads Kiilerich
|
* Mads Kiilerich
|
||||||
* Marc A. Lehmann
|
* Marc A. Lehmann
|
||||||
* Mark Glines
|
* Mark Glines
|
||||||
|
* Mark Petryk
|
||||||
* Markus Goetz
|
* Markus Goetz
|
||||||
* Martin Kihlgren
|
* Martin Kihlgren
|
||||||
|
* Martin Schobert
|
||||||
|
* Martin Schürrer
|
||||||
|
* Martin Weinelt
|
||||||
* Matias Carrasco
|
* Matias Carrasco
|
||||||
* Max Rijevski
|
* Max Rijevski
|
||||||
|
* Menno Smits
|
||||||
|
* Mesar Hameed
|
||||||
|
* Michael Taylor
|
||||||
|
* Michael Tokarev
|
||||||
|
* Michael Yonli
|
||||||
* Miles Nordin
|
* Miles Nordin
|
||||||
|
* Nathan Stratton Treadway
|
||||||
|
* Murat Donmez
|
||||||
|
* Nick Hibma
|
||||||
* Nick Patavalis
|
* Nick Patavalis
|
||||||
* Paul Littlefield
|
* Paul Littlefield
|
||||||
|
* Philipp Babel
|
||||||
|
* Pierre Emeriaud
|
||||||
|
* Pierre-Olivier Mercier
|
||||||
|
* Rafael Wolf
|
||||||
|
* Rafael Sadowski
|
||||||
|
* Rafał Leśniak
|
||||||
|
* Rhosyn Celyn
|
||||||
* Robert van der Meulen
|
* Robert van der Meulen
|
||||||
|
* Robert Waniek
|
||||||
|
* Rumko
|
||||||
|
* Ryan Miller
|
||||||
|
* Sam Bryan
|
||||||
|
* Samuel Thibault
|
||||||
|
* Saverio Proto
|
||||||
* Scott Lamb
|
* Scott Lamb
|
||||||
|
* Steffan Karger
|
||||||
|
* Stig Fagrell
|
||||||
* Sven-Haegar Koch
|
* Sven-Haegar Koch
|
||||||
* Teemu Kiviniemi
|
* Teemu Kiviniemi
|
||||||
|
* Thomas Tsiakalakis
|
||||||
|
* Timothy Redaelli
|
||||||
|
* Tomasz Fortuna
|
||||||
|
* Tomislav Čohar
|
||||||
|
* Tommy Arnkværn
|
||||||
* Tonnerre Lombard
|
* Tonnerre Lombard
|
||||||
|
* Ulrich Seifert
|
||||||
|
* Vil Brekin
|
||||||
|
* Vincent Laurent
|
||||||
|
* Vittorio Gambaletta
|
||||||
|
* Wendy Willard
|
||||||
* Wessel Dankers
|
* Wessel Dankers
|
||||||
|
* William A. Kennington III
|
||||||
|
* William McArthur
|
||||||
* Wouter van Heyst
|
* Wouter van Heyst
|
||||||
|
* xentec
|
||||||
|
* 戴 鸣
|
||||||
|
|
||||||
And everyone we forgot. Thank you!
|
And everyone we forgot (if we did, please let us know). Thank you!
|
||||||
|
|
||||||
Ivo Timmermans
|
---
|
||||||
Guus Sliepen
|
Ivo Timmermans,
|
||||||
|
Guus Sliepen.
|
||||||
|
|
|
||||||
949
aclocal.m4
vendored
949
aclocal.m4
vendored
File diff suppressed because it is too large
Load diff
348
compile
Executable file
348
compile
Executable file
|
|
@ -0,0 +1,348 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
|
||||||
|
scriptversion=2018-03-07.03; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
|
||||||
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# This file is maintained in Automake, please report
|
||||||
|
# bugs to <bug-automake@gnu.org> or send patches to
|
||||||
|
# <automake-patches@gnu.org>.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
|
||||||
|
# We need space, tab and new line, in precisely that order. Quoting is
|
||||||
|
# there to prevent tools from complaining about whitespace usage.
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
file_conv=
|
||||||
|
|
||||||
|
# func_file_conv build_file lazy
|
||||||
|
# Convert a $build file to $host form and store it in $file
|
||||||
|
# Currently only supports Windows hosts. If the determined conversion
|
||||||
|
# type is listed in (the comma separated) LAZY, no conversion will
|
||||||
|
# take place.
|
||||||
|
func_file_conv ()
|
||||||
|
{
|
||||||
|
file=$1
|
||||||
|
case $file in
|
||||||
|
/ | /[!/]*) # absolute file, and not a UNC file
|
||||||
|
if test -z "$file_conv"; then
|
||||||
|
# lazily determine how to convert abs files
|
||||||
|
case `uname -s` in
|
||||||
|
MINGW*)
|
||||||
|
file_conv=mingw
|
||||||
|
;;
|
||||||
|
CYGWIN* | MSYS*)
|
||||||
|
file_conv=cygwin
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
file_conv=wine
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
case $file_conv/,$2, in
|
||||||
|
*,$file_conv,*)
|
||||||
|
;;
|
||||||
|
mingw/*)
|
||||||
|
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||||
|
;;
|
||||||
|
cygwin/* | msys/*)
|
||||||
|
file=`cygpath -m "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
wine/*)
|
||||||
|
file=`winepath -w "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashL linkdir
|
||||||
|
# Make cl look for libraries in LINKDIR
|
||||||
|
func_cl_dashL ()
|
||||||
|
{
|
||||||
|
func_file_conv "$1"
|
||||||
|
if test -z "$lib_path"; then
|
||||||
|
lib_path=$file
|
||||||
|
else
|
||||||
|
lib_path="$lib_path;$file"
|
||||||
|
fi
|
||||||
|
linker_opts="$linker_opts -LIBPATH:$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashl library
|
||||||
|
# Do a library search-path lookup for cl
|
||||||
|
func_cl_dashl ()
|
||||||
|
{
|
||||||
|
lib=$1
|
||||||
|
found=no
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=';'
|
||||||
|
for dir in $lib_path $LIB
|
||||||
|
do
|
||||||
|
IFS=$save_IFS
|
||||||
|
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.dll.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/$lib.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/lib$lib.a"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/lib$lib.a
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$save_IFS
|
||||||
|
|
||||||
|
if test "$found" != yes; then
|
||||||
|
lib=$lib.lib
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_wrapper cl arg...
|
||||||
|
# Adjust compile command to suit cl
|
||||||
|
func_cl_wrapper ()
|
||||||
|
{
|
||||||
|
# Assume a capable shell
|
||||||
|
lib_path=
|
||||||
|
shared=:
|
||||||
|
linker_opts=
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.[oO][bB][jJ])
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fo"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fe"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
-I)
|
||||||
|
eat=1
|
||||||
|
func_file_conv "$2" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-I*)
|
||||||
|
func_file_conv "${1#-I}" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashl "$2"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l*)
|
||||||
|
func_cl_dashl "${1#-l}"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-L)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashL "$2"
|
||||||
|
;;
|
||||||
|
-L*)
|
||||||
|
func_cl_dashL "${1#-L}"
|
||||||
|
;;
|
||||||
|
-static)
|
||||||
|
shared=false
|
||||||
|
;;
|
||||||
|
-Wl,*)
|
||||||
|
arg=${1#-Wl,}
|
||||||
|
save_ifs="$IFS"; IFS=','
|
||||||
|
for flag in $arg; do
|
||||||
|
IFS="$save_ifs"
|
||||||
|
linker_opts="$linker_opts $flag"
|
||||||
|
done
|
||||||
|
IFS="$save_ifs"
|
||||||
|
;;
|
||||||
|
-Xlinker)
|
||||||
|
eat=1
|
||||||
|
linker_opts="$linker_opts $2"
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||||
|
func_file_conv "$1"
|
||||||
|
set x "$@" -Tp"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||||
|
func_file_conv "$1" mingw
|
||||||
|
set x "$@" "$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
if test -n "$linker_opts"; then
|
||||||
|
linker_opts="-link$linker_opts"
|
||||||
|
fi
|
||||||
|
exec "$@" $linker_opts
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
eat=
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||||
|
arguments, and rename the output as expected.
|
||||||
|
|
||||||
|
If you are trying to build a whole package this is not the
|
||||||
|
right script to run: please start by reading the file 'INSTALL'.
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "compile $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
|
||||||
|
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
|
||||||
|
func_cl_wrapper "$@" # Doesn't return...
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ofile=
|
||||||
|
cfile=
|
||||||
|
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
# So we strip '-o arg' only if arg is an object.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.obj)
|
||||||
|
ofile=$2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" -o "$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*.c)
|
||||||
|
cfile=$1
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "$ofile" || test -z "$cfile"; then
|
||||||
|
# If no '-o' option was seen then we might have been invoked from a
|
||||||
|
# pattern rule where we don't need one. That is ok -- this is a
|
||||||
|
# normal compilation that the losing compiler can handle. If no
|
||||||
|
# '.c' file was seen then we are probably linking. That is also
|
||||||
|
# ok.
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Name of file we expect compiler to create.
|
||||||
|
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||||
|
|
||||||
|
# Create the lock directory.
|
||||||
|
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||||
|
# that we are using for the .o file. Also, base the name on the expected
|
||||||
|
# object file name, since that is what matters with a parallel build.
|
||||||
|
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||||
|
while true; do
|
||||||
|
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
# FIXME: race condition here if user kills between mkdir and trap.
|
||||||
|
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||||
|
|
||||||
|
# Run the compile.
|
||||||
|
"$@"
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
if test -f "$cofile"; then
|
||||||
|
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||||
|
elif test -f "${cofile}bj"; then
|
||||||
|
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rmdir "$lockdir"
|
||||||
|
exit $ret
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC0"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
||||||
1256
config.guess
vendored
1256
config.guess
vendored
File diff suppressed because it is too large
Load diff
242
config.h.in
242
config.h.in
|
|
@ -1,36 +1,29 @@
|
||||||
/* config.h.in. Generated from configure.in by autoheader. */
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
|
||||||
systems. This function is required for `alloca.c' support on those systems.
|
|
||||||
*/
|
|
||||||
#undef CRAY_STACKSEG_END
|
|
||||||
|
|
||||||
/* Define to 1 if using `alloca.c'. */
|
|
||||||
#undef C_ALLOCA
|
|
||||||
|
|
||||||
/* Support for jumbograms (packets up to 9000 bytes) */
|
/* Support for jumbograms (packets up to 9000 bytes) */
|
||||||
#undef ENABLE_JUMBOGRAMS
|
#undef ENABLE_JUMBOGRAMS
|
||||||
|
|
||||||
/* Define to 1 if translation of program messages to the user's native
|
/* Support for tunemu */
|
||||||
language is requested. */
|
#undef ENABLE_TUNEMU
|
||||||
#undef ENABLE_NLS
|
|
||||||
|
|
||||||
/* Checkpoint tracing */
|
/* Support for UML */
|
||||||
#undef ENABLE_TRACING
|
#undef ENABLE_UML
|
||||||
|
|
||||||
/* Define to 1 if you have `alloca', as a function or macro. */
|
/* Support for VDE */
|
||||||
#undef HAVE_ALLOCA
|
#undef ENABLE_VDE
|
||||||
|
|
||||||
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
|
||||||
*/
|
|
||||||
#undef HAVE_ALLOCA_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||||
#undef HAVE_ARPA_INET_H
|
#undef HAVE_ARPA_INET_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <arpa/nameser.h> header file. */
|
||||||
|
#undef HAVE_ARPA_NAMESER_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `asprintf' function. */
|
/* Define to 1 if you have the `asprintf' function. */
|
||||||
#undef HAVE_ASPRINTF
|
#undef HAVE_ASPRINTF
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `BN_GENCB_new' function. */
|
||||||
|
#undef HAVE_BN_GENCB_NEW
|
||||||
|
|
||||||
/* Unknown BSD variant */
|
/* Unknown BSD variant */
|
||||||
#undef HAVE_BSD
|
#undef HAVE_BSD
|
||||||
|
|
||||||
|
|
@ -43,9 +36,45 @@
|
||||||
/* Darwin (MacOS/X) */
|
/* Darwin (MacOS/X) */
|
||||||
#undef HAVE_DARWIN
|
#undef HAVE_DARWIN
|
||||||
|
|
||||||
/* Define if the GNU dcgettext() function is already present or preinstalled.
|
/* Define to 1 if you have the declaration of `EVP_aes_256_cfb', and to 0 if
|
||||||
*/
|
you don't. */
|
||||||
#undef HAVE_DCGETTEXT
|
#undef HAVE_DECL_EVP_AES_256_CFB
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `freeaddrinfo', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_FREEADDRINFO
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `gai_strerror', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_GAI_STRERROR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `getaddrinfo', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_GETADDRINFO
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `getnameinfo', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_GETNAMEINFO
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `OpenSSL_add_all_algorithms',
|
||||||
|
and to 0 if you don't. */
|
||||||
|
#undef HAVE_DECL_OPENSSL_ADD_ALL_ALGORITHMS
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `res_init', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_RES_INIT
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `devname' function. */
|
||||||
|
#undef HAVE_DEVNAME
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dirent.h> header file. */
|
||||||
|
#undef HAVE_DIRENT_H
|
||||||
|
|
||||||
|
/* DragonFly */
|
||||||
|
#undef HAVE_DRAGONFLY
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `EVP_CIPHER_CTX_new' function. */
|
||||||
|
#undef HAVE_EVP_CIPHER_CTX_NEW
|
||||||
|
|
||||||
/* Define to 1 if you have the `EVP_EncryptInit_ex' function. */
|
/* Define to 1 if you have the `EVP_EncryptInit_ex' function. */
|
||||||
#undef HAVE_EVP_ENCRYPTINIT_EX
|
#undef HAVE_EVP_ENCRYPTINIT_EX
|
||||||
|
|
@ -53,60 +82,51 @@
|
||||||
/* Define to 1 if you have the `fchmod' function. */
|
/* Define to 1 if you have the `fchmod' function. */
|
||||||
#undef HAVE_FCHMOD
|
#undef HAVE_FCHMOD
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fdevname' function. */
|
||||||
|
#undef HAVE_FDEVNAME
|
||||||
|
|
||||||
/* Define to 1 if you have the `flock' function. */
|
/* Define to 1 if you have the `flock' function. */
|
||||||
#undef HAVE_FLOCK
|
#undef HAVE_FLOCK
|
||||||
|
|
||||||
/* Define to 1 if you have the `fork' function. */
|
/* Define to 1 if you have the `fork' function. */
|
||||||
#undef HAVE_FORK
|
#undef HAVE_FORK
|
||||||
|
|
||||||
/* Define to 1 if you have the `freeaddrinfo' function. */
|
|
||||||
#undef HAVE_FREEADDRINFO
|
|
||||||
|
|
||||||
/* FreeBSD */
|
/* FreeBSD */
|
||||||
#undef HAVE_FREEBSD
|
#undef HAVE_FREEBSD
|
||||||
|
|
||||||
/* Define to 1 if you have the `ftime' function. */
|
/* Define to 1 if you have the <getopt.h> header file. */
|
||||||
#undef HAVE_FTIME
|
#undef HAVE_GETOPT_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `gai_strerror' function. */
|
/* getopt_long() */
|
||||||
#undef HAVE_GAI_STRERROR
|
#undef HAVE_GETOPT_LONG
|
||||||
|
|
||||||
/* Define to 1 if you have the `getaddrinfo' function. */
|
|
||||||
#undef HAVE_GETADDRINFO
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `getnameinfo' function. */
|
|
||||||
#undef HAVE_GETNAMEINFO
|
|
||||||
|
|
||||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
|
||||||
#undef HAVE_GETTEXT
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `gettimeofday' function. */
|
/* Define to 1 if you have the `gettimeofday' function. */
|
||||||
#undef HAVE_GETTIMEOFDAY
|
#undef HAVE_GETTIMEOFDAY
|
||||||
|
|
||||||
/* Define to 1 if you have the `get_current_dir_name' function. */
|
|
||||||
#undef HAVE_GET_CURRENT_DIR_NAME
|
|
||||||
|
|
||||||
/* Define if you have the iconv() function. */
|
|
||||||
#undef HAVE_ICONV
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `inet_aton' function. */
|
|
||||||
#undef HAVE_INET_ATON
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
#undef HAVE_INTTYPES_H
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `nsl' library (-lnsl). */
|
/* Define to 1 if you have the `nsl' library (-lnsl). */
|
||||||
#undef HAVE_LIBNSL
|
#undef HAVE_LIBNSL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `resolv' library (-lresolv). */
|
||||||
|
#undef HAVE_LIBRESOLV
|
||||||
|
|
||||||
/* Define to 1 if you have the `socket' library (-lsocket). */
|
/* Define to 1 if you have the `socket' library (-lsocket). */
|
||||||
#undef HAVE_LIBSOCKET
|
#undef HAVE_LIBSOCKET
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libvdeplug_dyn.h> header file. */
|
||||||
|
#undef HAVE_LIBVDEPLUG_DYN_H
|
||||||
|
|
||||||
/* Linux */
|
/* Linux */
|
||||||
#undef HAVE_LINUX
|
#undef HAVE_LINUX
|
||||||
|
|
||||||
/* Define to 1 if you have the <linux/if_tun.h> header file. */
|
/* Define to 1 if you have the <linux/if_tun.h> header file. */
|
||||||
#undef HAVE_LINUX_IF_TUN_H
|
#undef HAVE_LINUX_IF_TUN_H
|
||||||
|
|
||||||
|
/* enable lzo compression support */
|
||||||
|
#undef HAVE_LZO
|
||||||
|
|
||||||
/* Define to 1 if you have the <lzo1x.h> header file. */
|
/* Define to 1 if you have the <lzo1x.h> header file. */
|
||||||
#undef HAVE_LZO1X_H
|
#undef HAVE_LZO1X_H
|
||||||
|
|
||||||
|
|
@ -116,10 +136,6 @@
|
||||||
/* Define to 1 if you have the <lzo/lzo1x.h> header file. */
|
/* Define to 1 if you have the <lzo/lzo1x.h> header file. */
|
||||||
#undef HAVE_LZO_LZO1X_H
|
#undef HAVE_LZO_LZO1X_H
|
||||||
|
|
||||||
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
|
|
||||||
to 0 otherwise. */
|
|
||||||
#undef HAVE_MALLOC
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
#undef HAVE_MEMORY_H
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
|
@ -162,6 +178,9 @@
|
||||||
/* Define to 1 if you have the <netinet/tcp.h> header file. */
|
/* Define to 1 if you have the <netinet/tcp.h> header file. */
|
||||||
#undef HAVE_NETINET_TCP_H
|
#undef HAVE_NETINET_TCP_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netpacket/packet.h> header file. */
|
||||||
|
#undef HAVE_NETPACKET_PACKET_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <net/ethernet.h> header file. */
|
/* Define to 1 if you have the <net/ethernet.h> header file. */
|
||||||
#undef HAVE_NET_ETHERNET_H
|
#undef HAVE_NET_ETHERNET_H
|
||||||
|
|
||||||
|
|
@ -180,6 +199,15 @@
|
||||||
/* Define to 1 if you have the <net/if_types.h> header file. */
|
/* Define to 1 if you have the <net/if_types.h> header file. */
|
||||||
#undef HAVE_NET_IF_TYPES_H
|
#undef HAVE_NET_IF_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <net/if_utun.h> header file. */
|
||||||
|
#undef HAVE_NET_IF_UTUN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <net/tap/if_tap.h> header file. */
|
||||||
|
#undef HAVE_NET_TAP_IF_TAP_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <net/tun/if_tun.h> header file. */
|
||||||
|
#undef HAVE_NET_TUN_IF_TUN_H
|
||||||
|
|
||||||
/* OpenBSD */
|
/* OpenBSD */
|
||||||
#undef HAVE_OPENBSD
|
#undef HAVE_OPENBSD
|
||||||
|
|
||||||
|
|
@ -204,21 +232,20 @@
|
||||||
/* Define to 1 if you have the <openssl/sha.h> header file. */
|
/* Define to 1 if you have the <openssl/sha.h> header file. */
|
||||||
#undef HAVE_OPENSSL_SHA_H
|
#undef HAVE_OPENSSL_SHA_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `pselect' function. */
|
||||||
|
#undef HAVE_PSELECT
|
||||||
|
|
||||||
/* Define to 1 if you have the `putenv' function. */
|
/* Define to 1 if you have the `putenv' function. */
|
||||||
#undef HAVE_PUTENV
|
#undef HAVE_PUTENV
|
||||||
|
|
||||||
/* Define to 1 if you have the `random' function. */
|
/* Define to 1 if you have the `RAND_bytes' function. */
|
||||||
#undef HAVE_RANDOM
|
#undef HAVE_RAND_BYTES
|
||||||
|
|
||||||
/* Define to 1 if you have the `RAND_pseudo_bytes' function. */
|
/* Define to 1 if you have the <resolv.h> header file. */
|
||||||
#undef HAVE_RAND_PSEUDO_BYTES
|
#undef HAVE_RESOLV_H
|
||||||
|
|
||||||
/* Define to 1 if your system has a GNU libc compatible `realloc' function,
|
/* Define to 1 if you have the `RSA_set0_key' function. */
|
||||||
and to 0 otherwise. */
|
#undef HAVE_RSA_SET0_KEY
|
||||||
#undef HAVE_REALLOC
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `select' function. */
|
|
||||||
#undef HAVE_SELECT
|
|
||||||
|
|
||||||
/* Define to 1 if the system has the type `socklen_t'. */
|
/* Define to 1 if the system has the type `socklen_t'. */
|
||||||
#undef HAVE_SOCKLEN_T
|
#undef HAVE_SOCKLEN_T
|
||||||
|
|
@ -226,21 +253,12 @@
|
||||||
/* Solaris/SunOS */
|
/* Solaris/SunOS */
|
||||||
#undef HAVE_SOLARIS
|
#undef HAVE_SOLARIS
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdbool.h> header file. */
|
|
||||||
#undef HAVE_STDBOOL_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdint.h> header file. */
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
#undef HAVE_STDINT_H
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
#undef HAVE_STDLIB_H
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `strdup' function. */
|
|
||||||
#undef HAVE_STRDUP
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `strerror' function. */
|
|
||||||
#undef HAVE_STRERROR
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <strings.h> header file. */
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
#undef HAVE_STRINGS_H
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
|
@ -250,9 +268,6 @@
|
||||||
/* Define to 1 if you have the `strsignal' function. */
|
/* Define to 1 if you have the `strsignal' function. */
|
||||||
#undef HAVE_STRSIGNAL
|
#undef HAVE_STRSIGNAL
|
||||||
|
|
||||||
/* Define to 1 if you have the `strtol' function. */
|
|
||||||
#undef HAVE_STRTOL
|
|
||||||
|
|
||||||
/* Define to 1 if the system has the type `struct addrinfo'. */
|
/* Define to 1 if the system has the type `struct addrinfo'. */
|
||||||
#undef HAVE_STRUCT_ADDRINFO
|
#undef HAVE_STRUCT_ADDRINFO
|
||||||
|
|
||||||
|
|
@ -310,6 +325,9 @@
|
||||||
/* Define to 1 if you have the <sys/param.h> header file. */
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||||
#undef HAVE_SYS_PARAM_H
|
#undef HAVE_SYS_PARAM_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||||
|
#undef HAVE_SYS_RESOURCE_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/socket.h> header file. */
|
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
#undef HAVE_SYS_SOCKET_H
|
#undef HAVE_SYS_SOCKET_H
|
||||||
|
|
||||||
|
|
@ -334,11 +352,14 @@
|
||||||
/* Define to 1 if you have the `unsetenv' function. */
|
/* Define to 1 if you have the `unsetenv' function. */
|
||||||
#undef HAVE_UNSETENV
|
#undef HAVE_UNSETENV
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `usleep' function. */
|
||||||
|
#undef HAVE_USLEEP
|
||||||
|
|
||||||
/* Define to 1 if you have the `vsyslog' function. */
|
/* Define to 1 if you have the `vsyslog' function. */
|
||||||
#undef HAVE_VSYSLOG
|
#undef HAVE_VSYSLOG
|
||||||
|
|
||||||
/* Define to 1 if you have the `writev' function. */
|
/* have zlib compression support */
|
||||||
#undef HAVE_WRITEV
|
#undef HAVE_ZLIB
|
||||||
|
|
||||||
/* Define to 1 if you have the <zlib.h> header file. */
|
/* Define to 1 if you have the <zlib.h> header file. */
|
||||||
#undef HAVE_ZLIB_H
|
#undef HAVE_ZLIB_H
|
||||||
|
|
@ -361,36 +382,55 @@
|
||||||
/* Define to the one symbol short name of this package. */
|
/* Define to the one symbol short name of this package. */
|
||||||
#undef PACKAGE_TARNAME
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
/* Define to the version of this package. */
|
||||||
#undef PACKAGE_VERSION
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||||
#undef RETSIGTYPE
|
#undef RETSIGTYPE
|
||||||
|
|
||||||
/* If using the C implementation of alloca, define if you know the
|
|
||||||
direction of stack growth for your system; otherwise it will be
|
|
||||||
automatically deduced at runtime.
|
|
||||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
|
||||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
|
||||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
|
||||||
#undef STACK_DIRECTION
|
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
#undef STDC_HEADERS
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
/* Enable extensions on AIX 3, Interix. */
|
||||||
#undef TIME_WITH_SYS_TIME
|
#ifndef _ALL_SOURCE
|
||||||
|
# undef _ALL_SOURCE
|
||||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
#endif
|
||||||
#undef TM_IN_SYS_TIME
|
|
||||||
|
|
||||||
/* Version number of package */
|
|
||||||
#undef VERSION
|
|
||||||
|
|
||||||
/* Enable GNU extensions on systems that have them. */
|
/* Enable GNU extensions on systems that have them. */
|
||||||
#ifndef _GNU_SOURCE
|
#ifndef _GNU_SOURCE
|
||||||
# undef _GNU_SOURCE
|
# undef _GNU_SOURCE
|
||||||
#endif
|
#endif
|
||||||
|
/* Enable threading extensions on Solaris. */
|
||||||
|
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||||
|
# undef _POSIX_PTHREAD_SEMANTICS
|
||||||
|
#endif
|
||||||
|
/* Enable extensions on HP NonStop. */
|
||||||
|
#ifndef _TANDEM_SOURCE
|
||||||
|
# undef _TANDEM_SOURCE
|
||||||
|
#endif
|
||||||
|
/* Enable general extensions on Solaris. */
|
||||||
|
#ifndef __EXTENSIONS__
|
||||||
|
# undef __EXTENSIONS__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#undef VERSION
|
||||||
|
|
||||||
|
/* Compile with support for Windows 2000 */
|
||||||
|
#undef WITH_WINDOWS2000
|
||||||
|
|
||||||
|
/* Define to 1 if on MINIX. */
|
||||||
|
#undef _MINIX
|
||||||
|
|
||||||
|
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||||
|
this defined. */
|
||||||
|
#undef _POSIX_1_SOURCE
|
||||||
|
|
||||||
|
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||||
|
#undef _POSIX_SOURCE
|
||||||
|
|
||||||
/* Enable BSD extensions */
|
/* Enable BSD extensions */
|
||||||
#undef __USE_BSD
|
#undef __USE_BSD
|
||||||
|
|
@ -398,21 +438,5 @@
|
||||||
/* Defined if the __malloc__ attribute is not supported. */
|
/* Defined if the __malloc__ attribute is not supported. */
|
||||||
#undef __malloc__
|
#undef __malloc__
|
||||||
|
|
||||||
/* Define to empty if `const' does not conform to ANSI C. */
|
|
||||||
#undef const
|
|
||||||
|
|
||||||
/* Define to rpl_malloc if the replacement function should be used. */
|
|
||||||
#undef malloc
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> does not define. */
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
#undef pid_t
|
#undef pid_t
|
||||||
|
|
||||||
/* Define to rpl_realloc if the replacement function should be used. */
|
|
||||||
#undef realloc
|
|
||||||
|
|
||||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
|
||||||
#undef size_t
|
|
||||||
|
|
||||||
/* Define to empty if the keyword `volatile' does not work. Warning: valid
|
|
||||||
code using `volatile' can become incorrect without. Disable with care. */
|
|
||||||
#undef volatile
|
|
||||||
|
|
|
||||||
548
config.rpath
548
config.rpath
|
|
@ -1,548 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
# Output a system dependent set of variables, describing how to set the
|
|
||||||
# run time search path of shared libraries in an executable.
|
|
||||||
#
|
|
||||||
# Copyright 1996-2003 Free Software Foundation, Inc.
|
|
||||||
# Taken from GNU libtool, 2001
|
|
||||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful, but
|
|
||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
#
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
|
||||||
# distribute this file as part of a program that contains a
|
|
||||||
# configuration script generated by Autoconf, you may include it under
|
|
||||||
# the same distribution terms that you use for the rest of that program.
|
|
||||||
#
|
|
||||||
# The first argument passed to this file is the canonical host specification,
|
|
||||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
|
||||||
# or
|
|
||||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
|
||||||
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
|
||||||
# should be set by the caller.
|
|
||||||
#
|
|
||||||
# The set of defined variables is at the end of this script.
|
|
||||||
|
|
||||||
# Known limitations:
|
|
||||||
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
|
|
||||||
# than 256 bytes, otherwise the compiler driver will dump core. The only
|
|
||||||
# known workaround is to choose shorter directory names for the build
|
|
||||||
# directory and/or the installation directory.
|
|
||||||
|
|
||||||
# All known linkers require a `.a' archive for static linking (except M$VC,
|
|
||||||
# which needs '.lib').
|
|
||||||
libext=a
|
|
||||||
shrext=.so
|
|
||||||
|
|
||||||
host="$1"
|
|
||||||
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
|
||||||
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
|
||||||
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
|
||||||
|
|
||||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
|
|
||||||
|
|
||||||
wl=
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
wl='-Wl,'
|
|
||||||
else
|
|
||||||
case "$host_os" in
|
|
||||||
aix*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
mingw* | pw32* | os2*)
|
|
||||||
;;
|
|
||||||
hpux9* | hpux10* | hpux11*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
irix5* | irix6* | nonstopux*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
newsos6)
|
|
||||||
;;
|
|
||||||
linux*)
|
|
||||||
case $CC in
|
|
||||||
icc|ecc)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
ccc)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
osf3* | osf4* | osf5*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
sco3.2v5*)
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
sunos4*)
|
|
||||||
wl='-Qoption ld '
|
|
||||||
;;
|
|
||||||
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
sysv4*MP*)
|
|
||||||
;;
|
|
||||||
uts4*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
|
|
||||||
|
|
||||||
hardcode_libdir_flag_spec=
|
|
||||||
hardcode_libdir_separator=
|
|
||||||
hardcode_direct=no
|
|
||||||
hardcode_minus_L=no
|
|
||||||
|
|
||||||
case "$host_os" in
|
|
||||||
cygwin* | mingw* | pw32*)
|
|
||||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
|
||||||
# When not using gcc, we currently assume that we are using
|
|
||||||
# Microsoft Visual C++.
|
|
||||||
if test "$GCC" != yes; then
|
|
||||||
with_gnu_ld=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
openbsd*)
|
|
||||||
with_gnu_ld=no
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
ld_shlibs=yes
|
|
||||||
if test "$with_gnu_ld" = yes; then
|
|
||||||
case "$host_os" in
|
|
||||||
aix3* | aix4* | aix5*)
|
|
||||||
# On AIX/PPC, the GNU linker is very broken
|
|
||||||
if test "$host_cpu" != ia64; then
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
amigaos*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
|
||||||
# that the semantics of dynamic libraries on AmigaOS, at least up
|
|
||||||
# to version 4, is to share data among multiple programs linked
|
|
||||||
# with the same dynamic library. Since this doesn't match the
|
|
||||||
# behavior of shared libraries on other platforms, we can use
|
|
||||||
# them.
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
beos*)
|
|
||||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
cygwin* | mingw* | pw32*)
|
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
|
||||||
# no search path for DLLs.
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
netbsd*)
|
|
||||||
;;
|
|
||||||
solaris* | sysv5*)
|
|
||||||
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
|
|
||||||
ld_shlibs=no
|
|
||||||
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
sunos4*)
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
if test "$ld_shlibs" = yes; then
|
|
||||||
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
|
||||||
# option of GNU ld is called -rpath, not --rpath.
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
case "$host_os" in
|
|
||||||
aix3*)
|
|
||||||
# Note: this linker hardcodes the directories in LIBPATH if there
|
|
||||||
# are no directories specified by -L.
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
# Neither direct hardcoding nor static linking is supported with a
|
|
||||||
# broken collect2.
|
|
||||||
hardcode_direct=unsupported
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
aix4* | aix5*)
|
|
||||||
if test "$host_cpu" = ia64; then
|
|
||||||
# On IA64, the linker does run time linking by default, so we don't
|
|
||||||
# have to do anything special.
|
|
||||||
aix_use_runtimelinking=no
|
|
||||||
else
|
|
||||||
aix_use_runtimelinking=no
|
|
||||||
# Test if we are trying to use run time linking or normal
|
|
||||||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
|
||||||
# need to do runtime linking.
|
|
||||||
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
|
|
||||||
for ld_flag in $LDFLAGS; do
|
|
||||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
|
||||||
aix_use_runtimelinking=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_libdir_separator=':'
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
case $host_os in aix4.[012]|aix4.[012].*)
|
|
||||||
collect2name=`${CC} -print-prog-name=collect2`
|
|
||||||
if test -f "$collect2name" && \
|
|
||||||
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
|
||||||
then
|
|
||||||
# We have reworked collect2
|
|
||||||
hardcode_direct=yes
|
|
||||||
else
|
|
||||||
# We have old collect2
|
|
||||||
hardcode_direct=unsupported
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_libdir_separator=
|
|
||||||
fi
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
# Begin _LT_AC_SYS_LIBPATH_AIX.
|
|
||||||
echo 'int main () { return 0; }' > conftest.c
|
|
||||||
${CC} ${LDFLAGS} conftest.c -o conftest
|
|
||||||
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
|
||||||
}'`
|
|
||||||
if test -z "$aix_libpath"; then
|
|
||||||
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
|
||||||
}'`
|
|
||||||
fi
|
|
||||||
if test -z "$aix_libpath"; then
|
|
||||||
aix_libpath="/usr/lib:/lib"
|
|
||||||
fi
|
|
||||||
rm -f conftest.c conftest
|
|
||||||
# End _LT_AC_SYS_LIBPATH_AIX.
|
|
||||||
if test "$aix_use_runtimelinking" = yes; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
|
||||||
else
|
|
||||||
if test "$host_cpu" = ia64; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
|
||||||
else
|
|
||||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
amigaos*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
# see comment about different semantics on the GNU ld section
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
bsdi4*)
|
|
||||||
;;
|
|
||||||
cygwin* | mingw* | pw32*)
|
|
||||||
# When not using gcc, we currently assume that we are using
|
|
||||||
# Microsoft Visual C++.
|
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
|
||||||
# no search path for DLLs.
|
|
||||||
hardcode_libdir_flag_spec=' '
|
|
||||||
libext=lib
|
|
||||||
;;
|
|
||||||
darwin* | rhapsody*)
|
|
||||||
if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
|
|
||||||
hardcode_direct=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
dgux*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
;;
|
|
||||||
freebsd1*)
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
freebsd2.2*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
freebsd2*)
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
freebsd*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
hpux9*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
hardcode_direct=yes
|
|
||||||
# hardcode_minus_L: Not really in the search PATH,
|
|
||||||
# but as the default location of the library.
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
hpux10* | hpux11*)
|
|
||||||
if test "$with_gnu_ld" = no; then
|
|
||||||
case "$host_cpu" in
|
|
||||||
hppa*64*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
hardcode_direct=no
|
|
||||||
;;
|
|
||||||
ia64*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_direct=no
|
|
||||||
# hardcode_minus_L: Not really in the search PATH,
|
|
||||||
# but as the default location of the library.
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
hardcode_direct=yes
|
|
||||||
# hardcode_minus_L: Not really in the search PATH,
|
|
||||||
# but as the default location of the library.
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
irix5* | irix6* | nonstopux*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
;;
|
|
||||||
netbsd*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
newsos6)
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
;;
|
|
||||||
openbsd*)
|
|
||||||
hardcode_direct=yes
|
|
||||||
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
|
||||||
else
|
|
||||||
case "$host_os" in
|
|
||||||
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
os2*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
osf3*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
;;
|
|
||||||
osf4* | osf5*)
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
else
|
|
||||||
# Both cc and cxx compiler support -rpath directly
|
|
||||||
hardcode_libdir_flag_spec='-rpath $libdir'
|
|
||||||
fi
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
;;
|
|
||||||
sco3.2v5*)
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
;;
|
|
||||||
sunos4*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
sysv4)
|
|
||||||
case $host_vendor in
|
|
||||||
sni)
|
|
||||||
hardcode_direct=yes # is this really true???
|
|
||||||
;;
|
|
||||||
siemens)
|
|
||||||
hardcode_direct=no
|
|
||||||
;;
|
|
||||||
motorola)
|
|
||||||
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
sysv4.3*)
|
|
||||||
;;
|
|
||||||
sysv4*MP*)
|
|
||||||
if test -d /usr/nec; then
|
|
||||||
ld_shlibs=yes
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
sysv4.2uw2*)
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_minus_L=no
|
|
||||||
;;
|
|
||||||
sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
|
|
||||||
;;
|
|
||||||
sysv5*)
|
|
||||||
hardcode_libdir_flag_spec=
|
|
||||||
;;
|
|
||||||
uts4*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check dynamic linker characteristics
|
|
||||||
# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
|
|
||||||
libname_spec='lib$name'
|
|
||||||
case "$host_os" in
|
|
||||||
aix3*)
|
|
||||||
;;
|
|
||||||
aix4* | aix5*)
|
|
||||||
;;
|
|
||||||
amigaos*)
|
|
||||||
;;
|
|
||||||
beos*)
|
|
||||||
;;
|
|
||||||
bsdi4*)
|
|
||||||
;;
|
|
||||||
cygwin* | mingw* | pw32*)
|
|
||||||
shrext=.dll
|
|
||||||
;;
|
|
||||||
darwin* | rhapsody*)
|
|
||||||
shrext=.dylib
|
|
||||||
;;
|
|
||||||
dgux*)
|
|
||||||
;;
|
|
||||||
freebsd1*)
|
|
||||||
;;
|
|
||||||
freebsd*)
|
|
||||||
;;
|
|
||||||
gnu*)
|
|
||||||
;;
|
|
||||||
hpux9* | hpux10* | hpux11*)
|
|
||||||
case "$host_cpu" in
|
|
||||||
ia64*)
|
|
||||||
shrext=.so
|
|
||||||
;;
|
|
||||||
hppa*64*)
|
|
||||||
shrext=.sl
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
shrext=.sl
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
irix5* | irix6* | nonstopux*)
|
|
||||||
case "$host_os" in
|
|
||||||
irix5* | nonstopux*)
|
|
||||||
libsuff= shlibsuff=
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
case $LD in
|
|
||||||
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
|
|
||||||
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
|
|
||||||
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
|
|
||||||
*) libsuff= shlibsuff= ;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
linux*oldld* | linux*aout* | linux*coff*)
|
|
||||||
;;
|
|
||||||
linux*)
|
|
||||||
;;
|
|
||||||
netbsd*)
|
|
||||||
;;
|
|
||||||
newsos6)
|
|
||||||
;;
|
|
||||||
nto-qnx)
|
|
||||||
;;
|
|
||||||
openbsd*)
|
|
||||||
;;
|
|
||||||
os2*)
|
|
||||||
libname_spec='$name'
|
|
||||||
shrext=.dll
|
|
||||||
;;
|
|
||||||
osf3* | osf4* | osf5*)
|
|
||||||
;;
|
|
||||||
sco3.2v5*)
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
;;
|
|
||||||
sunos4*)
|
|
||||||
;;
|
|
||||||
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
|
||||||
;;
|
|
||||||
sysv4*MP*)
|
|
||||||
;;
|
|
||||||
uts4*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
|
||||||
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
|
||||||
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
|
|
||||||
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
|
||||||
|
|
||||||
sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
|
||||||
|
|
||||||
# How to pass a linker flag through the compiler.
|
|
||||||
wl="$escaped_wl"
|
|
||||||
|
|
||||||
# Static library suffix (normally "a").
|
|
||||||
libext="$libext"
|
|
||||||
|
|
||||||
# Shared library suffix (normally "so").
|
|
||||||
shlibext="$shlibext"
|
|
||||||
|
|
||||||
# Flag to hardcode \$libdir into a binary during linking.
|
|
||||||
# This must work even if \$libdir does not exist.
|
|
||||||
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
|
||||||
|
|
||||||
# Whether we need a single -rpath flag with a separated argument.
|
|
||||||
hardcode_libdir_separator="$hardcode_libdir_separator"
|
|
||||||
|
|
||||||
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
|
||||||
# resulting binary.
|
|
||||||
hardcode_direct="$hardcode_direct"
|
|
||||||
|
|
||||||
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
|
||||||
# resulting binary.
|
|
||||||
hardcode_minus_L="$hardcode_minus_L"
|
|
||||||
|
|
||||||
EOF
|
|
||||||
603
config.sub
vendored
603
config.sub
vendored
File diff suppressed because it is too large
Load diff
247
configure.ac
Normal file
247
configure.ac
Normal file
|
|
@ -0,0 +1,247 @@
|
||||||
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
AC_PREREQ(2.61)
|
||||||
|
AC_INIT([tinc], [1.0.36])
|
||||||
|
AC_CONFIG_SRCDIR([src/tincd.c])
|
||||||
|
AM_INIT_AUTOMAKE([1.11 check-news std-options subdir-objects nostdinc silent-rules -Wall])
|
||||||
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
AM_SILENT_RULES([yes])
|
||||||
|
|
||||||
|
# Enable GNU extensions.
|
||||||
|
# Define this here, not in acconfig's @TOP@ section, since definitions
|
||||||
|
# in the latter don't make it into the configure-time tests.
|
||||||
|
AC_GNU_SOURCE
|
||||||
|
AC_DEFINE([__USE_BSD], 1, [Enable BSD extensions])
|
||||||
|
|
||||||
|
dnl Checks for programs.
|
||||||
|
AC_PROG_CC_C99
|
||||||
|
AC_PROG_CPP
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
AM_PROG_CC_C_O
|
||||||
|
|
||||||
|
dnl Check and set OS
|
||||||
|
|
||||||
|
AC_CANONICAL_HOST
|
||||||
|
|
||||||
|
case $host_os in
|
||||||
|
*linux*)
|
||||||
|
linux=true
|
||||||
|
AC_DEFINE(HAVE_LINUX, 1, [Linux])
|
||||||
|
;;
|
||||||
|
*freebsd*)
|
||||||
|
bsd=true
|
||||||
|
AC_DEFINE(HAVE_FREEBSD, 1, [FreeBSD])
|
||||||
|
;;
|
||||||
|
*darwin*)
|
||||||
|
bsd=true
|
||||||
|
AC_DEFINE(HAVE_DARWIN, 1, [Darwin (MacOS/X)])
|
||||||
|
;;
|
||||||
|
*solaris*)
|
||||||
|
solaris=true
|
||||||
|
AC_DEFINE(HAVE_SOLARIS, 1, [Solaris/SunOS])
|
||||||
|
;;
|
||||||
|
*openbsd*)
|
||||||
|
bsd=true
|
||||||
|
AC_DEFINE(HAVE_OPENBSD, 1, [OpenBSD])
|
||||||
|
;;
|
||||||
|
*netbsd*)
|
||||||
|
bsd=true
|
||||||
|
AC_DEFINE(HAVE_NETBSD, 1, [NetBSD])
|
||||||
|
;;
|
||||||
|
*dragonfly*)
|
||||||
|
bsd=true
|
||||||
|
AC_DEFINE(HAVE_DRAGONFLY, 1, [DragonFly])
|
||||||
|
;;
|
||||||
|
*bsd*)
|
||||||
|
bsd=true
|
||||||
|
AC_MSG_WARN("Unknown BSD variant, tinc might not compile or work!")
|
||||||
|
AC_DEFINE(HAVE_BSD, 1, [Unknown BSD variant])
|
||||||
|
;;
|
||||||
|
*cygwin*)
|
||||||
|
cygwin=true
|
||||||
|
AC_DEFINE(HAVE_CYGWIN, 1, [Cygwin])
|
||||||
|
;;
|
||||||
|
*mingw*)
|
||||||
|
mingw=true
|
||||||
|
AC_DEFINE(HAVE_MINGW, 1, [MinGW])
|
||||||
|
LIBS="$LIBS -lws2_32 -lgdi32 -lcrypt32"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AC_MSG_ERROR("Unknown operating system.")
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(uml,
|
||||||
|
AS_HELP_STRING([--enable-uml], [enable support for User Mode Linux]),
|
||||||
|
[ AS_IF([test "x$enable_uml" = "xyes"],
|
||||||
|
[ AC_DEFINE(ENABLE_UML, 1, [Support for UML])
|
||||||
|
uml=true
|
||||||
|
],
|
||||||
|
[uml=false])
|
||||||
|
],
|
||||||
|
[uml=false]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(vde,
|
||||||
|
AS_HELP_STRING([--enable-vde], [enable support for Virtual Distributed Ethernet]),
|
||||||
|
[ AS_IF([test "x$enable_vde" = "xyes"],
|
||||||
|
[ AC_CHECK_HEADERS(libvdeplug_dyn.h, [], [AC_MSG_ERROR([VDE plug header files not found.]); break])
|
||||||
|
AC_DEFINE(ENABLE_VDE, 1, [Support for VDE])
|
||||||
|
vde=true
|
||||||
|
],
|
||||||
|
[vde=false])
|
||||||
|
],
|
||||||
|
[vde=false]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(tunemu,
|
||||||
|
AS_HELP_STRING([--enable-tunemu], [enable support for the tunemu driver]),
|
||||||
|
[ AS_IF([test "x$enable_tunemu" = "xyes"],
|
||||||
|
[ AC_DEFINE(ENABLE_TUNEMU, 1, [Support for tunemu])
|
||||||
|
tunemu=true
|
||||||
|
],
|
||||||
|
[tunemu=false])
|
||||||
|
],
|
||||||
|
[tunemu=false]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_WITH(windows2000,
|
||||||
|
AS_HELP_STRING([--with-windows2000], [compile with support for Windows 2000. This disables support for tunneling over existing IPv6 networks.]),
|
||||||
|
[ AS_IF([test "x$with_windows2000" = "xyes"],
|
||||||
|
[AC_DEFINE(WITH_WINDOWS2000, 1, [Compile with support for Windows 2000])])
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_WITH(systemd,
|
||||||
|
AS_HELP_STRING([--with-systemd@<:@=DIR@:>@], [install systemd service files @<:@to DIR if specified@:>@]),
|
||||||
|
[ systemd=true; systemd_path="$with_systemd" ],
|
||||||
|
[ systemd=false ]
|
||||||
|
)
|
||||||
|
|
||||||
|
AS_IF([test "x$with_systemd" = "xyes"], [systemd_path="\${libdir}/systemd/system"],
|
||||||
|
[AS_IF([test "x$with_systemd" = "xno"], [systemd=false])])
|
||||||
|
|
||||||
|
AC_SUBST(systemd_path, $systemd_path)
|
||||||
|
|
||||||
|
AM_CONDITIONAL(LINUX, test "$linux" = true)
|
||||||
|
AM_CONDITIONAL(BSD, test "$bsd" = true)
|
||||||
|
AM_CONDITIONAL(SOLARIS, test "$solaris" = true)
|
||||||
|
AM_CONDITIONAL(MINGW, test "$mingw" = true)
|
||||||
|
AM_CONDITIONAL(CYGWIN, test "$cygwin" = true)
|
||||||
|
AM_CONDITIONAL(UML, test "$uml" = true)
|
||||||
|
AM_CONDITIONAL(VDE, test "$vde" = true)
|
||||||
|
AM_CONDITIONAL(TUNEMU, test "$tunemu" = true)
|
||||||
|
AM_CONDITIONAL(WITH_SYSTEMD, test "$systemd" = true)
|
||||||
|
|
||||||
|
AC_CACHE_SAVE
|
||||||
|
|
||||||
|
if test -d /sw/include ; then
|
||||||
|
CPPFLAGS="$CPPFLAGS -I/sw/include"
|
||||||
|
fi
|
||||||
|
if test -d /sw/lib ; then
|
||||||
|
LIBS="$LIBS -L/sw/lib"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Compiler hardening flags
|
||||||
|
dnl No -fstack-protector-all because it doesn't work on all platforms or architectures.
|
||||||
|
|
||||||
|
AX_CFLAGS_WARN_ALL(CFLAGS)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([hardening], AS_HELP_STRING([--disable-hardening], [disable compiler and linker hardening flags]))
|
||||||
|
AS_IF([test "x$enable_hardening" != "xno"],
|
||||||
|
[AX_CHECK_COMPILE_FLAG([-DFORTIFY_SOURCE=2], [CPPFLAGS="$CPPFLAGS -DFORTIFY_SOURCE=2"])
|
||||||
|
AX_CHECK_COMPILE_FLAG([-fwrapv], [CPPFLAGS="$CPPFLAGS -fwrapv"],
|
||||||
|
AX_CHECK_COMPILE_FLAG([-fno-strict-overflow], [CPPFLAGS="$CPPFLAGS -fno-strict-overflow"]))
|
||||||
|
case $host_os in
|
||||||
|
*mingw*)
|
||||||
|
AX_CHECK_LINK_FLAG([-Wl,--dynamicbase], [LDFLAGS="$LDFLAGS -Wl,--dynamicbase"])
|
||||||
|
AX_CHECK_LINK_FLAG([-Wl,--nxcompat], [LDFLAGS="$LDFLAGS -Wl,--nxcompat"])
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AX_CHECK_COMPILE_FLAG([-fPIE], [CPPFLAGS="$CPPFLAGS -fPIE"])
|
||||||
|
AX_CHECK_LINK_FLAG([-pie], [LDFLAGS="$LDFLAGS -pie"])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS="$LDFLAGS -Wl,-z,relro"])
|
||||||
|
AX_CHECK_LINK_FLAG([-Wl,-z,now], [LDFLAGS="$LDFLAGS -Wl,-z,now"])
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
dnl Checks for libraries.
|
||||||
|
|
||||||
|
dnl Checks for header files.
|
||||||
|
dnl We do this in multiple stages, because unlike Linux all the other operating systems really suck and don't include their own dependencies.
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS([syslog.h sys/file.h sys/ioctl.h sys/mman.h sys/param.h sys/resource.h sys/socket.h sys/time.h sys/uio.h sys/wait.h netdb.h arpa/inet.h arpa/nameser.h dirent.h getopt.h])
|
||||||
|
AC_CHECK_HEADERS([net/if.h net/if_types.h linux/if_tun.h net/if_tun.h net/if_utun.h net/tun/if_tun.h net/if_tap.h net/tap/if_tap.h net/ethernet.h net/if_arp.h netinet/in_systm.h netinet/in.h netinet/in6.h netpacket/packet.h],
|
||||||
|
[], [], [#include "$srcdir/src/have.h"]
|
||||||
|
)
|
||||||
|
AC_CHECK_HEADERS([netinet/if_ether.h netinet/ip.h netinet/ip6.h resolv.h],
|
||||||
|
[], [], [#include "$srcdir/src/have.h"]
|
||||||
|
)
|
||||||
|
AC_CHECK_HEADERS([netinet/tcp.h netinet/ip_icmp.h netinet/icmp6.h],
|
||||||
|
[], [], [#include "$srcdir/src/have.h"]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||||
|
AC_TYPE_PID_T
|
||||||
|
|
||||||
|
tinc_ATTRIBUTE(__malloc__)
|
||||||
|
|
||||||
|
AC_CHECK_TYPES([socklen_t, struct ether_header, struct arphdr, struct ether_arp, struct in_addr, struct addrinfo, struct ip, struct icmp, struct in6_addr, struct sockaddr_in6, struct ip6_hdr, struct icmp6_hdr, struct nd_neighbor_solicit, struct nd_opt_hdr], , ,
|
||||||
|
[#include "$srcdir/src/have.h"]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl Checks for library functions.
|
||||||
|
AC_TYPE_SIGNAL
|
||||||
|
AC_CHECK_FUNCS([asprintf daemon fchmod flock fork gettimeofday mlockall pselect putenv strsignal system unsetenv usleep vsyslog devname fdevname],
|
||||||
|
[], [], [#include "$srcdir/src/have.h"]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_CHECK_FUNC(getopt_long, [getopt=true; AC_DEFINE(HAVE_GETOPT_LONG, 1, [getopt_long()])], [getopt=false])
|
||||||
|
AM_CONDITIONAL(GETOPT, test "$getopt" = true)
|
||||||
|
|
||||||
|
dnl Support for SunOS
|
||||||
|
|
||||||
|
AC_CHECK_FUNC(socket, [], [
|
||||||
|
AC_CHECK_LIB(socket, connect)
|
||||||
|
])
|
||||||
|
AC_CHECK_FUNC(gethostbyname, [], [
|
||||||
|
AC_CHECK_LIB(nsl, gethostbyname)
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_CHECK_DECLS([freeaddrinfo, gai_strerror, getaddrinfo, getnameinfo],
|
||||||
|
[], [], [#include "$srcdir/src/have.h"]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_CHECK_DECLS([res_init], [AC_CHECK_LIB(resolv, res_init)], [], [
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <resolv.h>
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_CACHE_SAVE
|
||||||
|
|
||||||
|
dnl These are defined in files in m4/
|
||||||
|
|
||||||
|
tinc_ZLIB
|
||||||
|
tinc_LZO
|
||||||
|
tinc_OPENSSL
|
||||||
|
|
||||||
|
dnl Check if support for jumbograms is requested
|
||||||
|
AC_ARG_ENABLE(jumbograms,
|
||||||
|
AS_HELP_STRING([--enable-jumbograms], [enable support for jumbograms (packets up to 9000 bytes)]),
|
||||||
|
[ AS_IF([test "x$enable_jumbograms" = "xyes"],
|
||||||
|
[ AC_DEFINE(ENABLE_JUMBOGRAMS, 1, [Support for jumbograms (packets up to 9000 bytes)]) ])
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl Ensure runstatedir is set if we are using a version of autoconf that does not support it
|
||||||
|
if test "x$runstatedir" = "x"; then
|
||||||
|
AC_SUBST([runstatedir], ['${localstatedir}/run'])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile systemd/Makefile])
|
||||||
|
|
||||||
|
AC_OUTPUT
|
||||||
165
configure.in
165
configure.in
|
|
@ -1,165 +0,0 @@
|
||||||
dnl Process this file with autoconf to produce a configure script.
|
|
||||||
|
|
||||||
dnl $Id: configure.in 1488 2006-12-16 16:53:58Z guus $
|
|
||||||
|
|
||||||
AC_PREREQ(2.61)
|
|
||||||
AC_INIT
|
|
||||||
AC_CONFIG_SRCDIR([src/tincd.c])
|
|
||||||
AM_INIT_AUTOMAKE(tinc, 1.0.9)
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
|
||||||
AM_MAINTAINER_MODE
|
|
||||||
|
|
||||||
AM_GNU_GETTEXT([external])
|
|
||||||
AM_GNU_GETTEXT_VERSION(0.14.1)
|
|
||||||
|
|
||||||
# Enable GNU extensions.
|
|
||||||
# Define this here, not in acconfig's @TOP@ section, since definitions
|
|
||||||
# in the latter don't make it into the configure-time tests.
|
|
||||||
AC_GNU_SOURCE
|
|
||||||
AC_DEFINE([__USE_BSD], 1, [Enable BSD extensions])
|
|
||||||
|
|
||||||
ALL_LINGUAS="nl"
|
|
||||||
|
|
||||||
dnl Checks for programs.
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_CPP
|
|
||||||
AC_PROG_INSTALL
|
|
||||||
AC_PROG_LN_S
|
|
||||||
AC_PROG_RANLIB
|
|
||||||
|
|
||||||
dnl Check and set OS
|
|
||||||
|
|
||||||
#AC_CANONICAL_HOST
|
|
||||||
|
|
||||||
case $host_os in
|
|
||||||
*linux*)
|
|
||||||
AC_DEFINE(HAVE_LINUX, 1, [Linux])
|
|
||||||
[ rm -f src/device.c; ln -sf linux/device.c src/device.c ]
|
|
||||||
;;
|
|
||||||
*freebsd*)
|
|
||||||
AC_DEFINE(HAVE_FREEBSD, 1, [FreeBSD])
|
|
||||||
[ rm -f src/device.c; ln -sf bsd/device.c src/device.c ]
|
|
||||||
;;
|
|
||||||
*darwin*)
|
|
||||||
AC_DEFINE(HAVE_DARWIN, 1, [Darwin (MacOS/X)])
|
|
||||||
[ rm -f src/device.c; ln -sf bsd/device.c src/device.c ]
|
|
||||||
;;
|
|
||||||
*solaris*)
|
|
||||||
AC_DEFINE(HAVE_SOLARIS, 1, [Solaris/SunOS])
|
|
||||||
[ rm -f src/device.c; ln -sf solaris/device.c src/device.c ]
|
|
||||||
;;
|
|
||||||
*openbsd*)
|
|
||||||
AC_DEFINE(HAVE_OPENBSD, 1, [OpenBSD])
|
|
||||||
[ rm -f src/device.c; ln -sf bsd/device.c src/device.c ]
|
|
||||||
;;
|
|
||||||
*netbsd*)
|
|
||||||
AC_DEFINE(HAVE_NETBSD, 1, [NetBSD])
|
|
||||||
[ rm -f src/device.c; ln -sf bsd/device.c src/device.c ]
|
|
||||||
;;
|
|
||||||
*bsd*)
|
|
||||||
AC_MSG_WARN("Unknown BSD variant, tinc might not compile or work!")
|
|
||||||
AC_DEFINE(HAVE_BSD, 1, [Unknown BSD variant])
|
|
||||||
[ rm -f src/device.c; ln -sf bsd/device.c src/device.c ]
|
|
||||||
;;
|
|
||||||
*cygwin*)
|
|
||||||
AC_DEFINE(HAVE_CYGWIN, 1, [Cygwin])
|
|
||||||
[ rm -f src/device.c; ln -sf cygwin/device.c src/device.c ]
|
|
||||||
;;
|
|
||||||
*mingw*)
|
|
||||||
AC_DEFINE(HAVE_MINGW, 1, [MinGW])
|
|
||||||
[ rm -f src/device.c; cp -f src/mingw/device.c src/device.c ]
|
|
||||||
LIBS="$LIBS -lws2_32"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_ERROR("Unknown operating system.")
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AC_CACHE_SAVE
|
|
||||||
|
|
||||||
if test -d /sw/include ; then
|
|
||||||
CPPFLAGS="$CPPFLAGS -I/sw/include"
|
|
||||||
fi
|
|
||||||
if test -d /sw/lib ; then
|
|
||||||
LIBS="$LIBS -L/sw/lib"
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Checks for libraries.
|
|
||||||
|
|
||||||
dnl Checks for header files.
|
|
||||||
dnl We do this in multiple stages, because unlike Linux all the other operating systems really suck and don't include their own dependencies.
|
|
||||||
|
|
||||||
AC_HEADER_STDC
|
|
||||||
AC_CHECK_HEADERS([stdbool.h syslog.h sys/file.h sys/ioctl.h sys/mman.h sys/param.h sys/socket.h sys/time.h sys/uio.h sys/wait.h netdb.h arpa/inet.h])
|
|
||||||
AC_CHECK_HEADERS([net/if.h net/if_types.h linux/if_tun.h net/if_tun.h net/if_tap.h net/ethernet.h net/if_arp.h netinet/in_systm.h netinet/in.h netinet/in6.h],
|
|
||||||
[], [], [#include "have.h"]
|
|
||||||
)
|
|
||||||
AC_CHECK_HEADERS([netinet/if_ether.h netinet/ip.h netinet/ip6.h],
|
|
||||||
[], [], [#include "have.h"]
|
|
||||||
)
|
|
||||||
AC_CHECK_HEADERS([netinet/tcp.h netinet/ip_icmp.h netinet/icmp6.h],
|
|
||||||
[], [], [#include "have.h"]
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
AC_C_CONST
|
|
||||||
AC_C_VOLATILE
|
|
||||||
AC_TYPE_PID_T
|
|
||||||
AC_TYPE_SIZE_T
|
|
||||||
AC_HEADER_TIME
|
|
||||||
AC_STRUCT_TM
|
|
||||||
|
|
||||||
tinc_ATTRIBUTE(__malloc__)
|
|
||||||
|
|
||||||
AC_CHECK_TYPES([socklen_t, struct ether_header, struct arphdr, struct ether_arp, struct in_addr, struct addrinfo, struct ip, struct icmp, struct in6_addr, struct sockaddr_in6, struct ip6_hdr, struct icmp6_hdr, struct nd_neighbor_solicit, struct nd_opt_hdr], , ,
|
|
||||||
[#include "have.h"]
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl Checks for library functions.
|
|
||||||
AC_FUNC_MEMCMP
|
|
||||||
AC_FUNC_ALLOCA
|
|
||||||
AC_TYPE_SIGNAL
|
|
||||||
AC_CHECK_FUNCS([asprintf daemon fchmod flock ftime fork get_current_dir_name gettimeofday mlockall putenv random select strdup strerror strsignal strtol system unsetenv vsyslog writev],
|
|
||||||
[], [], [#include "have.h"]
|
|
||||||
)
|
|
||||||
AC_FUNC_MALLOC
|
|
||||||
AC_FUNC_REALLOC
|
|
||||||
|
|
||||||
dnl Support for SunOS
|
|
||||||
|
|
||||||
AC_CHECK_FUNC(socket, [], [
|
|
||||||
AC_CHECK_LIB(socket, connect)
|
|
||||||
])
|
|
||||||
AC_CHECK_FUNC(gethostbyname, [], [
|
|
||||||
AC_CHECK_LIB(nsl, gethostbyname)
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS([freeaddrinfo gai_strerror getaddrinfo getnameinfo inet_aton],
|
|
||||||
[], [], [#include "have.h"]
|
|
||||||
)
|
|
||||||
|
|
||||||
AC_CACHE_SAVE
|
|
||||||
|
|
||||||
dnl These are defined in files in m4/
|
|
||||||
|
|
||||||
tinc_OPENSSL
|
|
||||||
tinc_ZLIB
|
|
||||||
tinc_LZO
|
|
||||||
|
|
||||||
dnl Check if support for jumbograms is requested
|
|
||||||
AC_ARG_ENABLE(jumbograms,
|
|
||||||
AS_HELP_STRING([--enable-jumbograms], [enable support for jumbograms (packets up to 9000 bytes)]),
|
|
||||||
[ AC_DEFINE(ENABLE_JUMBOGRAMS, 1, [Support for jumbograms (packets up to 9000 bytes)]) ]
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl Check if checkpoint tracing has to be enabled
|
|
||||||
AC_ARG_ENABLE(tracing,
|
|
||||||
AS_HELP_STRING([--enable-tracing], [enable checkpoint tracing (debugging only)]),
|
|
||||||
[ AC_DEFINE(ENABLE_TRACING, 1, [Checkpoint tracing]) ]
|
|
||||||
)
|
|
||||||
|
|
||||||
AC_SUBST(INCLUDES)
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile lib/Makefile po/Makefile.in m4/Makefile])
|
|
||||||
|
|
||||||
AC_OUTPUT
|
|
||||||
14
debian/NEWS
vendored
Normal file
14
debian/NEWS
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
tinc (1.0.27-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
This package now provides native systemd service files, allowing multiple
|
||||||
|
instances of tinc to be managed. Existing networks listed in
|
||||||
|
/etc/tinc/nets.boot will be converted to service instances once during this
|
||||||
|
upgrade. Afterwards, you can enable and disable networks using:
|
||||||
|
|
||||||
|
systemctl enable tinc@<netname>
|
||||||
|
systemctl disable tinc@<netname>
|
||||||
|
|
||||||
|
If you do not have systemd installed, the SysV init script will continue to
|
||||||
|
work as usual. For more information, see README.Debian.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 10 Apr 2016 01:33:55 +0200
|
||||||
78
debian/README.Debian
vendored
78
debian/README.Debian
vendored
|
|
@ -1,10 +1,80 @@
|
||||||
tinc for Debian
|
tinc for Debian
|
||||||
----------------------
|
---------------
|
||||||
|
|
||||||
The manual for tinc is also available as info pages, type `info tinc'
|
The manual for tinc is also available as info pages, type `info tinc'
|
||||||
to read it.
|
to read it.
|
||||||
|
|
||||||
The system startup script for tinc, /etc/init.d/tinc, uses the file
|
There are several ways in which tinc may be automatically started at boot:
|
||||||
/etc/tinc/nets.boot to find out which networks have to be started.
|
|
||||||
|
|
||||||
-- Ivo Timmermans <ivo@debian.org>, Wed, 31 May 2000, 19:56:05 +0200
|
Systemd
|
||||||
|
-------
|
||||||
|
|
||||||
|
Since 1.0.27-1, the tinc package comes with native systemd service files.
|
||||||
|
To enable and start a net, call:
|
||||||
|
|
||||||
|
systemctl enable tinc@<netname>
|
||||||
|
systemctl start tinc@<netname>
|
||||||
|
|
||||||
|
This will cause a tincd to be started which uses the configuration from
|
||||||
|
/etc/tinc/<netname>, and also makes sure that it will be started next time your
|
||||||
|
system boots.
|
||||||
|
|
||||||
|
Apart from controlling individual instances, you can also start/stop/reload all
|
||||||
|
enabled instances simultaneously by omitting @<netname>, for example:
|
||||||
|
|
||||||
|
systemctl reload tinc
|
||||||
|
|
||||||
|
Note that when you have systemd installed on your system, the file
|
||||||
|
/etc/tinc/nets.boot will not be used anymore to automatically start tinc
|
||||||
|
daemons. If the variable EXTRA is defined in /etc/default/tinc, it will be
|
||||||
|
passed on to tinc. The variable LIMITS is however not used.
|
||||||
|
|
||||||
|
The service files that come with this package start tinc unconditionally.
|
||||||
|
However, tinc does support socket activation. If you wish to write a socket
|
||||||
|
unit for tinc, use the ListenStream option to specify on which port(s) and
|
||||||
|
address(es) tinc should listen.
|
||||||
|
|
||||||
|
SysVinit
|
||||||
|
--------
|
||||||
|
|
||||||
|
The system startup script for tinc, /etc/init.d/tinc, uses the file
|
||||||
|
/etc/tinc/nets.boot to find out which networks have to be started. Use one
|
||||||
|
netname per line. Lines starting with a # are ignored.
|
||||||
|
|
||||||
|
/etc/network/interfaces
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
You can create a stanza in /etc/network/interfaces, and add a line with
|
||||||
|
"tinc-net <netname>". This will cause a tincd to be started which uses the
|
||||||
|
configuration from /etc/tinc/<netname>. You can use an inet static (with
|
||||||
|
address and netmask options) or inet dhcp stanza, in which case the ifup will
|
||||||
|
configure the VPN interface and you do not need to have a tinc-up script.
|
||||||
|
|
||||||
|
The following options are also recognized and map directly to the corresponding
|
||||||
|
command line options for tincd:
|
||||||
|
|
||||||
|
tinc-config <directory>
|
||||||
|
tinc-debug <level>
|
||||||
|
tinc-mlock yes
|
||||||
|
tinc-logfile <filename>
|
||||||
|
tinc-pidfile <filename>
|
||||||
|
tinc-chroot yes
|
||||||
|
tinc-user <username>
|
||||||
|
|
||||||
|
An example stanza:
|
||||||
|
|
||||||
|
iface vpn inet static
|
||||||
|
address 192.168.2.42
|
||||||
|
netmask 255.255.0.0
|
||||||
|
tinc-net myvpn
|
||||||
|
tinc-debug 1
|
||||||
|
tinc-mlock yes
|
||||||
|
tinc-user nobody
|
||||||
|
tinc-pidfile /tmp/tinc.pid
|
||||||
|
|
||||||
|
This will start a tinc daemon that reads its configuration from
|
||||||
|
/etc/tinc/myvpn, logs at debug level 1, locks itself in RAM, runs as user
|
||||||
|
nobody, and creates a network interface called "vpn". Ifup then sets the
|
||||||
|
address and netmask on that interface.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org>, Sun, 10 April 2016, 01:38:08 +0200
|
||||||
|
|
|
||||||
285
debian/changelog
vendored
285
debian/changelog
vendored
|
|
@ -1,3 +1,288 @@
|
||||||
|
tinc (1.0.36-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Disable support for libvdeplug. Closes: #973233
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 22 Nov 2020 10:40:27 +0100
|
||||||
|
|
||||||
|
tinc (1.0.36-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 1.0.36
|
||||||
|
* Add Vcs tags to debian/control.
|
||||||
|
* Bump Standards-Version.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Mon, 26 Aug 2019 14:17:21 +0200
|
||||||
|
|
||||||
|
tinc (1.0.35-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Bump Standards-Version and Build-Depend on debhelper-compat (= 12).
|
||||||
|
* Remove calls to dh_installinit and dh_systemd_start from debian/rules,
|
||||||
|
compat level 12 does the right thing by default.
|
||||||
|
* Ensure we clean up doc/tinc.info.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Mon, 28 Jan 2019 21:54:45 +0100
|
||||||
|
|
||||||
|
tinc (1.0.35-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
- Includes fixes for CVE-2018-16737, CVE-2018-16738, CVE-2018-16758.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Mon, 08 Oct 2018 16:09:06 +0200
|
||||||
|
|
||||||
|
tinc (1.0.34-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
[ Guus Sliepen ]
|
||||||
|
* New upstream release.
|
||||||
|
- Fixes a potential segmentation fault when connecting to an IPv6
|
||||||
|
peer via a proxy. Closes: #887401
|
||||||
|
* Add support for the $EXTRA variable in /etc/default/tinc when using
|
||||||
|
systemd. Closes: #887116
|
||||||
|
|
||||||
|
[ Benda Xu ]
|
||||||
|
* Prevent possible incorrect IPv6 checksums due to function inlining.
|
||||||
|
Closes: #891400
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Tue, 12 Jun 2018 23:00:49 +0200
|
||||||
|
|
||||||
|
tinc (1.0.33-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Test for /etc/default/tinc before trying to source it. Closes: #777262
|
||||||
|
* Use --runstatedir=/run.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sat, 04 Nov 2017 16:22:06 +0100
|
||||||
|
|
||||||
|
tinc (1.0.32-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Add a note to new nets.boot files that it is not used with systemd.
|
||||||
|
Closes: #841052
|
||||||
|
* In the post-down script, read the pid file only once. Closes: #832784
|
||||||
|
* Explicitly use /bin/sleep from coreutils. Closes: #772379
|
||||||
|
* Bump Standards-Version.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Tue, 05 Sep 2017 20:23:36 +0200
|
||||||
|
|
||||||
|
tinc (1.0.31-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump Standards-Version.
|
||||||
|
* Bump debian/compat.
|
||||||
|
* Add missing Depends: lsb-base.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 15 Jan 2017 16:20:40 +0100
|
||||||
|
|
||||||
|
tinc (1.0.29-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Rebuild with libssl-dev from unstable.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Thu, 27 Oct 2016 13:09:46 +0200
|
||||||
|
|
||||||
|
tinc (1.0.29-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump debian/compat.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Mon, 10 Oct 2016 22:30:25 +0200
|
||||||
|
|
||||||
|
tinc (1.0.28-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
- Fixes FTBFS on kfreebsd.
|
||||||
|
* Systemd service files are now provided by upstream.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 10 Apr 2016 15:44:28 +0200
|
||||||
|
|
||||||
|
tinc (1.0.27-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Fix tinc@.service.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 10 Apr 2016 12:45:33 +0200
|
||||||
|
|
||||||
|
tinc (1.0.27-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump Standards-Version.
|
||||||
|
* Add native systemd unit files.
|
||||||
|
* Automatically convert networks listed in nets.boot to systemd service
|
||||||
|
instances on upgrade.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 10 Apr 2016 01:39:16 +0200
|
||||||
|
|
||||||
|
tinc (1.0.26-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Use the contents, not the presence, of the pidfile to check that tincd is
|
||||||
|
shut down properly. Closes: #774682
|
||||||
|
* Bump Standards-Version.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 05 Jul 2015 17:23:08 +0200
|
||||||
|
|
||||||
|
tinc (1.0.24-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Improve the init script: stopping tinc now waits for the process to
|
||||||
|
terminate. If that doesn't happen in 5 seconds, it will send the TERM
|
||||||
|
signal again (which helps if tinc is waiting for a script to finish
|
||||||
|
executing). It now also detects whether the process mentioned in the PID
|
||||||
|
file is actually running, and if not it will exit early and without
|
||||||
|
warnings. Closes: #748107
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Wed, 14 May 2014 21:44:16 +0200
|
||||||
|
|
||||||
|
tinc (1.0.24-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
[ Guus Sliepen ]
|
||||||
|
* New upstream release
|
||||||
|
* Add a debian/watch file.
|
||||||
|
* Bump Standards-Version.
|
||||||
|
|
||||||
|
[ Gian Piero Carrubba ]
|
||||||
|
* Allow resource limits to be set in /etc/default/tinc.
|
||||||
|
Closes: #690685, #704702
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 11 May 2014 21:17:13 +0200
|
||||||
|
|
||||||
|
tinc (1.0.23-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Use if-statements instead of && in shell scripts. Closes: #731279
|
||||||
|
The && operator does not clear the error status, and if the next statement
|
||||||
|
in a shell script does not change the error status it would cause the
|
||||||
|
script to prematurely exit. Thanks to Peter Reinholdtsen for spotting it.
|
||||||
|
* Use absolute path to tincd in the if-post-down script.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Thu, 05 Dec 2013 09:41:13 +0000
|
||||||
|
|
||||||
|
tinc (1.0.23-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sat, 19 Oct 2013 21:06:05 +0200
|
||||||
|
|
||||||
|
tinc (1.0.22-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
- Handles whitespace between command line flags and optional arguments.
|
||||||
|
Closes: #710267
|
||||||
|
* Bump Standards-Version.
|
||||||
|
* Source /lib/lsb/init-functions in the init.d script.
|
||||||
|
* Don't use texi2html anymore, use automake's install-html target which uses
|
||||||
|
makeinfo.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Wed, 14 Aug 2013 15:34:29 +0200
|
||||||
|
|
||||||
|
tinc (1.0.21-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
- Includes fix for CVE-2013-1428.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 05 May 2013 10:42:33 +0200
|
||||||
|
|
||||||
|
tinc (1.0.19-3) unstable; urgency=high
|
||||||
|
|
||||||
|
* Drop packets forwarded via TCP if they are too big (CVE-2013-1428).
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Fri, 12 Apr 2013 22:52:10 +0200
|
||||||
|
|
||||||
|
tinc (1.0.19-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Fix behaviour of tinc-pidfile. Closes: #679130
|
||||||
|
* Enable parallel building in debian/rules.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Tue, 26 Jun 2012 18:28:34 +0200
|
||||||
|
|
||||||
|
tinc (1.0.19-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump debian/compat so tinc gets built with hardening flags.
|
||||||
|
* Allow tinc-pidfile in /etc/network/interfaces.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Mon, 25 Jun 2012 20:29:22 +0200
|
||||||
|
|
||||||
|
tinc (1.0.18-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 25 Mar 2012 18:52:15 +0200
|
||||||
|
|
||||||
|
tinc (1.0.17-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Enable support for UML and VDE.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sat, 10 Mar 2012 14:50:00 +0100
|
||||||
|
|
||||||
|
tinc (1.0.16-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Mention alarm option in /etc/init.d/tinc's usage information.
|
||||||
|
Closes: #631761
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sat, 23 Jul 2011 14:37:56 +0200
|
||||||
|
|
||||||
|
tinc (1.0.15-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Send SIGALRM to running tinc daemons whenever an interface is brought up
|
||||||
|
with the ifupdown framework. Based on a patch from Joachim Breitner.
|
||||||
|
Closes: #629880
|
||||||
|
* Allow tinc daemons to be started using ifupdown.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Fri, 24 Jun 2011 18:21:51 +0200
|
||||||
|
|
||||||
|
tinc (1.0.14-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump Standards-Version.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Mon, 09 May 2011 00:25:37 +0200
|
||||||
|
|
||||||
|
tinc (1.0.13-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Tue, 13 Apr 2010 12:06:36 +0200
|
||||||
|
|
||||||
|
tinc (1.0.12-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Remove debconf questions. Closes: #572116
|
||||||
|
Apparently debconf may not be used to ask a question at install time and
|
||||||
|
use the answer at upgrade time. Instead of kludging around this
|
||||||
|
restriction, no questions are asked anymore, and tinc will now always be
|
||||||
|
restarted when upgrading.
|
||||||
|
* Wait up to 5 seconds for tinc daemon to stop before restarting it.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Tue, 02 Mar 2010 14:01:36 +0100
|
||||||
|
|
||||||
|
tinc (1.0.12-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump Standards-Version.
|
||||||
|
* Migrate from CDBS to debhelper.
|
||||||
|
* Convert source package to 3.0 (quilt) format.
|
||||||
|
* Remove useless tinc.modules.
|
||||||
|
* Use init.d script from Michael Tokarev, allowing per-network arguments to
|
||||||
|
tincd.
|
||||||
|
* Remove update-rc.d calls from postinst and postrm.
|
||||||
|
* Let the init.d script depend on $remote_fs.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Thu, 04 Feb 2010 00:56:45 +0100
|
||||||
|
|
||||||
|
tinc (1.0.11-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Cope with texi2html arbitrarily changing its output directory.
|
||||||
|
Closes: #552927
|
||||||
|
* Do not stop tinc when configuring a new version, just restart after
|
||||||
|
the upgrade.
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 01 Nov 2009 20:37:16 +0100
|
||||||
|
|
||||||
|
tinc (1.0.10-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Include Russian debconf translation. Closes: #548759
|
||||||
|
|
||||||
|
-- Guus Sliepen <guus@debian.org> Sun, 18 Oct 2009 16:31:49 +0200
|
||||||
|
|
||||||
tinc (1.0.9-1) unstable; urgency=low
|
tinc (1.0.9-1) unstable; urgency=low
|
||||||
|
|
||||||
* New upstream release.
|
* New upstream release.
|
||||||
|
|
|
||||||
1
debian/compat
vendored
1
debian/compat
vendored
|
|
@ -1 +0,0 @@
|
||||||
4
|
|
||||||
9
debian/config
vendored
9
debian/config
vendored
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
# Source debconf library.
|
|
||||||
. /usr/share/debconf/confmodule
|
|
||||||
|
|
||||||
db_title tinc configuration
|
|
||||||
|
|
||||||
db_input medium tinc/restart_on_upgrade || true
|
|
||||||
db_go
|
|
||||||
10
debian/control
vendored
10
debian/control
vendored
|
|
@ -2,13 +2,17 @@ Source: tinc
|
||||||
Section: net
|
Section: net
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Guus Sliepen <guus@debian.org>
|
Maintainer: Guus Sliepen <guus@debian.org>
|
||||||
Standards-Version: 3.8.0
|
Standards-Version: 4.4.0
|
||||||
Build-Depends: libssl-dev, debhelper (>= 4.1.16), gettext, texi2html, texinfo, zlib1g-dev, cdbs, liblzo2-dev
|
Build-Depends: libssl-dev, debhelper-compat (= 12), gettext, texinfo, zlib1g-dev, liblzo2-dev
|
||||||
Homepage: http://www.tinc-vpn.org/
|
Homepage: http://www.tinc-vpn.org/
|
||||||
|
Vcs-Browser: https://salsa.debian.org/guus/tinc
|
||||||
|
Vcs-Git: https://salsa.debian.org/guus/tinc.git
|
||||||
|
Rules-Requires-Root: no
|
||||||
|
|
||||||
Package: tinc
|
Package: tinc
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: debconf | debconf-2.0, ${shlibs:Depends}, ${misc:Depends}
|
Pre-Depends: ${misc:Pre-Depends}
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
|
||||||
Description: Virtual Private Network daemon
|
Description: Virtual Private Network daemon
|
||||||
tinc is a daemon with which you can create a virtual private network
|
tinc is a daemon with which you can create a virtual private network
|
||||||
(VPN). One daemon can handle multiple connections, so you can
|
(VPN). One daemon can handle multiple connections, so you can
|
||||||
|
|
|
||||||
4
debian/doc-base.tinc
vendored
4
debian/doc-base.tinc
vendored
|
|
@ -6,5 +6,5 @@ Abstract: This manual describes how to set up a Virtual Private
|
||||||
Section: System/Security
|
Section: System/Security
|
||||||
|
|
||||||
Format: HTML
|
Format: HTML
|
||||||
Files: /usr/share/doc/tinc/tinc*.html
|
Files: /usr/share/doc/tinc/tinc.html/*
|
||||||
Index: /usr/share/doc/tinc/tinc_toc.html
|
Index: /usr/share/doc/tinc/tinc.html/index.html
|
||||||
|
|
|
||||||
85
debian/init.d
vendored
85
debian/init.d
vendored
|
|
@ -1,85 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: tinc
|
|
||||||
# Required-Start: $network
|
|
||||||
# Required-Stop: $network
|
|
||||||
# Should-Start: $syslog $named
|
|
||||||
# Should-Stop: $syslog
|
|
||||||
# Default-Start: 2 3 4 5
|
|
||||||
# Default-Stop: 0 1 6
|
|
||||||
# Short-Description: Start tinc daemons
|
|
||||||
# Description: Create a file $NETSFILE (/etc/tinc/nets.boot),
|
|
||||||
# and put all the names of the networks in there.
|
|
||||||
# These names must be valid directory names under
|
|
||||||
# $TCONF (/etc/tinc). Lines starting with a # will be
|
|
||||||
# ignored in this file.
|
|
||||||
### END INIT INFO
|
|
||||||
#
|
|
||||||
# Based on Lubomir Bulej's Redhat init script.
|
|
||||||
|
|
||||||
DAEMON="/usr/sbin/tincd"
|
|
||||||
NAME="tinc"
|
|
||||||
DESC="tinc daemons"
|
|
||||||
TCONF="/etc/tinc"
|
|
||||||
NETSFILE="$TCONF/nets.boot"
|
|
||||||
NETS=""
|
|
||||||
|
|
||||||
test -f $DAEMON || exit 0
|
|
||||||
|
|
||||||
[ -r /etc/default/tinc ] && . /etc/default/tinc
|
|
||||||
|
|
||||||
find_nets () {
|
|
||||||
if [ ! -f $NETSFILE ] ; then
|
|
||||||
echo "Please create $NETSFILE."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
NETS="`egrep '^[ ]*[a-zA-Z0-9_-]+[ ]*$' $NETSFILE`"
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
find_nets
|
|
||||||
echo -n "Starting $DESC:"
|
|
||||||
for n in $NETS ; do
|
|
||||||
echo -n " $n"
|
|
||||||
$DAEMON -n $n $EXTRA
|
|
||||||
done
|
|
||||||
echo "."
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
find_nets
|
|
||||||
echo -n "Stopping $DESC:"
|
|
||||||
for n in $NETS ; do
|
|
||||||
echo -n " $n"
|
|
||||||
$DAEMON -n $n $EXTRA -k
|
|
||||||
done
|
|
||||||
echo "."
|
|
||||||
;;
|
|
||||||
reload|force-reload)
|
|
||||||
find_nets
|
|
||||||
echo -n "Reloading $DESC configuration:"
|
|
||||||
for n in $NETS ; do
|
|
||||||
echo -n " $n"
|
|
||||||
$DAEMON -n $n $EXTRA -kHUP
|
|
||||||
done
|
|
||||||
echo "."
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
find_nets
|
|
||||||
echo -n "Restarting $DESC:"
|
|
||||||
for n in $NETS ; do
|
|
||||||
echo -n " $n"
|
|
||||||
$DAEMON -n $n $EXTRA -k
|
|
||||||
sleep 1
|
|
||||||
$DAEMON -n $n $EXTRA
|
|
||||||
done
|
|
||||||
echo "."
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: /etc/init.d/$NAME {start|stop|reload|restart|force-reload}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
65
debian/patches/fix-incorrect-icmpv6-checksum
vendored
Normal file
65
debian/patches/fix-incorrect-icmpv6-checksum
vendored
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
Package: tinc
|
||||||
|
Version: 1.0.33-1
|
||||||
|
Severity: important
|
||||||
|
|
||||||
|
Dear Guus,
|
||||||
|
|
||||||
|
I have been using tinc since 2009 and it is great!
|
||||||
|
|
||||||
|
When PMTUDiscovery=yes and Mode=switch, and if ipv6 is used inside
|
||||||
|
tinc, the ICMPv6 "Packet Too Big" packets have incorrect checksums.
|
||||||
|
It can be reproduced by `ping6 <host in tinc> -s 1800` and `tcpdump -i
|
||||||
|
<tinc interface>`. Consequently, the host ignores the tinc-generated
|
||||||
|
ICMPv6 packets, PMTUDiscovery does not work and the connections freeze
|
||||||
|
when data flows are big.
|
||||||
|
|
||||||
|
I find the bug is gone if the function "inet_checksum" in route.c is
|
||||||
|
not inlined, either by compiling tinc with "-O2
|
||||||
|
-fno-inline-functions", or apply a patch such as,
|
||||||
|
|
||||||
|
diff --git a/src/route.c b/src/route.c
|
||||||
|
index ff82c06e..cd55383a 100644
|
||||||
|
--- a/src/route.c
|
||||||
|
+++ b/src/route.c
|
||||||
|
@@ -60,7 +60,7 @@ static const size_t opt_size = sizeof(struct nd_opt_hdr);
|
||||||
|
|
||||||
|
/* RFC 1071 */
|
||||||
|
|
||||||
|
-static uint16_t inet_checksum(void *data, int len, uint16_t prevsum) {
|
||||||
|
+__attribute__ ((noinline)) static uint16_t inet_checksum(void *data, int len, uint16_t prevsum) {
|
||||||
|
uint16_t *p = data;
|
||||||
|
uint32_t checksum = prevsum ^ 0xFFFF;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
I have tested with gcc-7.3.0 and gcc-5.4.0. They behaved the same. I
|
||||||
|
am not good at assembly to find out what really happened, but it is
|
||||||
|
for sure that inet_checksum does not work as expected if compiled
|
||||||
|
inline.
|
||||||
|
|
||||||
|
Thanks!
|
||||||
|
|
||||||
|
Yours,
|
||||||
|
Benda
|
||||||
|
|
||||||
|
-- System Information:
|
||||||
|
Debian Release: buster/sid
|
||||||
|
APT prefers unstable
|
||||||
|
APT policy: (500, 'unstable')
|
||||||
|
Architecture: amd64 (x86_64)
|
||||||
|
|
||||||
|
Kernel: Linux 4.9.0-5-amd64 (SMP w/8 CPU cores)
|
||||||
|
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8), LANGUAGE=en_US:en (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8)
|
||||||
|
Shell: /bin/sh linked to /bin/dash
|
||||||
|
Init: sysvinit (via /sbin/init)
|
||||||
|
|
||||||
|
Versions of packages tinc depends on:
|
||||||
|
ii libc6 2.26-2
|
||||||
|
ii liblzo2-2 2.08-1.2+b2
|
||||||
|
ii libssl1.1 1.1.0g-2
|
||||||
|
ii lsb-base 9.20170808
|
||||||
|
ii zlib1g 1:1.2.8.dfsg-5
|
||||||
|
|
||||||
|
tinc recommends no packages.
|
||||||
|
|
||||||
|
tinc suggests no packages.
|
||||||
2
debian/patches/series
vendored
Normal file
2
debian/patches/series
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
fix-incorrect-icmpv6-checksum
|
||||||
|
support-etc-defaults-tinc
|
||||||
12
debian/patches/support-etc-defaults-tinc
vendored
Normal file
12
debian/patches/support-etc-defaults-tinc
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
--- a/systemd/tinc@.service.in
|
||||||
|
+++ b/systemd/tinc@.service.in
|
||||||
|
@@ -9,7 +9,8 @@
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=@sysconfdir@/tinc/%i
|
||||||
|
-ExecStart=@sbindir@/tincd -n %i -D
|
||||||
|
+EnvironmentFile=/etc/default/tinc
|
||||||
|
+ExecStart=@sbindir@/tincd -n %i -D $EXTRA
|
||||||
|
ExecReload=@sbindir@/tincd -n %i -kHUP
|
||||||
|
KillMode=mixed
|
||||||
|
Restart=on-failure
|
||||||
1
debian/po/POTFILES.in
vendored
1
debian/po/POTFILES.in
vendored
|
|
@ -1 +0,0 @@
|
||||||
[type: gettext/rfc822deb] tinc.templates
|
|
||||||
63
debian/po/cs.po
vendored
63
debian/po/cs.po
vendored
|
|
@ -1,63 +0,0 @@
|
||||||
#
|
|
||||||
# Translators, if you are not familiar with the PO format, gettext
|
|
||||||
# documentation is worth reading, especially sections dedicated to
|
|
||||||
# this format, e.g. by running:
|
|
||||||
# info -n '(gettext)PO Files'
|
|
||||||
# info -n '(gettext)Header Entry'
|
|
||||||
#
|
|
||||||
# Some information specific to po-debconf are available at
|
|
||||||
# /usr/share/doc/po-debconf/README-trans
|
|
||||||
# or http://www.debian.org/intl/l10n/po-debconf/README-trans
|
|
||||||
#
|
|
||||||
# Developers do not need to manually edit POT or PO files.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: tinc 1.0.4-1\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2004-11-11 20:06+0000\n"
|
|
||||||
"PO-Revision-Date: 2005-06-10 22:44+0200\n"
|
|
||||||
"Last-Translator: Martin Sin <martin.sin@seznam.cz>\n"
|
|
||||||
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr "Restartovat tinc pøi ka¾dé aktualizaci?"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr ""
|
|
||||||
"Mù¾ete zvolit, zda restartovat tinc daemona poka¾dé, kdy¾ je instalována "
|
|
||||||
"nová verze tohoto balíèku."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr ""
|
|
||||||
"Nìkdy tuto mo¾nost nepotøebujete, napøíklad pokud provádíte aktualizaci "
|
|
||||||
"pøes tunel, který je vytvoøen pomocí tinc. Zastavení tohoto daemona "
|
|
||||||
"vám pravdìpodobnì zanechá \"mrtvé pøipojení\" a navíc se tinc nemusí znovu "
|
|
||||||
"spustit."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr ""
|
|
||||||
"Pokud zamítnete, musíte po aktualizaci restartovat tinc ruènì, zadáním "
|
|
||||||
"pøíkazu `invoke-rc.d tinc restart' kdykoliv se vám to hodí."
|
|
||||||
55
debian/po/de.po
vendored
55
debian/po/de.po
vendored
|
|
@ -1,55 +0,0 @@
|
||||||
# Translation of tinc debconf templates to German
|
|
||||||
# Copyright (C) Helge Kreutzmann <debian@helgefjell.de>, 2007.
|
|
||||||
# This file is distributed under the same license as the tinc package.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: tinc 1.0.7-1\n"
|
|
||||||
"Report-Msgid-Bugs-To: tinc@packages.debian.org\n"
|
|
||||||
"POT-Creation-Date: 2007-01-13 20:22+0100\n"
|
|
||||||
"PO-Revision-Date: 2007-02-25 16:43+0100\n"
|
|
||||||
"Last-Translator: Helge Kreutzmann <debian@helgefjell.de>\n"
|
|
||||||
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:1001
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr "Tinc bei jedem Upgrade neu starten?"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:1001
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr ""
|
|
||||||
"Sie können dies auswählen, falls Sie möchten, dass jedes mal, wenn Sie eine "
|
|
||||||
"neue Version installieren, Tinc neu gestartet werden soll."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:1001
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr ""
|
|
||||||
"In manchen Situationen ist dies nicht gewollt, zum Beispiel falls Sie das "
|
|
||||||
"Upgrade über einen Tunnel durchführen, der mit Tinc erstellt wurde. Würde "
|
|
||||||
"dann der Daemon beendet, wäre die Kommunikation tot und Tinc könnte sich "
|
|
||||||
"nicht neu starten."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:1001
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr ""
|
|
||||||
"Falls Sie hier ablehnen, müssen Sie Tinc selbst neu starten, wenn Sie ein "
|
|
||||||
"Upgrade durchgeführt haben, indem Sie »invoke-rc.d tinc restart« eingeben, "
|
|
||||||
"wenn es Ihnen passt."
|
|
||||||
62
debian/po/fr.po
vendored
62
debian/po/fr.po
vendored
|
|
@ -1,62 +0,0 @@
|
||||||
#
|
|
||||||
# Translators, if you are not familiar with the PO format, gettext
|
|
||||||
# documentation is worth reading, especially sections dedicated to
|
|
||||||
# this format, e.g. by running:
|
|
||||||
# info -n '(gettext)PO Files'
|
|
||||||
# info -n '(gettext)Header Entry'
|
|
||||||
# Some information specific to po-debconf are available at
|
|
||||||
# /usr/share/doc/po-debconf/README-trans
|
|
||||||
# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
|
|
||||||
# Developers do not need to manually edit POT or PO files.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: tinc_1.0.3-4\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2004-11-11 20:06+0000\n"
|
|
||||||
"PO-Revision-Date: 2005-02-18 12:42+0100\n"
|
|
||||||
"Last-Translator: Michel Grentzinger <mic.grentz@online.fr>\n"
|
|
||||||
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr "Faut-il redémarrer tinc à chaque mise à jour ?"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr ""
|
|
||||||
"Vous pouvez choisir de redémarrer le démon tinc à chaque fois que vous "
|
|
||||||
"installez une nouvelle version de ce paquet."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr ""
|
|
||||||
"Dans certains cas, vous devrez éviter de le faire, par exemple si vous "
|
|
||||||
"mettez à jour à travers un tunnel créé avec tinc. Arrêter le démon "
|
|
||||||
"laisserait sans doute une connexion inactive et tinc ne pourrait pas être "
|
|
||||||
"redémarré."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr ""
|
|
||||||
"Si vous refusez cette option, vous devrez redémarrer tinc vous-même en cas "
|
|
||||||
"de mise à jour, avec la commande : « invoke-rc.d tinc restart », au moment "
|
|
||||||
"où cela vous conviendra."
|
|
||||||
49
debian/po/ja.po
vendored
49
debian/po/ja.po
vendored
|
|
@ -1,49 +0,0 @@
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: tinc 1.0.4-1\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2004-11-11 20:06+0000\n"
|
|
||||||
"PO-Revision-Date: 2005-06-14 21:09+0900\n"
|
|
||||||
"Last-Translator: Atsushi Shimono <shimono@kwasan.kyoto-u.ac.jp>\n"
|
|
||||||
"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=EUC-JP\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr "アップグレードのたびに tinc を再起動しますか?"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr ""
|
|
||||||
"このパッケージの新しいバージョンをインストールするたびに、tinc デーモンを"
|
|
||||||
"再起動するかどうかを選択できます。"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr ""
|
|
||||||
"tinc のトンネルを経由してアップグレードを行っているときなど、これを行い"
|
|
||||||
"たくないことがあると思います。デーモンを止めることで接続が失われ、tinc "
|
|
||||||
"も再起動しなくなります。"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr ""
|
|
||||||
"これを選択しない場合、アップグレードを行った際、都合が良いときに "
|
|
||||||
"'invoke-rc.d tinc restart' を実行して tinc を自分で再起動する必要があります。"
|
|
||||||
63
debian/po/nl.po
vendored
63
debian/po/nl.po
vendored
|
|
@ -1,63 +0,0 @@
|
||||||
#
|
|
||||||
# Translators, if you are not familiar with the PO format, gettext
|
|
||||||
# documentation is worth reading, especially sections dedicated to
|
|
||||||
# this format, e.g. by running:
|
|
||||||
# info -n '(gettext)PO Files'
|
|
||||||
# info -n '(gettext)Header Entry'
|
|
||||||
#
|
|
||||||
# Some information specific to po-debconf are available at
|
|
||||||
# /usr/share/doc/po-debconf/README-trans
|
|
||||||
# or http://www.debian.org/intl/l10n/po-debconf/README-trans
|
|
||||||
#
|
|
||||||
# Developers do not need to manually edit POT or PO files.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: tinc_1.0.4-1\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2004-11-11 20:06+0000\n"
|
|
||||||
"PO-Revision-Date: 2005-05-04 21:40+0200\n"
|
|
||||||
"Last-Translator: Guus Sliepen <guus@debian.org>\n"
|
|
||||||
"Language-Team: Dutch <nl@li.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr "Start tinc opnieuw na iedere upgrade?"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr ""
|
|
||||||
"Je kunt kiezen of ik de tinc daemon opnieuw moet starten iedere keer als je "
|
|
||||||
"een nieuwe versie van het pakket installeert."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr ""
|
|
||||||
"Soms wil je dit niet doen, bij voorbeeld als je de upgrade uitvoert over een "
|
|
||||||
"tunnel die met tinc is gemaakt. Het stoppen van tinc resulteert dan "
|
|
||||||
"waarschijnlijk is een dode verbinding, en tinc wordt dan misschien niet "
|
|
||||||
"opnieuw gestart."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr ""
|
|
||||||
"Als je weigert, moet je zelf tinc opnieuw starten na een upgrade, door"
|
|
||||||
"`invoke-rc.d tinc restart' in te tiepen wanneer het goed uitkomt."
|
|
||||||
56
debian/po/pt.po
vendored
56
debian/po/pt.po
vendored
|
|
@ -1,56 +0,0 @@
|
||||||
# translation of tinc debconf to Portuguese
|
|
||||||
# Copyright (C) 2007 Américo Monteiro
|
|
||||||
# This file is distributed under the same license as the tinc package.
|
|
||||||
#
|
|
||||||
# Américo Monteiro <a_monteiro@netcabo.pt>, 2007.
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: tinc_1.0.8-1_templates\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2007-05-25 04:46+0200\n"
|
|
||||||
"PO-Revision-Date: 2007-07-21 16:38+0100\n"
|
|
||||||
"Last-Translator: Américo Monteiro <a_monteiro@netcabo.pt>\n"
|
|
||||||
"Language-Team: Portuguese <traduz@debianpt.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: KBabel 1.11.4\n"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:1001
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr "Reiniciar o tinc em cada actualização?"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:1001
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr ""
|
|
||||||
"Você pode escolher se quer eu reinicie o serviço tinc toda a vez que instalar "
|
|
||||||
"uma nova versão deste pacote."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:1001
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr ""
|
|
||||||
"Por vezes você não querer que isto aconteça, por exemplo, se estiver a fazer "
|
|
||||||
"a actualização por um túnel que é criado pelo tinc. Parando o serviço iria provavelmente "
|
|
||||||
"deixá-lo com uma ligação morta, e o tinc poderia não arrancar de novo."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:1001
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr ""
|
|
||||||
"Se recusar, terá que ser você a reiniciar o tinc se o actualizar, escrevendo "
|
|
||||||
"'invoke-rc.d tinc restart' ou outro comando que lhe sirva."
|
|
||||||
|
|
||||||
62
debian/po/sv.po
vendored
62
debian/po/sv.po
vendored
|
|
@ -1,62 +0,0 @@
|
||||||
# Translators, if you are not familiar with the PO format, gettext
|
|
||||||
# documentation is worth reading, especially sections dedicated to
|
|
||||||
# this format, e.g. by running:
|
|
||||||
# info -n '(gettext)PO Files'
|
|
||||||
# info -n '(gettext)Header Entry'
|
|
||||||
# Some information specific to po-debconf are available at
|
|
||||||
# /usr/share/doc/po-debconf/README-trans
|
|
||||||
# or http://www.debian.org/intl/l10n/po-debconf/README-trans
|
|
||||||
# Developers do not need to manually edit POT or PO files.
|
|
||||||
# , fuzzy
|
|
||||||
#
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: tinc 1.0.4-3\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2004-11-11 20:06+0000\n"
|
|
||||||
"PO-Revision-Date: 2005-10-10 22:06+0200\n"
|
|
||||||
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
|
|
||||||
"Language-Team: Swedish <sv@li.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=iso-8859-1\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr "Starta om tinc vid varje uppgradering?"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr ""
|
|
||||||
"Du kan välja om du vill att jag startar om tinc-daemonen varje gång du installerar en "
|
|
||||||
"ny version av detta paket."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr ""
|
|
||||||
"Ibland vill du kanske inte göra detta, till exempel om du gör en uppgradering "
|
|
||||||
"via en tunnel som är skapad med tinc. Stoppa daemonen skulle antagligen koppla ner "
|
|
||||||
"förbindelsen och tinc kan inte startas igen."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr ""
|
|
||||||
"Om du vägrar måste du starta om tinc själv om du uppgraderat, genom att skriva "
|
|
||||||
"'invoke-rc.d tinc restart' när det passar dig."
|
|
||||||
|
|
||||||
56
debian/po/templates.pot
vendored
56
debian/po/templates.pot
vendored
|
|
@ -1,56 +0,0 @@
|
||||||
#
|
|
||||||
# Translators, if you are not familiar with the PO format, gettext
|
|
||||||
# documentation is worth reading, especially sections dedicated to
|
|
||||||
# this format, e.g. by running:
|
|
||||||
# info -n '(gettext)PO Files'
|
|
||||||
# info -n '(gettext)Header Entry'
|
|
||||||
#
|
|
||||||
# Some information specific to po-debconf are available at
|
|
||||||
# /usr/share/doc/po-debconf/README-trans
|
|
||||||
# or http://www.debian.org/intl/l10n/po-debconf/README-trans
|
|
||||||
#
|
|
||||||
# Developers do not need to manually edit POT or PO files.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2004-11-11 20:06+0000\n"
|
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr ""
|
|
||||||
48
debian/po/vi.po
vendored
48
debian/po/vi.po
vendored
|
|
@ -1,48 +0,0 @@
|
||||||
# Vietnamese translation for tinc.
|
|
||||||
# Copyright © 2005 Free Software Foundation, Inc.
|
|
||||||
# Clytie Siddall <clytie@riverland.net.au>, 2005.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: tinc 1.0.4-2\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2004-11-11 20:06+0000\n"
|
|
||||||
"PO-Revision-Date: 2005-08-10 17:13+0930\n"
|
|
||||||
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
|
|
||||||
"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0\n"
|
|
||||||
"X-Generator: LocFactoryEditor 1.2.2\n"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid "Restart tinc on each upgrade?"
|
|
||||||
msgstr "Khởi chạy lại trình tinc mỗi lần nâng cấp không?"
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"You may choose if you want me to restart the tinc daemon every time you "
|
|
||||||
"install a new version of this package."
|
|
||||||
msgstr "Tại đây bạn có thể chọn tự động khởi chạy lại trình nền (dæmon) tinc mỗi lần bạn cài đặt phiên bản mới của gói này hay không."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"Sometimes you don't want to do this, for example if you are doing the "
|
|
||||||
"upgrade over a tunnel that is created with tinc. Stopping the daemon would "
|
|
||||||
"probably leave you with a dead connection, and tinc may not be started again."
|
|
||||||
msgstr "Đôi khi bạn không muốn làm như thế, lấy thí dụ nếu bạn đang nâng cấp qua đường hầm mà tinc tạo. Trong trường hợp này, ngừng trình nền rất có thể sẽ ngắt kết nối, và có lẽ tinc sẽ không khởi chạy lại."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../tinc.templates:4
|
|
||||||
msgid ""
|
|
||||||
"If you refuse, you have to restart tinc yourself if you upgraded, by typing "
|
|
||||||
"`invoke-rc.d tinc restart' whenever it suits you."
|
|
||||||
msgstr "Nếu bạn từ chối thì bạn cần phải tự khởi chạy lại trình tinc mỗi lần nâng cấp, bằng cách gõ lệnh « invoke-rc.d tinc restart » (gọi-rc.d tinc khởi chạy lại) khi thích hợp."
|
|
||||||
71
debian/postinst
vendored
71
debian/postinst
vendored
|
|
@ -1,77 +1,25 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# postinst script for tinc
|
|
||||||
#
|
|
||||||
# $Id: postinst,v 1.6 2000/05/21 23:01:28 zarq Exp $
|
|
||||||
#
|
|
||||||
# see: dh_installdeb(1)
|
|
||||||
|
|
||||||
TCONF="/etc/tinc"
|
NETSFILE="/etc/tinc/nets.boot"
|
||||||
NETSFILE="$TCONF/nets.boot"
|
|
||||||
RET="false"
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# summary of how this script can be called:
|
|
||||||
# * <postinst> `configure' <most-recently-configured-version>
|
|
||||||
# * <old-postinst> `abort-upgrade' <new version>
|
|
||||||
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
|
||||||
# <new-version>
|
|
||||||
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
|
||||||
# <failed-install-package> <version> `removing'
|
|
||||||
# <conflicting-package> <version>
|
|
||||||
# for details, see /usr/doc/packaging-manual/
|
|
||||||
#
|
|
||||||
# quoting from the policy:
|
|
||||||
# Any necessary prompting should almost always be confined to the
|
|
||||||
# post-installation script, and should be protected with a conditional
|
|
||||||
# so that unnecessary prompting doesn't happen if a package's
|
|
||||||
# installation fails and the `postinst' is called with `abort-upgrade',
|
|
||||||
# `abort-remove' or `abort-deconfigure'.
|
|
||||||
|
|
||||||
# Automatically added by dh_installinit, edited for use with debconf
|
|
||||||
if [ -x "/etc/init.d/tinc" ]; then
|
|
||||||
update-rc.d tinc defaults >/dev/null
|
|
||||||
|
|
||||||
if [ "$1" = "configure" ] ; then
|
|
||||||
if dpkg --compare-versions "$2" lt "1.0pre5-4" ; then
|
|
||||||
RET="true"
|
|
||||||
else
|
|
||||||
if [ -e /usr/share/debconf/confmodule ] ; then
|
|
||||||
. /usr/share/debconf/confmodule
|
|
||||||
db_get tinc/restart_on_upgrade
|
|
||||||
db_stop
|
|
||||||
else
|
|
||||||
RET="true"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# End automatically added section
|
|
||||||
|
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
configure)
|
configure)
|
||||||
if [ ! -e /dev/.devfsd ] ; then if [ ! -e /dev/.devfs ] ; then
|
if [ ! -e /dev/.devfsd ] ; then if [ ! -e /dev/.devfs ] ; then
|
||||||
if [ ! -e /dev/net/tun ] ; then if [ ! -e /dev/tun ] ; then
|
if [ ! -e /dev/net/tun ] ; then if [ ! -e /dev/tun ] ; then if [ -e /dev/MAKEDEV ]; then
|
||||||
echo "Creating tun device..."
|
echo "Creating tun device..."
|
||||||
cd /dev && ./MAKEDEV net/tun 2>/dev/null || ./MAKEDEV tun 2>/dev/null || echo "Failed to create tun device."
|
cd /dev && ./MAKEDEV net/tun 2>/dev/null || ./MAKEDEV tun 2>/dev/null || echo "Failed to create tun device."
|
||||||
fi; fi
|
fi; fi; fi
|
||||||
fi; fi
|
fi; fi
|
||||||
|
|
||||||
if [ ! -e $NETSFILE ] ; then
|
if [ ! -e $NETSFILE ] ; then
|
||||||
echo "## This file contains all names of the networks to be started on system startup." > $NETSFILE
|
echo "## This file contains all names of the networks to be started on system startup when using sysvinit." > $NETSFILE
|
||||||
|
echo "## If you are using systemd, use systemctl enable tinc@netname to enable individual networks." >> $NETSFILE
|
||||||
fi
|
fi
|
||||||
|
;;
|
||||||
if [ "$RET" = "true" ] ; then
|
|
||||||
invoke-rc.d tinc start
|
|
||||||
else
|
|
||||||
echo "I have not stopped or restarted the tinc daemon. You should do this"
|
|
||||||
echo "yourself whenever you're ready; type \`\`invoke-rc.d tinc restart''."
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
abort-upgrade|abort-remove|abort-deconfigure)
|
abort-upgrade|abort-remove|abort-deconfigure)
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|
@ -80,11 +28,4 @@ case "$1" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# dh_installdeb will replace this with shell code automatically
|
|
||||||
# generated by other debhelper scripts.
|
|
||||||
|
|
||||||
#DEBHELPER#
|
#DEBHELPER#
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
5
debian/postrm
vendored
5
debian/postrm
vendored
|
|
@ -1,10 +1,9 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
# Automatically added by package maintainer
|
|
||||||
if [ "$1" = purge ]; then
|
if [ "$1" = purge ]; then
|
||||||
rm -f /etc/tinc/nets.boot
|
rm -f /etc/tinc/nets.boot
|
||||||
update-rc.d tinc remove >/dev/null 2>/dev/null
|
|
||||||
fi
|
fi
|
||||||
# End automatically added section
|
|
||||||
|
|
||||||
#DEBHELPER#
|
#DEBHELPER#
|
||||||
|
|
|
||||||
28
debian/preinst
vendored
Normal file
28
debian/preinst
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
NETSFILE="/etc/tinc/nets.boot"
|
||||||
|
SYSTEM="/lib/systemd/system"
|
||||||
|
WANTS="/etc/systemd/system/multi-user.target.wants"
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
upgrade)
|
||||||
|
if dpkg --compare-versions "$2" '<<' "1.0.27-1"; then
|
||||||
|
if [ -f "$NETSFILE" ]; then
|
||||||
|
echo -n "Creating systemd service instances from nets.boot:"
|
||||||
|
mkdir -p "$WANTS"
|
||||||
|
egrep '^[ ]*[a-zA-Z0-9_-]+' $NETSFILE | while read net args; do
|
||||||
|
echo -n " $net"
|
||||||
|
ln -s "$SYSTEM/tinc@.service" "$WANTS/tinc@$net.service" 2>/dev/null || true
|
||||||
|
done
|
||||||
|
echo "."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
20
debian/prerm
vendored
20
debian/prerm
vendored
|
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Automatically added by dh_installinit, edited for use with debconf
|
|
||||||
if [ -x "/etc/init.d/tinc" ]; then
|
|
||||||
if [ -e /usr/share/debconf/confmodule ] ; then
|
|
||||||
. /usr/share/debconf/confmodule
|
|
||||||
db_get tinc/restart_on_upgrade
|
|
||||||
if [ "$RET" = "true" ] ; then
|
|
||||||
invoke-rc.d tinc stop
|
|
||||||
fi
|
|
||||||
db_stop
|
|
||||||
else
|
|
||||||
invoke-rc.d tinc stop
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# End automatically added section
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
||||||
25
debian/rules
vendored
25
debian/rules
vendored
|
|
@ -1,19 +1,16 @@
|
||||||
#!/usr/bin/make -f
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
include /usr/share/cdbs/1/rules/debhelper.mk
|
%:
|
||||||
#include /usr/share/cdbs/1/rules/simple-patchsys.mk
|
dh $@
|
||||||
include /usr/share/cdbs/1/class/autotools.mk
|
|
||||||
|
|
||||||
DEB_CONFIGURE_EXTRA_FLAGS = --enable-tracing
|
override_dh_clean:
|
||||||
|
dh_clean
|
||||||
|
rm -f doc/tinc.info
|
||||||
|
|
||||||
# A bit of a kludge, we have our own init.d handling in postinst, but
|
override_dh_auto_configure:
|
||||||
# cdbs calls dh_installinit anyway.
|
dh_auto_configure -- --enable-uml --with-systemd=/lib/systemd/system --runstatedir=/run
|
||||||
DEB_DH_INSTALLINIT_ARGS = -n
|
|
||||||
|
|
||||||
clean::
|
override_dh_auto_install:
|
||||||
rm -f src/device.c
|
dh_auto_install -- install-html
|
||||||
build/tinc::
|
# Remove info dir file
|
||||||
cd doc && $(MAKE) texi2html
|
rm -f debian/tinc/usr/share/info/dir
|
||||||
binary-post-install/tinc::
|
|
||||||
mv -v doc/tinc/*.html debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/
|
|
||||||
cd debian/$(cdbs_curpkg)/usr/share/doc/$(cdbs_curpkg)/ && tar xzf ../../../../../../doc/sample-config.tar.gz && mv sample-config examples && rm -rf examples/CVS examples/hosts/CVS
|
|
||||||
|
|
|
||||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
3.0 (quilt)
|
||||||
5
debian/tinc.default
vendored
5
debian/tinc.default
vendored
|
|
@ -1,2 +1,7 @@
|
||||||
# Extra options to be passed to tincd.
|
# Extra options to be passed to tincd.
|
||||||
# EXTRA="-d"
|
# EXTRA="-d"
|
||||||
|
|
||||||
|
# Limits to be configured for the tincd process. Please read your shell
|
||||||
|
# (pointed by /bin/sh) documentation for ulimit. You probably want to raise the
|
||||||
|
# max locked memory value if using both --mlock and --user flags.
|
||||||
|
# LIMITS="-l 1024"
|
||||||
|
|
|
||||||
41
debian/tinc.if-post-down
vendored
Executable file
41
debian/tinc.if-post-down
vendored
Executable file
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$METHOD" = loopback -o -z "$IF_TINC_NET" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine location of the PID file
|
||||||
|
|
||||||
|
EXTRA=""
|
||||||
|
if [ -n "$IF_TINC_PIDFILE" ]; then
|
||||||
|
EXTRA="--pidfile=$IF_TINC_PIDFILE"
|
||||||
|
else
|
||||||
|
IF_TINC_PIDFILE=/var/run/tinc.$IF_TINC_NET.pid
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Stop the tinc daemon
|
||||||
|
|
||||||
|
read pid rest < $IF_TINC_PIDFILE 2>/dev/null
|
||||||
|
|
||||||
|
/usr/sbin/tincd -n "$IF_TINC_NET" -k $EXTRA
|
||||||
|
|
||||||
|
# Wait for it to shut down properly
|
||||||
|
|
||||||
|
/bin/sleep 0.1
|
||||||
|
i=0;
|
||||||
|
while [ -f $IF_TINC_PIDFILE ] ; do
|
||||||
|
if [ ! -e "/proc/$pid" ] ; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $i = '30' ] ; then
|
||||||
|
echo 'Failed to stop tinc daemon!'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
/bin/sleep 0.1
|
||||||
|
i=$(($i+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
||||||
70
debian/tinc.if-pre-up
vendored
Executable file
70
debian/tinc.if-pre-up
vendored
Executable file
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$METHOD" = loopback -o -z "$IF_TINC_NET" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Read options from /etc/default
|
||||||
|
|
||||||
|
[ -r /etc/default/tinc ] && . /etc/default/tinc
|
||||||
|
|
||||||
|
# Set process limits
|
||||||
|
|
||||||
|
setlimits() {
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
parm=$1 ; shift
|
||||||
|
if [ -n "$1" -a "${1#-}" = "$1" ]; then
|
||||||
|
value=$1 ; shift
|
||||||
|
ulimit $parm $value
|
||||||
|
else
|
||||||
|
ulimit $parm
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
test -n "$LIMITS" && setlimits $LIMITS
|
||||||
|
|
||||||
|
# Read options from /etc/network/interfaces
|
||||||
|
|
||||||
|
[ -n "$IF_TINC_CONFIG" ] && EXTRA="$EXTRA -c $IF_TINC_CONFIG"
|
||||||
|
[ -n "$IF_TINC_DEBUG" ] && EXTRA="$EXTRA -d$IF_TINC_DEBUG"
|
||||||
|
[ -n "$IF_TINC_MLOCK" ] && EXTRA="$EXTRA --mlock"
|
||||||
|
[ -n "$IF_TINC_LOGFILE" ] && EXTRA="$EXTRA --logfile=$IF_TINC_LOGFILE"
|
||||||
|
[ -n "$IF_TINC_PIDFILE" ] && EXTRA="$EXTRA --pidfile=$IF_TINC_PIDFILE" || IF_TINC_PIDFILE=/var/run/tinc.$IF_TINC_NET.pid
|
||||||
|
[ -n "$IF_TINC_CHROOT" ] && EXTRA="$EXTRA --chroot"
|
||||||
|
[ -n "$IF_TINC_USER" ] && EXTRA="$EXTRA --user=$IF_TINC_USER"
|
||||||
|
|
||||||
|
|
||||||
|
# Start tinc daemon
|
||||||
|
|
||||||
|
/usr/sbin/tincd -n "$IF_TINC_NET" -o "Interface=$IFACE" $EXTRA
|
||||||
|
|
||||||
|
# Wait for it to come up properly
|
||||||
|
|
||||||
|
/bin/sleep 0.1
|
||||||
|
i=0;
|
||||||
|
while [ ! -f $IF_TINC_PIDFILE ] ; do
|
||||||
|
if [ $i = '30' ] ; then
|
||||||
|
echo 'Failed to start tinc daemon!'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
/bin/sleep 0.1
|
||||||
|
i=$(($i+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
while read pid rest < $IF_TINC_PIDFILE ; do
|
||||||
|
if [ -e "/proc/$pid" ] ; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $i = '30' ] ; then
|
||||||
|
echo 'Failed to start tinc daemon!'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
/bin/sleep 0.1
|
||||||
|
i=$(($i+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
||||||
9
debian/tinc.if-up
vendored
Executable file
9
debian/tinc.if-up
vendored
Executable file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$METHOD" = loopback -o -n "$IF_TINC_NET" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
invoke-rc.d tinc alarm || exit 0
|
||||||
140
debian/tinc.init
vendored
Normal file
140
debian/tinc.init
vendored
Normal file
|
|
@ -0,0 +1,140 @@
|
||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: tinc
|
||||||
|
# Required-Start: $remote_fs $network
|
||||||
|
# Required-Stop: $remote_fs $network
|
||||||
|
# Should-Start: $syslog $named
|
||||||
|
# Should-Stop: $syslog
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Start tinc daemons
|
||||||
|
# Description: Create a file $NETSFILE (/etc/tinc/nets.boot),
|
||||||
|
# and put all the names of the networks in there.
|
||||||
|
# These names must be valid directory names under
|
||||||
|
# $TCONF (/etc/tinc). Lines starting with a # will be
|
||||||
|
# ignored in this file.
|
||||||
|
### END INIT INFO
|
||||||
|
#
|
||||||
|
# Based on Lubomir Bulej's Redhat init script.
|
||||||
|
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
|
DAEMON="/usr/sbin/tincd"
|
||||||
|
NAME="tinc"
|
||||||
|
DESC="tinc daemons"
|
||||||
|
TCONF="/etc/tinc"
|
||||||
|
NETSFILE="$TCONF/nets.boot"
|
||||||
|
NETS=""
|
||||||
|
|
||||||
|
test -f $DAEMON || exit 0
|
||||||
|
|
||||||
|
[ -r /etc/default/tinc ] && . /etc/default/tinc
|
||||||
|
|
||||||
|
# foreach_net "what-to-say" action [arguments...]
|
||||||
|
foreach_net() {
|
||||||
|
if [ ! -f $NETSFILE ] ; then
|
||||||
|
echo "Please create $NETSFILE."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo -n "$1"
|
||||||
|
shift
|
||||||
|
egrep '^[ ]*[a-zA-Z0-9_-]+' $NETSFILE | while read net args; do
|
||||||
|
echo -n " $net"
|
||||||
|
"$@" $net $args
|
||||||
|
done
|
||||||
|
echo "."
|
||||||
|
}
|
||||||
|
|
||||||
|
signal_running() {
|
||||||
|
for i in /var/run/tinc.*pid; do
|
||||||
|
if [ -f "$i" ]; then
|
||||||
|
head -1 $i | while read pid; do
|
||||||
|
kill -$1 $pid
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
setlimits() {
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
parm=$1 ; shift
|
||||||
|
if [ -n "$1" -a "${1#-}" = "$1" ]; then
|
||||||
|
value=$1 ; shift
|
||||||
|
ulimit $parm $value
|
||||||
|
else
|
||||||
|
ulimit $parm
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
test -n "$LIMITS" && setlimits $LIMITS
|
||||||
|
|
||||||
|
start() {
|
||||||
|
$DAEMON $EXTRA -n "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
[ -f /var/run/tinc.$1.pid ] || return
|
||||||
|
read pid rest </var/run/tinc.$1.pid || return
|
||||||
|
kill -0 "$pid" 2>/dev/null || return
|
||||||
|
|
||||||
|
$DAEMON -n $1 -k || return
|
||||||
|
|
||||||
|
i=0;
|
||||||
|
/bin/sleep 0.5
|
||||||
|
|
||||||
|
# Wait for the pidfile to disappear
|
||||||
|
while [ -f /var/run/tinc.$1.pid ]; do
|
||||||
|
# And check that there is an actual process running
|
||||||
|
kill -0 "$pid" 2>/dev/null || return
|
||||||
|
|
||||||
|
if [ $i = '10' ] ; then
|
||||||
|
# It's still alive, kill it again and give up
|
||||||
|
$DAEMON -n $1 -k && /bin/sleep 0.5
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo -n "."
|
||||||
|
i=$(($i+1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
/bin/sleep 0.5
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
reload() {
|
||||||
|
$DAEMON -n $1 -kHUP
|
||||||
|
}
|
||||||
|
|
||||||
|
alarm() {
|
||||||
|
$DAEMON -n $1 -kALRM
|
||||||
|
}
|
||||||
|
|
||||||
|
restart() {
|
||||||
|
stop "$@"
|
||||||
|
start "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
foreach_net "Starting $DESC:" start
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
foreach_net "Stopping $DESC:" stop
|
||||||
|
;;
|
||||||
|
reload|force-reload)
|
||||||
|
foreach_net "Reloading $DESC configuration:" reload
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
foreach_net "Restarting $DESC:" restart
|
||||||
|
;;
|
||||||
|
alarm)
|
||||||
|
signal_running ALRM
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: /etc/init.d/$NAME {start|stop|reload|restart|force-reload|alarm}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
12
debian/tinc.modules
vendored
12
debian/tinc.modules
vendored
|
|
@ -1,12 +0,0 @@
|
||||||
alias char-major-36 netlink_dev
|
|
||||||
alias char-major-10-200 tun
|
|
||||||
|
|
||||||
alias tap0 ethertap
|
|
||||||
alias tap1 ethertap
|
|
||||||
alias tap2 ethertap
|
|
||||||
alias tap3 ethertap
|
|
||||||
|
|
||||||
options tap0 -o tap0 -x unit=0
|
|
||||||
options tap1 -o tap1 -x unit=1
|
|
||||||
options tap2 -o tap2 -x unit=2
|
|
||||||
options tap3 -o tap3 -x unit=3
|
|
||||||
14
debian/tinc.templates
vendored
14
debian/tinc.templates
vendored
|
|
@ -1,14 +0,0 @@
|
||||||
Template: tinc/restart_on_upgrade
|
|
||||||
Type: boolean
|
|
||||||
Default: true
|
|
||||||
_Description: Restart tinc on each upgrade?
|
|
||||||
You may choose if you want me to restart the tinc daemon every time you
|
|
||||||
install a new version of this package.
|
|
||||||
.
|
|
||||||
Sometimes you don't want to do this, for example if you are doing the
|
|
||||||
upgrade over a tunnel that is created with tinc. Stopping the daemon
|
|
||||||
would probably leave you with a dead connection, and tinc may not be
|
|
||||||
started again.
|
|
||||||
.
|
|
||||||
If you refuse, you have to restart tinc yourself if you upgraded, by
|
|
||||||
typing `invoke-rc.d tinc restart' whenever it suits you.
|
|
||||||
70
debian/upstream/signing-key.asc
vendored
Normal file
70
debian/upstream/signing-key.asc
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
mQINBEVZzTABEADawFv/ibQ48uA1eRhL07vdM36Pcq2HDyuyNA+vYEalNH4jLmha
|
||||||
|
nGPvDALWwX0DXIWDAG8zeTj8s8zliLIjuPS4WRI2YdKIvWeG9fEvpKSXVWa42ica
|
||||||
|
dpzn/H2aBd4Ax6rQaiTXKOvxANAp2Veb+73ssPV5AL00uGTpzhh98xQzfFQCZ9ZL
|
||||||
|
YSVPqbMed5oCt/4jM9FBO2CuBtkfiO0dVVYtW7FAVjcIlE2NaZol/KGvz7wsS+yA
|
||||||
|
dE42W0l5MdQueLmTF4AIUSSTyPFGMQoyqh+MPif73Y589IGcW6GdfKYWnVDo6Trh
|
||||||
|
HOhcEky+uTYKb6NL0vrJgUiYVMzAOXFDdJni1eQGO6EfZRNYtTga3alWq/jVelK7
|
||||||
|
BID5JyNbkrTAqdPnhJGivVyk8gGX3+Hng8rkXTfWhp6yAYau1QfBm0F2tIQmpL1C
|
||||||
|
+7DoLvFErboQf685jXJBjzyvsJxB2ZLH1OOw6mNL0hy2LFkIyGza/bktY2em4apo
|
||||||
|
KWV5AM5LpyW6THH1oDS7706xFNkf4IFhKE0hKPzBiRnMDjRtMI131lkc5+P8Lqf5
|
||||||
|
jLTCFUgbEhU6Dz2YjhHAumVm0NWJETUpFDtVvMrqk+mp5xldUOWRNlYQC5aQOyda
|
||||||
|
eHOlNzB/BFbPhKMWI/zWlEH6f0t6WjHb4iwpWO47511aVNHF59aPzbAHxwARAQAB
|
||||||
|
tC9UaW5jIERldmVsb3BtZW50IFRlYW0gPHRpbmMtZGV2ZWxAdGluYy12cG4ub3Jn
|
||||||
|
PokCNgQTAQIAIAUCRVnNMAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEEpg
|
||||||
|
hLnA1x9KxOAQAMPhO2WTXv9AaGQBQhyyoGseKoSfcRjtI9YEfE0OInQQ2E+SPYF/
|
||||||
|
dkfeLGAUqa4foTYQlMqfw70vBhTdVCb7HLTGn6/ICFUtDwakUQCgUQGlUVQiondA
|
||||||
|
8W6jj+QWrh5BQhHuXy2nCVaKnksu0/xQPsJotghxuYqaot3iJ4qVw9iT/Yeo9irH
|
||||||
|
Ffftqu0OVCdQ5zQuFNI9YCv/C83L59ecH7bOzYz2efTyobvxrhmgQtgOQwCWOE09
|
||||||
|
Kr3veM9KLG33YoXlqv8QN/3CwtsJvSwfhj+R2JowZC7RqHe/yznRzmRMsgbrolxi
|
||||||
|
uiJLonGxcNNkD7WhXi7/zL4A/JaC27XrFf1MPLv8aiTwnOIfrXd5jawpauUOZOXK
|
||||||
|
UjIZHlIqviB0r5s7A+AFeHW38Tp9VzNuQ7aEl5bHbSXV+s7DTAwGb279z0AVaJ3h
|
||||||
|
5hWFxupw7UoGdzROwCBYzeX3sioAL6QvkXua8X6zOH45VEiSwrRX3Hlx/MLo7Z4g
|
||||||
|
PWgFLf6WviHQXCG834To1XIwUk9RgNsL7OzGjtaCuRymADImKMNwierq2zTfoRFQ
|
||||||
|
v9onIadIMF1fsc70hiBG9yAi36MEuk4VxG8Jc3PQQfSFm4RWazv1k3E0AAIob2Ek
|
||||||
|
DLVjvLO62Navo/OQ6D7yyiX0qes5S7/k3F1h8+87eRn3yxZE2kbxPg8KuQENBEVZ
|
||||||
|
zYYBCACoYgExmMKEtABL3pir/IXI4exR/45hkP6txFIrkVQb8DGJ9H39kiDr4gtj
|
||||||
|
F+pvcgMpec35S3m4fJ7WhDNvbDB4ZvONc1NMKs9cqDXfB+TLWPm4W+SkcKUrs+nK
|
||||||
|
i8l7ieggTALJcvRoLTX2EFmUFrD6y870W3rK2SfC/0VJX8Ou5cPbwCeueExjo5x0
|
||||||
|
3gNfu0jWUS0cyA9y+1rVVekrLuJY/+SI4jv3gdzrYbxD0f6dpbpC37QHoJdd0KGF
|
||||||
|
acPtT2azjY+HxW10EA3Aw9oZWFXnb1nFg2RbDpkaGLmLbaXweltLyw154UmCXxym
|
||||||
|
PXPqi9bSfEkj0GiYrapk4mW114u9ABEBAAGJA0QEGAECAA8FAkVZzYcCGwIFCQHh
|
||||||
|
M4ABKQkQSmCEucDXH0rAXSAEGQECAAYFAkVZzYcACgkQ017duBDeLmmu3wf/TFZM
|
||||||
|
tLKxiyQPtGSTE3eULPdWCEMDZXdSPTY0QHM7Zvh+qn1ei+iFpD0549MYnBEAwDIV
|
||||||
|
4o62Nrcg8IPu0CEkZIAn2JiFFGYvMGk91awZGV1GS3umd7Dt349E1oKDPZVzRn+j
|
||||||
|
QIKarXxxabRmx2s/dZZgSs/eguWTboBFmvls9tVfe8x/xPvcHFmqHVUoGKEJy6Tm
|
||||||
|
no+s4yNjpc5wAaRml+GYf1tK9WMFuZn79qKxkYv4WI96dXR0FL59YbFRkkaI+1/b
|
||||||
|
G31MvWTqVjY1nJGslByFPUUB8Ca1djtp1gx6NXnOYr3V5MEDfdbjjPu79No+/y6M
|
||||||
|
tIua5yNtSRlk2nKhIqo3D/sGQ/uHijiMRAtoLhiyqYMc9W9vx/KOoCUHoMJqE39a
|
||||||
|
Eputvgwwo0rwgSmNfB1dzneFojBdJ47WBSHC8NKtkpJj6mzvvlaI9jmEpK54x3nl
|
||||||
|
OmBj3X/xaepoRGAtrmgTBP4A9hSjrTMGu/tUQjlX+Xcr6n3g7GSVe5FpUyIMPXEU
|
||||||
|
+JZDTiEUyn1OdzfNGmnWP+KJX5pQVq4czf5XK6otLZJELDVw/Hbjnjmdz5WOKgEH
|
||||||
|
jSof3WPeMBgPAcd/cMAZeiGtWM1UpJBHqEXTkthmrpmtRftJKDbooNM9d5OwKiT+
|
||||||
|
I3vNBv/plMSr8NDjhTWC+ihrN6RBj1vaqpDgGpucPhoO2hwNqWuI4q5WUKtCyw6J
|
||||||
|
An7ErNaH4c0nVaZq6kJ8Vxdt+LpKYmOsJ8y9xtl6StcrkKNn+6ZfCfee7DEo2bvb
|
||||||
|
scfpqJqqOqb5KOagTpYs8mo6yQ3leRvFtoeBOQHVQzct23EwOMxbDyeunT50a1eH
|
||||||
|
MZTEWuIiuCUudM81QXU46oIcaAtj8tpG0Tmnku9g27EjwxUt+8kVmhlPHMb2TdoF
|
||||||
|
k5d0ce+JuxIG5+i+t8sUCorMc8zfp4g1bxZeMOcPnfyO3bSW11EVcN7ZxHlFC+XE
|
||||||
|
YOByP50CM3P8lItPlQ+WpY9kYWjiwu9kVPaGQ16G47nspngJInU5dhka3KJGtIZe
|
||||||
|
q7kBDQRFWc3GAQgAz/JUs24niKsd0ZtOjUWd4R4y0gjS0kC/vvLL2gbXYkA9tcjG
|
||||||
|
5iEvVWJY34QsudX0v1ULsVnJ89X/gsk8hAhAia1TQm+0Qq+MSxEaQkMSaOO8N70U
|
||||||
|
XzgH1dielvpea20WO4MyWQuRIJ0K2nsGmEPnt6ZP7fK8HVHFNggP/mQ6LMu1reAF
|
||||||
|
gvb8cEtjb9B5QaCUEoLjsbsuo+vLW7AWy4GfIRNESHw2Qt08AUaGrihpu6zi7N2b
|
||||||
|
QkHHJtqa63GzYJ+kYzAVvrFJXdwL/TRXLBzv+6yyvYSIHi8uB6/o6CZN6hpjfpME
|
||||||
|
ph+oYPqXeNOyMd1E9Kg8ymcPrNyQKfE3WnCRXQARAQABiQIlBBgBAgAPBQJFWc3H
|
||||||
|
AhsMBQkB4TOAAAoJEEpghLnA1x9KXYMP/3D9JYti6C8DWuX2hWv+2SUbLcMa5u1e
|
||||||
|
ETewIo5S3mqGWSaxX4YLPVRkZ1lOLmFysOLimf0thYm7IsatLcWmBdYUpK92ilvr
|
||||||
|
Sk2sKlhrOoBXEX/79Kz+Aj5PjeyiQxgQ7Ba/afwhU6aTqs2Dp1T0YNu2eBvV+1QH
|
||||||
|
lZnW2Wh96zzwc0dJUuY9eBk5Fgpu08Wce7o6jxFPtVyAaQa0zcNAmw2TSY7wbunJ
|
||||||
|
WTl9OgATAyqVCuhWW7AnPcSqkH8lQigSc00wfqJKOD2Us0FqN6UKDCZTyQkdP6hx
|
||||||
|
G+3aUkkvGSOxy7u9bVWmrikuJMoiIY/CH/m+GcJJATVibI7t5MhhtBGySKc3PAwc
|
||||||
|
58sVe9AnbDvs84efrNP59j2KG2KKqcqjTGAmKyJnG3N50xJGakDIsqfneIRNWpEE
|
||||||
|
pOOPaOqR4qnPAS9OSt9A3hqBpWPjQcScd6AuO+J2PE5y23pTnb9PtLBQb5e4VFiv
|
||||||
|
N54u8j4bU2CO0SC2isZ3CR68dPHthWsxt4XbjhgktjbpQRQ8L2EDBQ8oE13GOrOw
|
||||||
|
P8x4Q0eC5uzkXNyRqzKOsxlZEuc+75aDDd3M2GDw08FG7GI1p/L+NgenwT+9TmFX
|
||||||
|
2hOKVrjgyx+fPut1t5DJJubDWXGOK33qvrL7HTCEv1zz7LNbbPwwNHK4lfMAWuJW
|
||||||
|
D9wc3Y9Se/P/
|
||||||
|
=5MAs
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
2
debian/watch
vendored
Normal file
2
debian/watch
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
version=3
|
||||||
|
opts=pgpsigurlmangle=s/$/.sig/ http://www.tinc-vpn.org/packages/tinc-(1\.0\.\d+)\.tar\.gz
|
||||||
582
depcomp
582
depcomp
|
|
@ -1,10 +1,9 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# depcomp - compile a program generating dependencies as side-effects
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
scriptversion=2007-03-29.01
|
scriptversion=2018-03-07.03; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
|
# Copyright (C) 1999-2020 Free Software Foundation, Inc.
|
||||||
# Foundation, Inc.
|
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -17,9 +16,7 @@ scriptversion=2007-03-29.01
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
# 02110-1301, USA.
|
|
||||||
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
|
|
@ -30,9 +27,9 @@ scriptversion=2007-03-29.01
|
||||||
|
|
||||||
case $1 in
|
case $1 in
|
||||||
'')
|
'')
|
||||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
exit 1;
|
exit 1;
|
||||||
;;
|
;;
|
||||||
-h | --h*)
|
-h | --h*)
|
||||||
cat <<\EOF
|
cat <<\EOF
|
||||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
@ -42,11 +39,11 @@ as side-effects.
|
||||||
|
|
||||||
Environment variables:
|
Environment variables:
|
||||||
depmode Dependency tracking mode.
|
depmode Dependency tracking mode.
|
||||||
source Source file read by `PROGRAMS ARGS'.
|
source Source file read by 'PROGRAMS ARGS'.
|
||||||
object Object file output by `PROGRAMS ARGS'.
|
object Object file output by 'PROGRAMS ARGS'.
|
||||||
DEPDIR directory where to store dependencies.
|
DEPDIR directory where to store dependencies.
|
||||||
depfile Dependency file to output.
|
depfile Dependency file to output.
|
||||||
tmpdepfile Temporary file to use when outputing dependencies.
|
tmpdepfile Temporary file to use when outputting dependencies.
|
||||||
libtool Whether libtool is used (yes/no).
|
libtool Whether libtool is used (yes/no).
|
||||||
|
|
||||||
Report bugs to <bug-automake@gnu.org>.
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
|
@ -59,6 +56,66 @@ EOF
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Get the directory component of the given path, and save it in the
|
||||||
|
# global variables '$dir'. Note that this directory component will
|
||||||
|
# be either empty or ending with a '/' character. This is deliberate.
|
||||||
|
set_dir_from ()
|
||||||
|
{
|
||||||
|
case $1 in
|
||||||
|
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
|
||||||
|
*) dir=;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get the suffix-stripped basename of the given path, and save it the
|
||||||
|
# global variable '$base'.
|
||||||
|
set_base_from ()
|
||||||
|
{
|
||||||
|
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
|
||||||
|
}
|
||||||
|
|
||||||
|
# If no dependency file was actually created by the compiler invocation,
|
||||||
|
# we still have to create a dummy depfile, to avoid errors with the
|
||||||
|
# Makefile "include basename.Plo" scheme.
|
||||||
|
make_dummy_depfile ()
|
||||||
|
{
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Factor out some common post-processing of the generated depfile.
|
||||||
|
# Requires the auxiliary global variable '$tmpdepfile' to be set.
|
||||||
|
aix_post_process_depfile ()
|
||||||
|
{
|
||||||
|
# If the compiler actually managed to produce a dependency file,
|
||||||
|
# post-process it.
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
# Each line is of the form 'foo.o: dependency.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# $object: dependency.h
|
||||||
|
# and one to simply output
|
||||||
|
# dependency.h:
|
||||||
|
# which is needed to avoid the deleted-header problem.
|
||||||
|
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
|
||||||
|
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
|
||||||
|
} > "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
else
|
||||||
|
make_dummy_depfile
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# A tabulation character.
|
||||||
|
tab=' '
|
||||||
|
# A newline character.
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
# Character ranges might be problematic outside the C locale.
|
||||||
|
# These definitions help.
|
||||||
|
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||||
|
lower=abcdefghijklmnopqrstuvwxyz
|
||||||
|
digits=0123456789
|
||||||
|
alpha=${upper}${lower}
|
||||||
|
|
||||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
@ -71,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Avoid interferences from the environment.
|
||||||
|
gccflag= dashmflag=
|
||||||
|
|
||||||
# Some modes work just like other modes, but use different flags. We
|
# Some modes work just like other modes, but use different flags. We
|
||||||
# parameterize here, but still list the modes in the big case below,
|
# parameterize here, but still list the modes in the big case below,
|
||||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
|
@ -82,9 +142,32 @@ if test "$depmode" = hp; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$depmode" = dashXmstdout; then
|
if test "$depmode" = dashXmstdout; then
|
||||||
# This is just like dashmstdout with a different argument.
|
# This is just like dashmstdout with a different argument.
|
||||||
dashmflag=-xM
|
dashmflag=-xM
|
||||||
depmode=dashmstdout
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
cygpath_u="cygpath -u -f -"
|
||||||
|
if test "$depmode" = msvcmsys; then
|
||||||
|
# This is just like msvisualcpp but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvisualcpp
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = msvc7msys; then
|
||||||
|
# This is just like msvc7 but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvc7
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = xlc; then
|
||||||
|
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||||
|
gccflag=-qmakedep=gcc,-MF
|
||||||
|
depmode=gcc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$depmode" in
|
case "$depmode" in
|
||||||
|
|
@ -107,8 +190,7 @@ gcc3)
|
||||||
done
|
done
|
||||||
"$@"
|
"$@"
|
||||||
stat=$?
|
stat=$?
|
||||||
if test $stat -eq 0; then :
|
if test $stat -ne 0; then
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
exit $stat
|
exit $stat
|
||||||
fi
|
fi
|
||||||
|
|
@ -116,13 +198,17 @@ gcc3)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
gcc)
|
gcc)
|
||||||
|
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||||
|
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||||
|
## (see the conditional assignment to $gccflag above).
|
||||||
## There are various ways to get dependency output from gcc. Here's
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
## why we pick this rather obscure method:
|
## why we pick this rather obscure method:
|
||||||
## - Don't want to use -MD because we'd like the dependencies to end
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
## up in a subdir. Having to rename by hand is ugly.
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
## (We might end up doing this anyway to support other compilers.)
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
## -MM, not -M (despite what the docs say).
|
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||||
|
## supported by the other compilers which use the 'gcc' depmode.
|
||||||
## - Using -M directly means running the compiler twice (even worse
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
## than renaming).
|
## than renaming).
|
||||||
if test -z "$gccflag"; then
|
if test -z "$gccflag"; then
|
||||||
|
|
@ -130,31 +216,31 @@ gcc)
|
||||||
fi
|
fi
|
||||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
stat=$?
|
stat=$?
|
||||||
if test $stat -eq 0; then :
|
if test $stat -ne 0; then
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
exit $stat
|
exit $stat
|
||||||
fi
|
fi
|
||||||
rm -f "$depfile"
|
rm -f "$depfile"
|
||||||
echo "$object : \\" > "$depfile"
|
echo "$object : \\" > "$depfile"
|
||||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
# The second -e expression handles DOS-style file names with drive
|
||||||
## The second -e expression handles DOS-style file names with drive letters.
|
# letters.
|
||||||
sed -e 's/^[^:]*: / /' \
|
sed -e 's/^[^:]*: / /' \
|
||||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
## This next piece of magic avoids the `deleted header file' problem.
|
## This next piece of magic avoids the "deleted header file" problem.
|
||||||
## The problem is that when a header file which appears in a .P file
|
## The problem is that when a header file which appears in a .P file
|
||||||
## is deleted, the dependency causes make to die (because there is
|
## is deleted, the dependency causes make to die (because there is
|
||||||
## typically no way to rebuild the header). We avoid this by adding
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
## this for us directly.
|
## this for us directly.
|
||||||
tr ' ' '
|
## Some versions of gcc put a space before the ':'. On the theory
|
||||||
' < "$tmpdepfile" |
|
|
||||||
## Some versions of gcc put a space before the `:'. On the theory
|
|
||||||
## that the space means something, we add a space to the output as
|
## that the space means something, we add a space to the output as
|
||||||
## well.
|
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||||
|
## to the object. Take care to not repeat it in the output.
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
@ -172,8 +258,7 @@ sgi)
|
||||||
"$@" -MDupdate "$tmpdepfile"
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
fi
|
fi
|
||||||
stat=$?
|
stat=$?
|
||||||
if test $stat -eq 0; then :
|
if test $stat -ne 0; then
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
exit $stat
|
exit $stat
|
||||||
fi
|
fi
|
||||||
|
|
@ -181,43 +266,41 @@ sgi)
|
||||||
|
|
||||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
echo "$object : \\" > "$depfile"
|
echo "$object : \\" > "$depfile"
|
||||||
|
|
||||||
# Clip off the initial element (the dependent). Don't try to be
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
# clever and replace this with sed code, as IRIX sed won't handle
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
# lines with more than a fixed number of characters (4096 in
|
# lines with more than a fixed number of characters (4096 in
|
||||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||||
# dependency line.
|
# dependency line.
|
||||||
tr ' ' '
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
' < "$tmpdepfile" \
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
|
||||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
| tr "$nl" ' ' >> "$depfile"
|
||||||
tr '
|
echo >> "$depfile"
|
||||||
' ' ' >> $depfile
|
|
||||||
echo >> $depfile
|
|
||||||
|
|
||||||
# The second pass generates a dummy entry for each header file.
|
# The second pass generates a dummy entry for each header file.
|
||||||
tr ' ' '
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
' < "$tmpdepfile" \
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
>> "$depfile"
|
||||||
>> $depfile
|
|
||||||
else
|
else
|
||||||
# The sourcefile does not contain any dependencies, so just
|
make_dummy_depfile
|
||||||
# store a dummy comment line, to avoid errors with the Makefile
|
|
||||||
# "include basename.Plo" scheme.
|
|
||||||
echo "#dummy" > "$depfile"
|
|
||||||
fi
|
fi
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
xlc)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
aix)
|
aix)
|
||||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
# in a .u file. In older versions, this file always lives in the
|
# in a .u file. In older versions, this file always lives in the
|
||||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||||
# start of each line; $object doesn't have directory information.
|
# start of each line; $object doesn't have directory information.
|
||||||
# Version 6 uses the directory in both cases.
|
# Version 6 uses the directory in both cases.
|
||||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
set_dir_from "$object"
|
||||||
test "x$dir" = "x$object" && dir=
|
set_base_from "$object"
|
||||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
tmpdepfile1=$dir$base.u
|
tmpdepfile1=$dir$base.u
|
||||||
tmpdepfile2=$base.u
|
tmpdepfile2=$base.u
|
||||||
|
|
@ -230,9 +313,7 @@ aix)
|
||||||
"$@" -M
|
"$@" -M
|
||||||
fi
|
fi
|
||||||
stat=$?
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
exit $stat
|
exit $stat
|
||||||
fi
|
fi
|
||||||
|
|
@ -241,44 +322,100 @@ aix)
|
||||||
do
|
do
|
||||||
test -f "$tmpdepfile" && break
|
test -f "$tmpdepfile" && break
|
||||||
done
|
done
|
||||||
if test -f "$tmpdepfile"; then
|
aix_post_process_depfile
|
||||||
# Each line is of the form `foo.o: dependent.h'.
|
;;
|
||||||
# Do two passes, one to just change these to
|
|
||||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
tcc)
|
||||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
|
||||||
# That's a tab and a space in the [].
|
# FIXME: That version still under development at the moment of writing.
|
||||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
# Make that this statement remains true also for stable, released
|
||||||
else
|
# versions.
|
||||||
# The sourcefile does not contain any dependencies, so just
|
# It will wrap lines (doesn't matter whether long or short) with a
|
||||||
# store a dummy comment line, to avoid errors with the Makefile
|
# trailing '\', as in:
|
||||||
# "include basename.Plo" scheme.
|
#
|
||||||
echo "#dummy" > "$depfile"
|
# foo.o : \
|
||||||
|
# foo.c \
|
||||||
|
# foo.h \
|
||||||
|
#
|
||||||
|
# It will put a trailing '\' even on the last line, and will use leading
|
||||||
|
# spaces rather than leading tabs (at least since its commit 0394caf7
|
||||||
|
# "Emit spaces for -MD").
|
||||||
|
"$@" -MD -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
fi
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
|
||||||
|
# We have to change lines of the first kind to '$object: \'.
|
||||||
|
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
|
||||||
|
# And for each line of the second kind, we have to emit a 'dep.h:'
|
||||||
|
# dummy dependency, to avoid the deleted-header problem.
|
||||||
|
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
icc)
|
## The order of this option in the case statement is important, since the
|
||||||
# Intel's C compiler understands `-MD -MF file'. However on
|
## shell code in configure will try each of these formats in the order
|
||||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
## listed in this file. A plain '-MD' option would be understood by many
|
||||||
# ICC 7.0 will fill foo.d with something like
|
## compilers, so we must ensure this comes after the gcc and icc options.
|
||||||
# foo.o: sub/foo.c
|
pgcc)
|
||||||
# foo.o: sub/foo.h
|
# Portland's C compiler understands '-MD'.
|
||||||
# which is wrong. We want:
|
# Will always output deps to 'file.d' where file is the root name of the
|
||||||
# sub/foo.o: sub/foo.c
|
# source file under compilation, even if file resides in a subdirectory.
|
||||||
# sub/foo.o: sub/foo.h
|
# The object file name does not affect the name of the '.d' file.
|
||||||
# sub/foo.c:
|
# pgcc 10.2 will output
|
||||||
# sub/foo.h:
|
|
||||||
# ICC 7.1 will output
|
|
||||||
# foo.o: sub/foo.c sub/foo.h
|
# foo.o: sub/foo.c sub/foo.h
|
||||||
# and will wrap long lines using \ :
|
# and will wrap long lines using '\' :
|
||||||
# foo.o: sub/foo.c ... \
|
# foo.o: sub/foo.c ... \
|
||||||
# sub/foo.h ... \
|
# sub/foo.h ... \
|
||||||
# ...
|
# ...
|
||||||
|
set_dir_from "$object"
|
||||||
|
# Use the source, not the object, to determine the base name, since
|
||||||
|
# that's sadly what pgcc will do too.
|
||||||
|
set_base_from "$source"
|
||||||
|
tmpdepfile=$base.d
|
||||||
|
|
||||||
"$@" -MD -MF "$tmpdepfile"
|
# For projects that build the same source file twice into different object
|
||||||
stat=$?
|
# files, the pgcc approach of using the *source* file root name can cause
|
||||||
if test $stat -eq 0; then :
|
# problems in parallel builds. Use a locking strategy to avoid stomping on
|
||||||
else
|
# the same $tmpdepfile.
|
||||||
|
lockdir=$base.d-lock
|
||||||
|
trap "
|
||||||
|
echo '$0: caught signal, cleaning up...' >&2
|
||||||
|
rmdir '$lockdir'
|
||||||
|
exit 1
|
||||||
|
" 1 2 13 15
|
||||||
|
numtries=100
|
||||||
|
i=$numtries
|
||||||
|
while test $i -gt 0; do
|
||||||
|
# mkdir is a portable test-and-set.
|
||||||
|
if mkdir "$lockdir" 2>/dev/null; then
|
||||||
|
# This process acquired the lock.
|
||||||
|
"$@" -MD
|
||||||
|
stat=$?
|
||||||
|
# Release the lock.
|
||||||
|
rmdir "$lockdir"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
# If the lock is being held by a different process, wait
|
||||||
|
# until the winning process is done or we timeout.
|
||||||
|
while test -d "$lockdir" && test $i -gt 0; do
|
||||||
|
sleep 1
|
||||||
|
i=`expr $i - 1`
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
i=`expr $i - 1`
|
||||||
|
done
|
||||||
|
trap - 1 2 13 15
|
||||||
|
if test $i -le 0; then
|
||||||
|
echo "$0: failed to acquire lock after $numtries attempts" >&2
|
||||||
|
echo "$0: check lockdir '$lockdir'" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $stat -ne 0; then
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
exit $stat
|
exit $stat
|
||||||
fi
|
fi
|
||||||
|
|
@ -290,8 +427,8 @@ icc)
|
||||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
# correctly. Breaking it into two sed invocations is a workaround.
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
|
||||||
sed -e 's/$/ :/' >> "$depfile"
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
@ -302,9 +439,8 @@ hp2)
|
||||||
# 'foo.d', which lands next to the object file, wherever that
|
# 'foo.d', which lands next to the object file, wherever that
|
||||||
# happens to be.
|
# happens to be.
|
||||||
# Much of this is similar to the tru64 case; see comments there.
|
# Much of this is similar to the tru64 case; see comments there.
|
||||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
set_dir_from "$object"
|
||||||
test "x$dir" = "x$object" && dir=
|
set_base_from "$object"
|
||||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
tmpdepfile1=$dir$base.d
|
tmpdepfile1=$dir$base.d
|
||||||
tmpdepfile2=$dir.libs/$base.d
|
tmpdepfile2=$dir.libs/$base.d
|
||||||
|
|
@ -315,8 +451,7 @@ hp2)
|
||||||
"$@" +Maked
|
"$@" +Maked
|
||||||
fi
|
fi
|
||||||
stat=$?
|
stat=$?
|
||||||
if test $stat -eq 0; then :
|
if test $stat -ne 0; then
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
exit $stat
|
exit $stat
|
||||||
fi
|
fi
|
||||||
|
|
@ -326,72 +461,107 @@ hp2)
|
||||||
test -f "$tmpdepfile" && break
|
test -f "$tmpdepfile" && break
|
||||||
done
|
done
|
||||||
if test -f "$tmpdepfile"; then
|
if test -f "$tmpdepfile"; then
|
||||||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||||
# Add `dependent.h:' lines.
|
# Add 'dependent.h:' lines.
|
||||||
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
|
sed -ne '2,${
|
||||||
|
s/^ *//
|
||||||
|
s/ \\*$//
|
||||||
|
s/$/:/
|
||||||
|
p
|
||||||
|
}' "$tmpdepfile" >> "$depfile"
|
||||||
else
|
else
|
||||||
echo "#dummy" > "$depfile"
|
make_dummy_depfile
|
||||||
fi
|
fi
|
||||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
tru64)
|
tru64)
|
||||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
# dependencies in `foo.d' instead, so we check for that too.
|
# dependencies in 'foo.d' instead, so we check for that too.
|
||||||
# Subdirectories are respected.
|
# Subdirectories are respected.
|
||||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
set_dir_from "$object"
|
||||||
test "x$dir" = "x$object" && dir=
|
set_base_from "$object"
|
||||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
|
||||||
|
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
# With Tru64 cc, shared objects can also be used to make a
|
# Libtool generates 2 separate objects for the 2 libraries. These
|
||||||
# static library. This mechanism is used in libtool 1.4 series to
|
# two compilations output dependencies in $dir.libs/$base.o.d and
|
||||||
# handle both shared and static libraries in a single compilation.
|
# in $dir$base.o.d. We have to check for both files, because
|
||||||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
# one of the two compilations can be disabled. We should prefer
|
||||||
#
|
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||||
# With libtool 1.5 this exception was removed, and libtool now
|
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||||
# generates 2 separate objects for the 2 libraries. These two
|
# the former would cause a distcleancheck panic.
|
||||||
# compilations output dependencies in $dir.libs/$base.o.d and
|
tmpdepfile1=$dir$base.o.d # libtool 1.5
|
||||||
# in $dir$base.o.d. We have to check for both files, because
|
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
|
||||||
# one of the two compilations can be disabled. We should prefer
|
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
"$@" -Wc,-MD
|
||||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
else
|
||||||
# the former would cause a distcleancheck panic.
|
tmpdepfile1=$dir$base.d
|
||||||
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
tmpdepfile2=$dir$base.d
|
||||||
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
tmpdepfile3=$dir$base.d
|
||||||
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
"$@" -MD
|
||||||
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
fi
|
||||||
"$@" -Wc,-MD
|
|
||||||
else
|
|
||||||
tmpdepfile1=$dir$base.o.d
|
|
||||||
tmpdepfile2=$dir$base.d
|
|
||||||
tmpdepfile3=$dir$base.d
|
|
||||||
tmpdepfile4=$dir$base.d
|
|
||||||
"$@" -MD
|
|
||||||
fi
|
|
||||||
|
|
||||||
stat=$?
|
stat=$?
|
||||||
if test $stat -eq 0; then :
|
if test $stat -ne 0; then
|
||||||
else
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
exit $stat
|
||||||
exit $stat
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
do
|
do
|
||||||
test -f "$tmpdepfile" && break
|
test -f "$tmpdepfile" && break
|
||||||
done
|
done
|
||||||
if test -f "$tmpdepfile"; then
|
# Same post-processing that is required for AIX mode.
|
||||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
aix_post_process_depfile
|
||||||
# That's a tab and a space in the [].
|
;;
|
||||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
|
||||||
else
|
msvc7)
|
||||||
echo "#dummy" > "$depfile"
|
if test "$libtool" = yes; then
|
||||||
fi
|
showIncludes=-Wc,-showIncludes
|
||||||
rm -f "$tmpdepfile"
|
else
|
||||||
;;
|
showIncludes=-showIncludes
|
||||||
|
fi
|
||||||
|
"$@" $showIncludes > "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||||
|
if test $stat -ne 0; then
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# The first sed program below extracts the file names and escapes
|
||||||
|
# backslashes for cygpath. The second sed program outputs the file
|
||||||
|
# name when reading, but also accumulates all include files in the
|
||||||
|
# hold buffer in order to output them again at the end. This only
|
||||||
|
# works with sed implementations that can handle large buffers.
|
||||||
|
sed < "$tmpdepfile" -n '
|
||||||
|
/^Note: including file: *\(.*\)/ {
|
||||||
|
s//\1/
|
||||||
|
s/\\/\\\\/g
|
||||||
|
p
|
||||||
|
}' | $cygpath_u | sort -u | sed -n '
|
||||||
|
s/ /\\ /g
|
||||||
|
s/\(.*\)/'"$tab"'\1 \\/p
|
||||||
|
s/.\(.*\) \\/\1:/
|
||||||
|
H
|
||||||
|
$ {
|
||||||
|
s/.*/'"$tab"'/
|
||||||
|
G
|
||||||
|
p
|
||||||
|
}' >> "$depfile"
|
||||||
|
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc7msys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
#nosideeffect)
|
#nosideeffect)
|
||||||
# This comment above is used by automake to tell side-effect
|
# This comment above is used by automake to tell side-effect
|
||||||
|
|
@ -404,13 +574,13 @@ dashmstdout)
|
||||||
|
|
||||||
# Remove the call to Libtool.
|
# Remove the call to Libtool.
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
while test $1 != '--mode=compile'; do
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove `-o $object'.
|
# Remove '-o $object'.
|
||||||
IFS=" "
|
IFS=" "
|
||||||
for arg
|
for arg
|
||||||
do
|
do
|
||||||
|
|
@ -430,18 +600,18 @@ dashmstdout)
|
||||||
done
|
done
|
||||||
|
|
||||||
test -z "$dashmflag" && dashmflag=-M
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
# Require at least two characters before searching for `:'
|
# Require at least two characters before searching for ':'
|
||||||
# in the target name. This is to cope with DOS-style filenames:
|
# in the target name. This is to cope with DOS-style filenames:
|
||||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||||
"$@" $dashmflag |
|
"$@" $dashmflag |
|
||||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
||||||
rm -f "$depfile"
|
rm -f "$depfile"
|
||||||
cat < "$tmpdepfile" > "$depfile"
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
tr ' ' '
|
# Some versions of the HPUX 10.20 sed can't process this sed invocation
|
||||||
' < "$tmpdepfile" | \
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
@ -455,41 +625,51 @@ makedepend)
|
||||||
"$@" || exit $?
|
"$@" || exit $?
|
||||||
# Remove any Libtool call
|
# Remove any Libtool call
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
while test $1 != '--mode=compile'; do
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
# X makedepend
|
# X makedepend
|
||||||
shift
|
shift
|
||||||
cleared=no
|
cleared=no eat=no
|
||||||
for arg in "$@"; do
|
for arg
|
||||||
|
do
|
||||||
case $cleared in
|
case $cleared in
|
||||||
no)
|
no)
|
||||||
set ""; shift
|
set ""; shift
|
||||||
cleared=yes ;;
|
cleared=yes ;;
|
||||||
esac
|
esac
|
||||||
|
if test $eat = yes; then
|
||||||
|
eat=no
|
||||||
|
continue
|
||||||
|
fi
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
-D*|-I*)
|
-D*|-I*)
|
||||||
set fnord "$@" "$arg"; shift ;;
|
set fnord "$@" "$arg"; shift ;;
|
||||||
# Strip any option that makedepend may not understand. Remove
|
# Strip any option that makedepend may not understand. Remove
|
||||||
# the object too, otherwise makedepend will parse it as a source file.
|
# the object too, otherwise makedepend will parse it as a source file.
|
||||||
|
-arch)
|
||||||
|
eat=yes ;;
|
||||||
-*|$object)
|
-*|$object)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
set fnord "$@" "$arg"; shift ;;
|
set fnord "$@" "$arg"; shift ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||||
touch "$tmpdepfile"
|
touch "$tmpdepfile"
|
||||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
rm -f "$depfile"
|
rm -f "$depfile"
|
||||||
cat < "$tmpdepfile" > "$depfile"
|
# makedepend may prepend the VPATH from the source file name to the object.
|
||||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||||
' | \
|
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
# Some versions of the HPUX 10.20 sed can't process the last invocation
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
sed '1,2d' "$tmpdepfile" \
|
||||||
|
| tr ' ' "$nl" \
|
||||||
|
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
@ -500,13 +680,13 @@ cpp)
|
||||||
|
|
||||||
# Remove the call to Libtool.
|
# Remove the call to Libtool.
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
while test $1 != '--mode=compile'; do
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove `-o $object'.
|
# Remove '-o $object'.
|
||||||
IFS=" "
|
IFS=" "
|
||||||
for arg
|
for arg
|
||||||
do
|
do
|
||||||
|
|
@ -525,10 +705,10 @@ cpp)
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
"$@" -E |
|
"$@" -E \
|
||||||
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
sed '$ s: \\$::' > "$tmpdepfile"
|
| sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
rm -f "$depfile"
|
rm -f "$depfile"
|
||||||
echo "$object : \\" > "$depfile"
|
echo "$object : \\" > "$depfile"
|
||||||
cat < "$tmpdepfile" >> "$depfile"
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
|
@ -538,35 +718,56 @@ cpp)
|
||||||
|
|
||||||
msvisualcpp)
|
msvisualcpp)
|
||||||
# Important note: in order to support this mode, a compiler *must*
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
# always write the preprocessed file to stdout, regardless of -o,
|
# always write the preprocessed file to stdout.
|
||||||
# because we must use -o when running libtool.
|
|
||||||
"$@" || exit $?
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
IFS=" "
|
IFS=" "
|
||||||
for arg
|
for arg
|
||||||
do
|
do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||||
set fnord "$@"
|
set fnord "$@"
|
||||||
shift
|
shift
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
set fnord "$@" "$arg"
|
set fnord "$@" "$arg"
|
||||||
shift
|
shift
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
"$@" -E |
|
"$@" -E 2>/dev/null |
|
||||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||||
rm -f "$depfile"
|
rm -f "$depfile"
|
||||||
echo "$object : \\" > "$depfile"
|
echo "$object : \\" > "$depfile"
|
||||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||||
echo " " >> "$depfile"
|
echo "$tab" >> "$depfile"
|
||||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
msvcmsys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
none)
|
none)
|
||||||
exec "$@"
|
exec "$@"
|
||||||
;;
|
;;
|
||||||
|
|
@ -582,8 +783,9 @@ exit 0
|
||||||
# Local Variables:
|
# Local Variables:
|
||||||
# mode: shell-script
|
# mode: shell-script
|
||||||
# sh-indentation: 2
|
# sh-indentation: 2
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
# time-stamp-start: "scriptversion="
|
# time-stamp-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
# time-stamp-end: "$"
|
# time-stamp-time-zone: "UTC0"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
|
|
||||||
|
|
@ -1,46 +1,35 @@
|
||||||
## Process this file with automake to get Makefile.in
|
## Process this file with automake to get Makefile.in
|
||||||
|
|
||||||
info_TEXINFOS = tinc.texi
|
info_TEXINFOS = tinc.texi
|
||||||
|
tinc_TEXINFOS = tincinclude.texi
|
||||||
|
|
||||||
man_MANS = tincd.8 tinc.conf.5
|
man_MANS = tincd.8 tinc.conf.5
|
||||||
|
|
||||||
EXTRA_DIST = tincinclude.texi.in tincd.8.in tinc.conf.5.in sample-config.tar.gz
|
EXTRA_DIST = tincinclude.texi.in tincd.8.in tinc.conf.5.in sample-config
|
||||||
|
|
||||||
CLEANFILES = *.html tinc.info tincd.8 tinc.conf.5 tincinclude.texi
|
CLEANFILES = *.html tincd.8 tinc.conf.5 tincinclude.texi
|
||||||
|
|
||||||
# Use `ginstall' in the definition of man_MANS to avoid
|
|
||||||
# confusion with the `install' target. The install rule transforms `ginstall'
|
|
||||||
# to install before applying any user-specified name transformations.
|
|
||||||
transform = s/ginstall/install/; @program_transform_name@
|
|
||||||
|
|
||||||
# For additional rules usually of interest only to the maintainer,
|
|
||||||
# see GNUmakefile and Makefile.maint.
|
|
||||||
|
|
||||||
sample-config.tar.gz: sample-config
|
|
||||||
GZIP=$(GZIP_ENV) $(AMTAR) chozf sample-config.tar.gz --exclude .svn sample-config
|
|
||||||
|
|
||||||
texi2html: tinc.texi
|
texi2html: tinc.texi
|
||||||
texi2html -split=chapter tinc.texi
|
$(AM_V_GEN)texi2html -split=chapter $<
|
||||||
|
|
||||||
tincd.8.html: tincd.8
|
tincd.8.html: tincd.8
|
||||||
w3mman2html $< > $@
|
$(AM_V_GEN)w3mman2html $< > $@
|
||||||
|
|
||||||
tinc.conf.5.html: tinc.conf.5
|
tinc.conf.5.html: tinc.conf.5
|
||||||
w3mman2html $< > $@
|
$(AM_V_GEN)w3mman2html $< > $@
|
||||||
|
|
||||||
substitute = sed \
|
substitute = sed \
|
||||||
-e s,'@PACKAGE\@',"$(PACKAGE)",g \
|
-e s,'@PACKAGE\@',"$(PACKAGE)",g \
|
||||||
-e s,'@VERSION\@',"$(VERSION)",g \
|
-e s,'@VERSION\@',"$(VERSION)",g \
|
||||||
-e s,'@sysconfdir\@',"$(sysconfdir)",g \
|
-e s,'@sysconfdir\@',"$(sysconfdir)",g \
|
||||||
|
-e s,'@runstatedir\@',"$(runstatedir)",g \
|
||||||
-e s,'@localstatedir\@',"$(localstatedir)",g
|
-e s,'@localstatedir\@',"$(localstatedir)",g
|
||||||
|
|
||||||
tincd.8: tincd.8.in
|
tincd.8: $(srcdir)/tincd.8.in
|
||||||
$(substitute) tincd.8.in > tincd.8
|
$(AM_V_GEN)$(substitute) $(srcdir)/tincd.8.in > $@
|
||||||
|
|
||||||
tinc.conf.5: tinc.conf.5.in
|
tinc.conf.5: $(srcdir)/tinc.conf.5.in
|
||||||
$(substitute) tinc.conf.5.in > tinc.conf.5
|
$(AM_V_GEN)$(substitute) $(srcdir)/tinc.conf.5.in > $@
|
||||||
|
|
||||||
tincinclude.texi: tincinclude.texi.in
|
tincinclude.texi: $(srcdir)/tincinclude.texi.in
|
||||||
$(substitute) tincinclude.texi.in > tincinclude.texi
|
$(AM_V_GEN)$(substitute) $(srcdir)/tincinclude.texi.in > $@
|
||||||
|
|
||||||
tinc.texi: tincinclude.texi
|
|
||||||
|
|
|
||||||
650
doc/Makefile.in
650
doc/Makefile.in
|
|
@ -1,8 +1,8 @@
|
||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.16.2 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
@ -14,14 +14,71 @@
|
||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
|
am__is_gnu_make = { \
|
||||||
|
if test -z '$(MAKELEVEL)'; then \
|
||||||
|
false; \
|
||||||
|
elif test -n '$(MAKE_HOST)'; then \
|
||||||
|
true; \
|
||||||
|
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||||
|
true; \
|
||||||
|
else \
|
||||||
|
false; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
|
am__make_running_with_option = \
|
||||||
|
case $${target_option-} in \
|
||||||
|
?) ;; \
|
||||||
|
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||||
|
"target option '$${target_option-}' specified" >&2; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
has_opt=no; \
|
||||||
|
sane_makeflags=$$MAKEFLAGS; \
|
||||||
|
if $(am__is_gnu_make); then \
|
||||||
|
sane_makeflags=$$MFLAGS; \
|
||||||
|
else \
|
||||||
|
case $$MAKEFLAGS in \
|
||||||
|
*\\[\ \ ]*) \
|
||||||
|
bs=\\; \
|
||||||
|
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||||
|
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||||
|
esac; \
|
||||||
|
fi; \
|
||||||
|
skip_next=no; \
|
||||||
|
strip_trailopt () \
|
||||||
|
{ \
|
||||||
|
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||||
|
}; \
|
||||||
|
for flg in $$sane_makeflags; do \
|
||||||
|
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||||
|
case $$flg in \
|
||||||
|
*=*|--*) continue;; \
|
||||||
|
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||||
|
-*I?*) strip_trailopt 'I';; \
|
||||||
|
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||||
|
-*O?*) strip_trailopt 'O';; \
|
||||||
|
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||||
|
-*l?*) strip_trailopt 'l';; \
|
||||||
|
-[dEDm]) skip_next=yes;; \
|
||||||
|
-[JT]) skip_next=yes;; \
|
||||||
|
esac; \
|
||||||
|
case $$flg in \
|
||||||
|
*$$target_option*) has_opt=yes; break;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
test $$has_opt = yes
|
||||||
|
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||||
|
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
install_sh_SCRIPT = $(install_sh) -c
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
NORMAL_INSTALL = :
|
NORMAL_INSTALL = :
|
||||||
PRE_INSTALL = :
|
PRE_INSTALL = :
|
||||||
POST_INSTALL = :
|
POST_INSTALL = :
|
||||||
|
|
@ -31,23 +88,65 @@ POST_UNINSTALL = :
|
||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
subdir = doc
|
subdir = doc
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in texinfo.tex
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
|
||||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
|
$(top_srcdir)/m4/ax_append_flag.m4 \
|
||||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
$(top_srcdir)/m4/ax_cflags_warn_all.m4 \
|
||||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
|
$(top_srcdir)/m4/ax_check_compile_flag.m4 \
|
||||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \
|
$(top_srcdir)/m4/ax_check_link_flag.m4 \
|
||||||
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
|
$(top_srcdir)/m4/ax_require_defined.m4 $(top_srcdir)/m4/lzo.m4 \
|
||||||
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in
|
$(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/zlib.m4 \
|
||||||
|
$(top_srcdir)/configure.ac
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
|
am__v_P_0 = false
|
||||||
|
am__v_P_1 = :
|
||||||
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||||
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||||
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
|
am__v_GEN_1 =
|
||||||
|
AM_V_at = $(am__v_at_@AM_V@)
|
||||||
|
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||||
|
am__v_at_0 = @
|
||||||
|
am__v_at_1 =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
INFO_DEPS = tinc.info
|
AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
|
||||||
|
am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
|
||||||
|
am__v_DVIPS_0 = @echo " DVIPS " $@;
|
||||||
|
am__v_DVIPS_1 =
|
||||||
|
AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
|
||||||
|
am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
|
||||||
|
am__v_MAKEINFO_0 = @echo " MAKEINFO" $@;
|
||||||
|
am__v_MAKEINFO_1 =
|
||||||
|
AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
|
||||||
|
am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
|
||||||
|
am__v_INFOHTML_0 = @echo " INFOHTML" $@;
|
||||||
|
am__v_INFOHTML_1 =
|
||||||
|
AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
|
||||||
|
am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
|
||||||
|
am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@;
|
||||||
|
am__v_TEXI2DVI_1 =
|
||||||
|
AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
|
||||||
|
am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
|
||||||
|
am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@;
|
||||||
|
am__v_TEXI2PDF_1 =
|
||||||
|
AM_V_texinfo = $(am__v_texinfo_@AM_V@)
|
||||||
|
am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
|
||||||
|
am__v_texinfo_0 = -q
|
||||||
|
am__v_texinfo_1 =
|
||||||
|
AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
|
||||||
|
am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
|
||||||
|
am__v_texidevnull_0 = > /dev/null
|
||||||
|
am__v_texidevnull_1 =
|
||||||
|
INFO_DEPS = $(srcdir)/tinc.info
|
||||||
am__TEXINFO_TEX_DIR = $(srcdir)
|
am__TEXINFO_TEX_DIR = $(srcdir)
|
||||||
DVIS = tinc.dvi
|
DVIS = tinc.dvi
|
||||||
PDFS = tinc.pdf
|
PDFS = tinc.pdf
|
||||||
|
|
@ -59,6 +158,11 @@ TEXI2PDF = $(TEXI2DVI) --pdf --batch
|
||||||
MAKEINFOHTML = $(MAKEINFO) --html
|
MAKEINFOHTML = $(MAKEINFO) --html
|
||||||
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
|
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
|
||||||
DVIPS = dvips
|
DVIPS = dvips
|
||||||
|
am__can_run_installinfo = \
|
||||||
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
|
n|no|NO) false;; \
|
||||||
|
*) (install-info --version) >/dev/null 2>&1;; \
|
||||||
|
esac
|
||||||
am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man5dir)" \
|
am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man5dir)" \
|
||||||
"$(DESTDIR)$(man8dir)"
|
"$(DESTDIR)$(man8dir)"
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
|
@ -66,20 +170,38 @@ am__vpath_adj = case $$p in \
|
||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
*) f=$$p;; \
|
*) f=$$p;; \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__install_max = 40
|
||||||
|
am__nobase_strip_setup = \
|
||||||
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
am__uninstall_files_from_dir = { \
|
||||||
|
test -z "$$files" \
|
||||||
|
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||||
|
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||||
|
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||||
|
}
|
||||||
man5dir = $(mandir)/man5
|
man5dir = $(mandir)/man5
|
||||||
man8dir = $(mandir)/man8
|
man8dir = $(mandir)/man8
|
||||||
NROFF = nroff
|
NROFF = nroff
|
||||||
MANS = $(man_MANS)
|
MANS = $(man_MANS)
|
||||||
|
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||||
|
am__DIST_COMMON = $(srcdir)/Makefile.in $(tinc_TEXINFOS) texinfo.tex
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
|
||||||
# Use `ginstall' in the definition of man_MANS to avoid
|
|
||||||
# confusion with the `install' target. The install rule transforms `ginstall'
|
|
||||||
# to install before applying any user-specified name transformations.
|
|
||||||
transform = s/ginstall/install/; @program_transform_name@
|
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
ALLOCA = @ALLOCA@
|
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
AUTOCONF = @AUTOCONF@
|
AUTOCONF = @AUTOCONF@
|
||||||
AUTOHEADER = @AUTOHEADER@
|
AUTOHEADER = @AUTOHEADER@
|
||||||
AUTOMAKE = @AUTOMAKE@
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
|
@ -97,46 +219,31 @@ ECHO_N = @ECHO_N@
|
||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
GMSGFMT = @GMSGFMT@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
INCLUDES = @INCLUDES@
|
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
INTLLIBS = @INTLLIBS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
LIBICONV = @LIBICONV@
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
LIBOBJS = @LIBOBJS@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
LN_S = @LN_S@
|
|
||||||
LTLIBICONV = @LTLIBICONV@
|
|
||||||
LTLIBINTL = @LTLIBINTL@
|
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
MAINT = @MAINT@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
MKDIR_P = @MKDIR_P@
|
MKDIR_P = @MKDIR_P@
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
MSGFMT = @MSGFMT@
|
|
||||||
MSGMERGE = @MSGMERGE@
|
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
PACKAGE = @PACKAGE@
|
PACKAGE = @PACKAGE@
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
POSUB = @POSUB@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
SET_MAKE = @SET_MAKE@
|
||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
USE_NLS = @USE_NLS@
|
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
XGETTEXT = @XGETTEXT@
|
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
|
@ -179,128 +286,140 @@ pdfdir = @pdfdir@
|
||||||
prefix = @prefix@
|
prefix = @prefix@
|
||||||
program_transform_name = @program_transform_name@
|
program_transform_name = @program_transform_name@
|
||||||
psdir = @psdir@
|
psdir = @psdir@
|
||||||
|
runstatedir = @runstatedir@
|
||||||
sbindir = @sbindir@
|
sbindir = @sbindir@
|
||||||
sharedstatedir = @sharedstatedir@
|
sharedstatedir = @sharedstatedir@
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
|
systemd_path = @systemd_path@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
info_TEXINFOS = tinc.texi
|
info_TEXINFOS = tinc.texi
|
||||||
|
tinc_TEXINFOS = tincinclude.texi
|
||||||
man_MANS = tincd.8 tinc.conf.5
|
man_MANS = tincd.8 tinc.conf.5
|
||||||
EXTRA_DIST = tincinclude.texi.in tincd.8.in tinc.conf.5.in sample-config.tar.gz
|
EXTRA_DIST = tincinclude.texi.in tincd.8.in tinc.conf.5.in sample-config
|
||||||
CLEANFILES = *.html tinc.info tincd.8 tinc.conf.5 tincinclude.texi
|
CLEANFILES = *.html tincd.8 tinc.conf.5 tincinclude.texi
|
||||||
substitute = sed \
|
substitute = sed \
|
||||||
-e s,'@PACKAGE\@',"$(PACKAGE)",g \
|
-e s,'@PACKAGE\@',"$(PACKAGE)",g \
|
||||||
-e s,'@VERSION\@',"$(VERSION)",g \
|
-e s,'@VERSION\@',"$(VERSION)",g \
|
||||||
-e s,'@sysconfdir\@',"$(sysconfdir)",g \
|
-e s,'@sysconfdir\@',"$(sysconfdir)",g \
|
||||||
|
-e s,'@runstatedir\@',"$(runstatedir)",g \
|
||||||
-e s,'@localstatedir\@',"$(localstatedir)",g
|
-e s,'@localstatedir\@',"$(localstatedir)",g
|
||||||
|
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .dvi .ps
|
.SUFFIXES: .dvi .html .info .pdf .ps .texi
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu doc/Makefile
|
$(AUTOMAKE) --gnu doc/Makefile
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
*config.status*) \
|
*config.status*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
*) \
|
*) \
|
||||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||||
esac;
|
esac;
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
tinc.info: tinc.texi
|
.texi.info:
|
||||||
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
||||||
|
am__cwd=`pwd` && $(am__cd) $(srcdir) && \
|
||||||
rm -rf $$backupdir && mkdir $$backupdir && \
|
rm -rf $$backupdir && mkdir $$backupdir && \
|
||||||
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
|
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
|
||||||
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
||||||
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
||||||
done; \
|
done; \
|
||||||
else :; fi && \
|
else :; fi && \
|
||||||
|
cd "$$am__cwd"; \
|
||||||
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||||
-o $@ `test -f 'tinc.texi' || echo '$(srcdir)/'`tinc.texi; \
|
-o $@ $<; \
|
||||||
then \
|
then \
|
||||||
rc=0; \
|
rc=0; \
|
||||||
|
$(am__cd) $(srcdir); \
|
||||||
else \
|
else \
|
||||||
rc=$$?; \
|
rc=$$?; \
|
||||||
|
$(am__cd) $(srcdir) && \
|
||||||
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
|
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
|
||||||
fi; \
|
fi; \
|
||||||
rm -rf $$backupdir; exit $$rc
|
rm -rf $$backupdir; exit $$rc
|
||||||
|
|
||||||
tinc.dvi: tinc.texi
|
.texi.dvi:
|
||||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||||
$(TEXI2DVI) -o $@ `test -f 'tinc.texi' || echo '$(srcdir)/'`tinc.texi
|
$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
|
||||||
|
$<
|
||||||
|
|
||||||
tinc.pdf: tinc.texi
|
.texi.pdf:
|
||||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||||
$(TEXI2PDF) -o $@ `test -f 'tinc.texi' || echo '$(srcdir)/'`tinc.texi
|
$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
|
||||||
|
$<
|
||||||
|
|
||||||
tinc.html: tinc.texi
|
.texi.html:
|
||||||
rm -rf $(@:.html=.htp)
|
$(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
|
||||||
if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||||
-o $(@:.html=.htp) `test -f 'tinc.texi' || echo '$(srcdir)/'`tinc.texi; \
|
-o $(@:.html=.htp) $<; \
|
||||||
then \
|
then \
|
||||||
rm -rf $@; \
|
rm -rf $@ && mv $(@:.html=.htp) $@; \
|
||||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
|
||||||
mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
|
|
||||||
else \
|
else \
|
||||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
rm -rf $(@:.html=.htp); exit 1; \
|
||||||
rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
fi
|
||||||
|
$(srcdir)/tinc.info: tinc.texi $(tinc_TEXINFOS)
|
||||||
|
tinc.dvi: tinc.texi $(tinc_TEXINFOS)
|
||||||
|
tinc.pdf: tinc.texi $(tinc_TEXINFOS)
|
||||||
|
tinc.html: tinc.texi $(tinc_TEXINFOS)
|
||||||
.dvi.ps:
|
.dvi.ps:
|
||||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
$(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||||
$(DVIPS) -o $@ $<
|
$(DVIPS) $(AM_V_texinfo) -o $@ $<
|
||||||
|
|
||||||
uninstall-dvi-am:
|
uninstall-dvi-am:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(DVIS)'; for p in $$list; do \
|
@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
for p in $$list; do \
|
||||||
|
$(am__strip_dir) \
|
||||||
echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
|
echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
|
||||||
rm -f "$(DESTDIR)$(dvidir)/$$f"; \
|
rm -f "$(DESTDIR)$(dvidir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-html-am:
|
uninstall-html-am:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(HTMLS)'; for p in $$list; do \
|
@list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
for p in $$list; do \
|
||||||
|
$(am__strip_dir) \
|
||||||
echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
|
echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
|
||||||
rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
|
rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-info-am:
|
uninstall-info-am:
|
||||||
@$(PRE_UNINSTALL)
|
@$(PRE_UNINSTALL)
|
||||||
@if test -d '$(DESTDIR)$(infodir)' && \
|
@if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
|
||||||
(install-info --version && \
|
|
||||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
|
||||||
list='$(INFO_DEPS)'; \
|
list='$(INFO_DEPS)'; \
|
||||||
for file in $$list; do \
|
for file in $$list; do \
|
||||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||||
echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
|
echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
|
||||||
install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
|
if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
|
||||||
|
then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
|
||||||
done; \
|
done; \
|
||||||
else :; fi
|
else :; fi
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
|
|
@ -316,16 +435,18 @@ uninstall-info-am:
|
||||||
|
|
||||||
uninstall-pdf-am:
|
uninstall-pdf-am:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(PDFS)'; for p in $$list; do \
|
@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
for p in $$list; do \
|
||||||
|
$(am__strip_dir) \
|
||||||
echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
|
echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
|
||||||
rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
|
rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-ps-am:
|
uninstall-ps-am:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(PSS)'; for p in $$list; do \
|
@list='$(PSS)'; test -n "$(psdir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
for p in $$list; do \
|
||||||
|
$(am__strip_dir) \
|
||||||
echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
|
echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
|
||||||
rm -f "$(DESTDIR)$(psdir)/$$f"; \
|
rm -f "$(DESTDIR)$(psdir)/$$f"; \
|
||||||
done
|
done
|
||||||
|
|
@ -342,16 +463,18 @@ dist-info: $(INFO_DEPS)
|
||||||
for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
|
for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
|
||||||
if test -f $$file; then \
|
if test -f $$file; then \
|
||||||
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
|
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
|
||||||
test -f $(distdir)/$$relfile || \
|
test -f "$(distdir)/$$relfile" || \
|
||||||
cp -p $$file $(distdir)/$$relfile; \
|
cp -p $$file "$(distdir)/$$relfile"; \
|
||||||
else :; fi; \
|
else :; fi; \
|
||||||
done; \
|
done; \
|
||||||
done
|
done
|
||||||
|
|
||||||
mostlyclean-aminfo:
|
mostlyclean-aminfo:
|
||||||
-rm -rf tinc.aux tinc.cp tinc.cps tinc.fn tinc.fns tinc.ky tinc.kys tinc.log \
|
-rm -rf tinc.t2d tinc.t2p
|
||||||
tinc.pg tinc.pgs tinc.tmp tinc.toc tinc.tp tinc.tps tinc.vr \
|
|
||||||
tinc.vrs tinc.dvi tinc.pdf tinc.ps tinc.html
|
clean-aminfo:
|
||||||
|
-test -z "tinc.dvi tinc.pdf tinc.ps tinc.html" \
|
||||||
|
|| rm -rf tinc.dvi tinc.pdf tinc.ps tinc.html
|
||||||
|
|
||||||
maintainer-clean-aminfo:
|
maintainer-clean-aminfo:
|
||||||
@list='$(INFO_DEPS)'; for i in $$list; do \
|
@list='$(INFO_DEPS)'; for i in $$list; do \
|
||||||
|
|
@ -359,104 +482,103 @@ maintainer-clean-aminfo:
|
||||||
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
||||||
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
||||||
done
|
done
|
||||||
install-man5: $(man5_MANS) $(man_MANS)
|
install-man5: $(man_MANS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
|
@list1=''; \
|
||||||
@list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
|
list2='$(man_MANS)'; \
|
||||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
test -n "$(man5dir)" \
|
||||||
for i in $$l2; do \
|
&& test -n "`echo $$list1$$list2`" \
|
||||||
case "$$i" in \
|
|| exit 0; \
|
||||||
*.5*) list="$$list $$i" ;; \
|
echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
|
||||||
esac; \
|
$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
|
||||||
|
{ for i in $$list1; do echo "$$i"; done; \
|
||||||
|
if test -n "$$list2"; then \
|
||||||
|
for i in $$list2; do echo "$$i"; done \
|
||||||
|
| sed -n '/\.5[a-z]*$$/p'; \
|
||||||
|
fi; \
|
||||||
|
} | while read p; do \
|
||||||
|
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
echo "$$d$$p"; echo "$$p"; \
|
||||||
|
done | \
|
||||||
|
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
|
||||||
|
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||||
|
sed 'N;N;s,\n, ,g' | { \
|
||||||
|
list=; while read file base inst; do \
|
||||||
|
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||||
|
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
|
||||||
|
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
|
||||||
|
fi; \
|
||||||
done; \
|
done; \
|
||||||
for i in $$list; do \
|
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
while read files; do \
|
||||||
else file=$$i; fi; \
|
test -z "$$files" || { \
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
|
||||||
case "$$ext" in \
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
|
||||||
5*) ;; \
|
done; }
|
||||||
*) ext='5' ;; \
|
|
||||||
esac; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
|
|
||||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \
|
|
||||||
done
|
|
||||||
uninstall-man5:
|
uninstall-man5:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
|
@list=''; test -n "$(man5dir)" || exit 0; \
|
||||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||||
for i in $$l2; do \
|
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||||
case "$$i" in \
|
sed -n '/\.5[a-z]*$$/p'; \
|
||||||
*.5*) list="$$list $$i" ;; \
|
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
|
||||||
esac; \
|
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||||
done; \
|
dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
|
||||||
for i in $$list; do \
|
install-man8: $(man_MANS)
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
|
||||||
case "$$ext" in \
|
|
||||||
5*) ;; \
|
|
||||||
*) ext='5' ;; \
|
|
||||||
esac; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " rm -f '$(DESTDIR)$(man5dir)/$$inst'"; \
|
|
||||||
rm -f "$(DESTDIR)$(man5dir)/$$inst"; \
|
|
||||||
done
|
|
||||||
install-man8: $(man8_MANS) $(man_MANS)
|
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
|
@list1=''; \
|
||||||
@list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
|
list2='$(man_MANS)'; \
|
||||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
test -n "$(man8dir)" \
|
||||||
for i in $$l2; do \
|
&& test -n "`echo $$list1$$list2`" \
|
||||||
case "$$i" in \
|
|| exit 0; \
|
||||||
*.8*) list="$$list $$i" ;; \
|
echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
|
||||||
esac; \
|
$(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
|
||||||
|
{ for i in $$list1; do echo "$$i"; done; \
|
||||||
|
if test -n "$$list2"; then \
|
||||||
|
for i in $$list2; do echo "$$i"; done \
|
||||||
|
| sed -n '/\.8[a-z]*$$/p'; \
|
||||||
|
fi; \
|
||||||
|
} | while read p; do \
|
||||||
|
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
echo "$$d$$p"; echo "$$p"; \
|
||||||
|
done | \
|
||||||
|
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
||||||
|
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||||
|
sed 'N;N;s,\n, ,g' | { \
|
||||||
|
list=; while read file base inst; do \
|
||||||
|
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||||
|
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
|
||||||
|
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
|
||||||
|
fi; \
|
||||||
done; \
|
done; \
|
||||||
for i in $$list; do \
|
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
while read files; do \
|
||||||
else file=$$i; fi; \
|
test -z "$$files" || { \
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
|
||||||
case "$$ext" in \
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
|
||||||
8*) ;; \
|
done; }
|
||||||
*) ext='8' ;; \
|
|
||||||
esac; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
|
|
||||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \
|
|
||||||
done
|
|
||||||
uninstall-man8:
|
uninstall-man8:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
|
@list=''; test -n "$(man8dir)" || exit 0; \
|
||||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||||
for i in $$l2; do \
|
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||||
case "$$i" in \
|
sed -n '/\.8[a-z]*$$/p'; \
|
||||||
*.8*) list="$$list $$i" ;; \
|
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
|
||||||
esac; \
|
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||||
done; \
|
dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
|
||||||
for i in $$list; do \
|
tags TAGS:
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
|
||||||
case "$$ext" in \
|
|
||||||
8*) ;; \
|
|
||||||
*) ext='8' ;; \
|
|
||||||
esac; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \
|
|
||||||
rm -f "$(DESTDIR)$(man8dir)/$$inst"; \
|
|
||||||
done
|
|
||||||
tags: TAGS
|
|
||||||
TAGS:
|
|
||||||
|
|
||||||
ctags: CTAGS
|
ctags CTAGS:
|
||||||
CTAGS:
|
|
||||||
|
cscope cscopelist:
|
||||||
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
distdir: $(BUILT_SOURCES)
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||||
|
|
||||||
|
distdir-am: $(DISTFILES)
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
list='$(DISTFILES)'; \
|
list='$(DISTFILES)'; \
|
||||||
|
|
@ -472,13 +594,17 @@ distdir: $(DISTFILES)
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
@ -502,10 +628,15 @@ install-am: all-am
|
||||||
|
|
||||||
installcheck: installcheck-am
|
installcheck: installcheck-am
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
@ -513,13 +644,14 @@ clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
clean: clean-am
|
clean: clean-am
|
||||||
|
|
||||||
clean-am: clean-generic mostlyclean-am
|
clean-am: clean-aminfo clean-generic mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-am
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
|
|
@ -543,12 +675,18 @@ install-dvi: install-dvi-am
|
||||||
|
|
||||||
install-dvi-am: $(DVIS)
|
install-dvi-am: $(DVIS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
|
@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
|
||||||
@list='$(DVIS)'; for p in $$list; do \
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
|
||||||
|
fi; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
echo "$$d$$p"; \
|
||||||
echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \
|
done | $(am__base_list) | \
|
||||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
|
||||||
done
|
done
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
|
|
@ -556,27 +694,39 @@ install-html: install-html-am
|
||||||
|
|
||||||
install-html-am: $(HTMLS)
|
install-html-am: $(HTMLS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
|
@list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
|
||||||
@list='$(HTMLS)'; for p in $$list; do \
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
|
||||||
|
fi; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
$(am__strip_dir) \
|
||||||
if test -d "$$d$$p"; then \
|
d2=$$d$$p; \
|
||||||
|
if test -d "$$d2"; then \
|
||||||
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
|
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
|
||||||
$(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
|
$(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
|
||||||
echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
|
echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
|
||||||
$(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
|
$(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
|
||||||
else \
|
else \
|
||||||
echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
|
list2="$$list2 $$d2"; \
|
||||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
|
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done; \
|
||||||
|
test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
|
||||||
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
|
||||||
|
done; }
|
||||||
install-info: install-info-am
|
install-info: install-info-am
|
||||||
|
|
||||||
install-info-am: $(INFO_DEPS)
|
install-info-am: $(INFO_DEPS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
|
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
list='$(INFO_DEPS)'; \
|
list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
|
||||||
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
|
||||||
|
fi; \
|
||||||
for file in $$list; do \
|
for file in $$list; do \
|
||||||
case $$file in \
|
case $$file in \
|
||||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
|
@ -584,18 +734,18 @@ install-info-am: $(INFO_DEPS)
|
||||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
|
file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||||
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
|
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
|
||||||
$$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
|
$$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
|
||||||
if test -f $$ifile; then \
|
if test -f $$ifile; then \
|
||||||
relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
|
echo "$$ifile"; \
|
||||||
echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
|
|
||||||
$(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
|
|
||||||
else : ; fi; \
|
else : ; fi; \
|
||||||
done; \
|
done; \
|
||||||
done
|
done | $(am__base_list) | \
|
||||||
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
|
||||||
@$(POST_INSTALL)
|
@$(POST_INSTALL)
|
||||||
@if (install-info --version && \
|
@if $(am__can_run_installinfo); then \
|
||||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
|
||||||
list='$(INFO_DEPS)'; \
|
|
||||||
for file in $$list; do \
|
for file in $$list; do \
|
||||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||||
echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
|
echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
|
||||||
|
|
@ -608,24 +758,34 @@ install-pdf: install-pdf-am
|
||||||
|
|
||||||
install-pdf-am: $(PDFS)
|
install-pdf-am: $(PDFS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
|
@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
|
||||||
@list='$(PDFS)'; for p in $$list; do \
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
|
||||||
|
fi; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
echo "$$d$$p"; \
|
||||||
echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \
|
done | $(am__base_list) | \
|
||||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \
|
while read files; do \
|
||||||
done
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
|
||||||
install-ps: install-ps-am
|
install-ps: install-ps-am
|
||||||
|
|
||||||
install-ps-am: $(PSS)
|
install-ps-am: $(PSS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
|
@list='$(PSS)'; test -n "$(psdir)" || list=; \
|
||||||
@list='$(PSS)'; for p in $$list; do \
|
if test -n "$$list"; then \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
|
||||||
|
fi; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
echo "$$d$$p"; \
|
||||||
echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \
|
done | $(am__base_list) | \
|
||||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \
|
while read files; do \
|
||||||
done
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
|
|
@ -652,46 +812,42 @@ uninstall-man: uninstall-man5 uninstall-man8
|
||||||
|
|
||||||
.MAKE: install-am install-strip
|
.MAKE: install-am install-strip
|
||||||
|
|
||||||
.PHONY: all all-am check check-am clean clean-generic dist-info \
|
.PHONY: all all-am check check-am clean clean-aminfo clean-generic \
|
||||||
distclean distclean-generic distdir dvi dvi-am html html-am \
|
cscopelist-am ctags-am dist-info distclean distclean-generic \
|
||||||
info info-am install install-am install-data install-data-am \
|
distdir dvi dvi-am html html-am info info-am install \
|
||||||
install-dvi install-dvi-am install-exec install-exec-am \
|
install-am install-data install-data-am install-dvi \
|
||||||
install-html install-html-am install-info install-info-am \
|
install-dvi-am install-exec install-exec-am install-html \
|
||||||
install-man install-man5 install-man8 install-pdf \
|
install-html-am install-info install-info-am install-man \
|
||||||
install-pdf-am install-ps install-ps-am install-strip \
|
install-man5 install-man8 install-pdf install-pdf-am \
|
||||||
installcheck installcheck-am installdirs maintainer-clean \
|
install-ps install-ps-am install-strip installcheck \
|
||||||
|
installcheck-am installdirs maintainer-clean \
|
||||||
maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
|
maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
|
||||||
mostlyclean-aminfo mostlyclean-generic pdf pdf-am ps ps-am \
|
mostlyclean-aminfo mostlyclean-generic pdf pdf-am ps ps-am \
|
||||||
uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
|
tags-am uninstall uninstall-am uninstall-dvi-am \
|
||||||
uninstall-info-am uninstall-man uninstall-man5 uninstall-man8 \
|
uninstall-html-am uninstall-info-am uninstall-man \
|
||||||
uninstall-pdf-am uninstall-ps-am
|
uninstall-man5 uninstall-man8 uninstall-pdf-am uninstall-ps-am
|
||||||
|
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
|
||||||
# For additional rules usually of interest only to the maintainer,
|
|
||||||
# see GNUmakefile and Makefile.maint.
|
|
||||||
|
|
||||||
sample-config.tar.gz: sample-config
|
|
||||||
GZIP=$(GZIP_ENV) $(AMTAR) chozf sample-config.tar.gz --exclude .svn sample-config
|
|
||||||
|
|
||||||
texi2html: tinc.texi
|
texi2html: tinc.texi
|
||||||
texi2html -split=chapter tinc.texi
|
$(AM_V_GEN)texi2html -split=chapter $<
|
||||||
|
|
||||||
tincd.8.html: tincd.8
|
tincd.8.html: tincd.8
|
||||||
w3mman2html $< > $@
|
$(AM_V_GEN)w3mman2html $< > $@
|
||||||
|
|
||||||
tinc.conf.5.html: tinc.conf.5
|
tinc.conf.5.html: tinc.conf.5
|
||||||
w3mman2html $< > $@
|
$(AM_V_GEN)w3mman2html $< > $@
|
||||||
|
|
||||||
tincd.8: tincd.8.in
|
tincd.8: $(srcdir)/tincd.8.in
|
||||||
$(substitute) tincd.8.in > tincd.8
|
$(AM_V_GEN)$(substitute) $(srcdir)/tincd.8.in > $@
|
||||||
|
|
||||||
tinc.conf.5: tinc.conf.5.in
|
tinc.conf.5: $(srcdir)/tinc.conf.5.in
|
||||||
$(substitute) tinc.conf.5.in > tinc.conf.5
|
$(AM_V_GEN)$(substitute) $(srcdir)/tinc.conf.5.in > $@
|
||||||
|
|
||||||
tincinclude.texi: tincinclude.texi.in
|
tincinclude.texi: $(srcdir)/tincinclude.texi.in
|
||||||
$(substitute) tincinclude.texi.in > tincinclude.texi
|
$(AM_V_GEN)$(substitute) $(srcdir)/tincinclude.texi.in > $@
|
||||||
|
|
||||||
tinc.texi: tincinclude.texi
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# 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.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
|
|
||||||
Binary file not shown.
15
doc/sample-config/hosts/alpha
Normal file
15
doc/sample-config/hosts/alpha
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Sample host configuration file
|
||||||
|
|
||||||
|
# The real IP address of this tinc host. Can be used by other tinc hosts.
|
||||||
|
Address = 123.234.35.67
|
||||||
|
|
||||||
|
# Portnumber for incoming connections. Default is 655.
|
||||||
|
Port = 655
|
||||||
|
|
||||||
|
# Subnet on the virtual private network that is local for this host.
|
||||||
|
Subnet = 192.168.1.0/24
|
||||||
|
|
||||||
|
# The public key generated by `tincd -n example -K' is stored here
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
...
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
16
doc/sample-config/hosts/beta
Normal file
16
doc/sample-config/hosts/beta
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Sample host configuration file
|
||||||
|
# This file was generated by host beta.
|
||||||
|
|
||||||
|
# The real IP address of this tinc host. Can be used by other tinc hosts.
|
||||||
|
Address = 123.45.67.189
|
||||||
|
|
||||||
|
# Portnumber for incoming connections. Default is 655.
|
||||||
|
Port = 6500
|
||||||
|
|
||||||
|
# Subnet on the virtual private network that is local for this host.
|
||||||
|
Subnet = 192.168.2.0/24
|
||||||
|
|
||||||
|
# The public key generated by `tincd -n example -K' is stored here
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
...
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
1
doc/sample-config/rsa_key.priv
Normal file
1
doc/sample-config/rsa_key.priv
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
# Generate this file with `tincd -n example -K`
|
||||||
4
doc/sample-config/tinc-down
Normal file
4
doc/sample-config/tinc-down
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# This file closes down the tap device.
|
||||||
|
|
||||||
|
ifconfig $INTERFACE down
|
||||||
11
doc/sample-config/tinc-up
Normal file
11
doc/sample-config/tinc-up
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# This file sets up the tap device.
|
||||||
|
# It gives you the freedom to do anything you want with it.
|
||||||
|
# Use the correct name for the tap device:
|
||||||
|
# The environment variable $INTERFACE is set to the right name
|
||||||
|
# on most platforms, but if it doesn't work try to set it manually.
|
||||||
|
|
||||||
|
# Give it the right ip and netmask. Remember, the subnet of the
|
||||||
|
# tap device must be larger than that of the individual Subnets
|
||||||
|
# as defined in the host configuration file!
|
||||||
|
ifconfig $INTERFACE 192.168.1.1 netmask 255.255.0.0
|
||||||
22
doc/sample-config/tinc.conf
Normal file
22
doc/sample-config/tinc.conf
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Sample tinc configuration file
|
||||||
|
|
||||||
|
# This is a comment.
|
||||||
|
# Spaces and tabs are eliminated.
|
||||||
|
# The = sign isn't strictly necessary any longer, though you may want
|
||||||
|
# to leave it in as it improves readability :)
|
||||||
|
# Variable names are treated case insensitive.
|
||||||
|
|
||||||
|
# The name of this tinc host. Required.
|
||||||
|
Name = alpha
|
||||||
|
|
||||||
|
# The internet host to connect with.
|
||||||
|
# Comment these out to make yourself a listen-only connection
|
||||||
|
# You must use the name of another tinc host.
|
||||||
|
# May be used multiple times for redundance.
|
||||||
|
ConnectTo = beta
|
||||||
|
|
||||||
|
# The tap device tinc will use.
|
||||||
|
# /dev/tap0 for ethertap, FreeBSD or OpenBSD
|
||||||
|
# /dev/tun0 for Solaris
|
||||||
|
# /dev/net/tun for Linux tun/tap
|
||||||
|
Device = /dev/net/tun
|
||||||
7860
doc/texinfo.tex
7860
doc/texinfo.tex
File diff suppressed because it is too large
Load diff
|
|
@ -1,25 +1,21 @@
|
||||||
.Dd 2008-12-22
|
.Dd 2016-10-29
|
||||||
.Dt TINC.CONF 5
|
.Dt TINC.CONF 5
|
||||||
.\" Manual page created by:
|
.\" Manual page created by:
|
||||||
.\" Ivo Timmermans
|
.\" Ivo Timmermans
|
||||||
.\" Guus Sliepen <guus@tinc-vpn.org>
|
.\" Guus Sliepen <guus@tinc-vpn.org>
|
||||||
|
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.Nm tinc.conf
|
.Nm tinc.conf
|
||||||
.Nd tinc daemon configuration
|
.Nd tinc daemon configuration
|
||||||
|
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
The files in the
|
The files in the
|
||||||
.Pa @sysconfdir@/tinc/
|
.Pa @sysconfdir@/tinc/
|
||||||
directory contain runtime and security information for the tinc daemon.
|
directory contain runtime and security information for the tinc daemon.
|
||||||
|
|
||||||
.Sh NETWORKS
|
.Sh NETWORKS
|
||||||
It is perfectly ok for you to run more than one tinc daemon.
|
It is perfectly ok for you to run more than one tinc daemon.
|
||||||
However, in its default form,
|
However, in its default form,
|
||||||
you will soon notice that you can't use two different configuration files without the
|
you will soon notice that you can't use two different configuration files without the
|
||||||
.Fl c
|
.Fl c
|
||||||
option.
|
option.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
We have thought of another way of dealing with this: network names.
|
We have thought of another way of dealing with this: network names.
|
||||||
This means that you call
|
This means that you call
|
||||||
|
|
@ -27,7 +23,6 @@ This means that you call
|
||||||
with the
|
with the
|
||||||
.Fl n
|
.Fl n
|
||||||
option, which will assign a name to this daemon.
|
option, which will assign a name to this daemon.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
The effect of this is that the daemon will set its configuration root to
|
The effect of this is that the daemon will set its configuration root to
|
||||||
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa / ,
|
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa / ,
|
||||||
|
|
@ -38,7 +33,6 @@ is your argument to the
|
||||||
option.
|
option.
|
||||||
You'll notice that messages appear in syslog as coming from
|
You'll notice that messages appear in syslog as coming from
|
||||||
.Nm tincd. Ns Ar NETNAME .
|
.Nm tincd. Ns Ar NETNAME .
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
However, it is not strictly necessary that you call tinc with the
|
However, it is not strictly necessary that you call tinc with the
|
||||||
.Fl n
|
.Fl n
|
||||||
|
|
@ -54,25 +48,21 @@ the configuration file should be
|
||||||
.Pa @sysconfdir@/tinc/tinc.conf ,
|
.Pa @sysconfdir@/tinc/tinc.conf ,
|
||||||
and the host configuration files are now expected to be in
|
and the host configuration files are now expected to be in
|
||||||
.Pa @sysconfdir@/tinc/hosts/ .
|
.Pa @sysconfdir@/tinc/hosts/ .
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
But it is highly recommended that you use this feature of
|
But it is highly recommended that you use this feature of
|
||||||
.Nm tinc ,
|
.Nm tinc ,
|
||||||
because it will be so much clearer whom your daemon talks to.
|
because it will be so much clearer whom your daemon talks to.
|
||||||
Hence, we will assume that you use it.
|
Hence, we will assume that you use it.
|
||||||
|
|
||||||
.Sh NAMES
|
.Sh NAMES
|
||||||
Each tinc daemon should have a name that is unique in the network which it will be part of.
|
Each tinc daemon must have a name that is unique in the network which it will be part of.
|
||||||
The name will be used by other tinc daemons for identification.
|
The name will be used by other tinc daemons for identification.
|
||||||
The name has to be declared in the
|
The name has to be declared in the
|
||||||
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc.conf
|
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc.conf
|
||||||
file.
|
file.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
To make things easy,
|
To make things easy,
|
||||||
choose something that will give unique and easy to remember names to your tinc daemon(s).
|
choose something that will give unique and easy to remember names to your tinc daemon(s).
|
||||||
You could try things like hostnames, owner surnames or location names.
|
You could try things like hostnames, owner surnames or location names.
|
||||||
|
|
||||||
.Sh PUBLIC/PRIVATE KEYS
|
.Sh PUBLIC/PRIVATE KEYS
|
||||||
You should use
|
You should use
|
||||||
.Ic tincd -K
|
.Ic tincd -K
|
||||||
|
|
@ -91,17 +81,14 @@ The public key should be stored in the host configuration file
|
||||||
.Va NAME
|
.Va NAME
|
||||||
stands for the name of the local tinc daemon (see
|
stands for the name of the local tinc daemon (see
|
||||||
.Sx NAMES ) .
|
.Sx NAMES ) .
|
||||||
|
|
||||||
.Sh SERVER CONFIGURATION
|
.Sh SERVER CONFIGURATION
|
||||||
The server configuration of the daemon is done in the file
|
The server configuration of the daemon is done in the file
|
||||||
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc.conf .
|
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc.conf .
|
||||||
This file consists of comments (lines started with a
|
This file consists of comments (lines started with a
|
||||||
.Li # )
|
.Li # )
|
||||||
or assignments in the form of:
|
or assignments in the form of:
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
.Va Variable Li = Ar Value .
|
.Va Variable Li = Ar Value .
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
The variable names are case insensitive, and any spaces, tabs,
|
The variable names are case insensitive, and any spaces, tabs,
|
||||||
newlines and carriage returns are ignored.
|
newlines and carriage returns are ignored.
|
||||||
|
|
@ -109,37 +96,67 @@ Note: it is not required that you put in the
|
||||||
.Li =
|
.Li =
|
||||||
sign, but doing so improves readability.
|
sign, but doing so improves readability.
|
||||||
If you leave it out, remember to replace it with at least one space character.
|
If you leave it out, remember to replace it with at least one space character.
|
||||||
|
.Pp
|
||||||
|
The server configuration is complemented with host specific configuration (see the next section).
|
||||||
|
Although all configuration options for the local host listed in this document can also be put in
|
||||||
|
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc.conf ,
|
||||||
|
it is recommended to put host specific configuration options in the host configuration file,
|
||||||
|
as this makes it easy to exchange with other nodes.
|
||||||
.Pp
|
.Pp
|
||||||
Here are all valid variables, listed in alphabetical order.
|
Here are all valid variables, listed in alphabetical order.
|
||||||
The default value is given between parentheses.
|
The default value is given between parentheses.
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
|
|
||||||
.It Va AddressFamily Li = ipv4 | ipv6 | any Pq any
|
.It Va AddressFamily Li = ipv4 | ipv6 | any Pq any
|
||||||
This option affects the address family of listening and outgoing sockets.
|
This option affects the address family of listening and outgoing sockets.
|
||||||
If
|
If
|
||||||
.Qq any
|
.Qq any
|
||||||
is selected, then depending on the operating system both IPv4 and IPv6 or just
|
is selected, then depending on the operating system both IPv4 and IPv6 or just
|
||||||
IPv6 listening sockets will be created.
|
IPv6 listening sockets will be created.
|
||||||
|
.It Va BindToAddress Li = Ar address Oo Ar port Oc Bq experimental
|
||||||
.It Va BindToAddress Li = Ar address Bq experimental
|
|
||||||
If your computer has more than one IPv4 or IPv6 address,
|
If your computer has more than one IPv4 or IPv6 address,
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
will by default listen on all of them for incoming connections.
|
will by default listen on all of them for incoming connections.
|
||||||
It is possible to bind only to a single address with this variable.
|
Multiple
|
||||||
|
.Va BindToAddress
|
||||||
|
variables may be specified,
|
||||||
|
in which case listening sockets for each specified address are made.
|
||||||
|
.Pp
|
||||||
|
If no
|
||||||
|
.Ar port
|
||||||
|
is specified, the socket will be bound to the port specified by the
|
||||||
|
.Va Port
|
||||||
|
option, or to port 655 if neither is given.
|
||||||
|
To only bind to a specific port but not to a specific address, use
|
||||||
|
.Li *
|
||||||
|
for the
|
||||||
|
.Ar address .
|
||||||
.Pp
|
.Pp
|
||||||
This option may not work on all platforms.
|
This option may not work on all platforms.
|
||||||
|
|
||||||
.It Va BindToInterface Li = Ar interface Bq experimental
|
.It Va BindToInterface Li = Ar interface Bq experimental
|
||||||
If your computer has more than one network interface,
|
If your computer has more than one network interface,
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
will by default listen on all of them for incoming connections.
|
will by default listen on all of them for incoming connections.
|
||||||
It is possible to bind only to a single interface with this variable.
|
It is possible to bind only to a single interface with this variable.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
This option may not work on all platforms.
|
This option may not work on all platforms.
|
||||||
|
Also, on some platforms it will not actually bind to an interface,
|
||||||
|
but rather to the address that the interface has at the moment a socket is created.
|
||||||
|
.It Va Broadcast Li = no | mst | direct Po mst Pc Bq experimental
|
||||||
|
This option selects the way broadcast packets are sent to other daemons.
|
||||||
|
NOTE: all nodes in a VPN must use the same
|
||||||
|
.Va Broadcast
|
||||||
|
mode, otherwise routing loops can form.
|
||||||
|
.Bl -tag -width indent
|
||||||
|
.It no
|
||||||
|
Broadcast packets are never sent to other nodes.
|
||||||
|
.It mst
|
||||||
|
Broadcast packets are sent and forwarded via the VPN's Minimum Spanning Tree.
|
||||||
|
This ensures broadcast packets reach all nodes.
|
||||||
|
.It direct
|
||||||
|
Broadcast packets are sent directly to all nodes that can be reached directly.
|
||||||
|
Broadcast packets received from other nodes are never forwarded.
|
||||||
|
If the IndirectData option is also set, broadcast packets will only be sent to nodes which we have a meta connection to.
|
||||||
|
.El
|
||||||
.It Va ConnectTo Li = Ar name
|
.It Va ConnectTo Li = Ar name
|
||||||
Specifies which other tinc daemon to connect to on startup.
|
Specifies which other tinc daemon to connect to on startup.
|
||||||
Multiple
|
Multiple
|
||||||
|
|
@ -150,14 +167,21 @@ The names should be known to this tinc daemon
|
||||||
(i.e., there should be a host configuration file for the name on the
|
(i.e., there should be a host configuration file for the name on the
|
||||||
.Va ConnectTo
|
.Va ConnectTo
|
||||||
line).
|
line).
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
If you don't specify a host with
|
If you don't specify a host with
|
||||||
.Va ConnectTo ,
|
.Va ConnectTo ,
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
won't try to connect to other daemons at all,
|
won't try to connect to other daemons at all,
|
||||||
and will instead just listen for incoming connections.
|
and will instead just listen for incoming connections.
|
||||||
|
.It Va DecrementTTL Li = yes | no Po no Pc Bq experimental
|
||||||
|
When enabled,
|
||||||
|
.Nm tinc
|
||||||
|
will decrement the Time To Live field in IPv4 packets, or the Hop Limit field in IPv6 packets,
|
||||||
|
before forwarding a received packet to the virtual network device or to another node,
|
||||||
|
and will drop packets that have a TTL value of zero,
|
||||||
|
in which case it will send an ICMP Time Exceeded packet back.
|
||||||
|
.Pp
|
||||||
|
Do not use this option if you use switch mode and want to use IPv6.
|
||||||
.It Va Device Li = Ar device Po Pa /dev/tap0 , Pa /dev/net/tun No or other depending on platform Pc
|
.It Va Device Li = Ar device Po Pa /dev/tap0 , Pa /dev/net/tun No or other depending on platform Pc
|
||||||
The virtual network device to use.
|
The virtual network device to use.
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
|
|
@ -169,36 +193,92 @@ instead of
|
||||||
.Va Device .
|
.Va Device .
|
||||||
The info pages of the tinc package contain more information
|
The info pages of the tinc package contain more information
|
||||||
about configuring the virtual network device.
|
about configuring the virtual network device.
|
||||||
|
.It Va DeviceType Li = Ar type Pq platform dependent
|
||||||
.It Va DeviceType Li = tun | tunnohead | tunifhead | tap Po only supported on BSD platforms Pc
|
|
||||||
The type of the virtual network device.
|
The type of the virtual network device.
|
||||||
Tinc will normally automatically select the right type, and this option should not be used.
|
Tinc will normally automatically select the right type of tun/tap interface, and this option should not be used.
|
||||||
However, in case tinc does not seem to correctly interpret packets received from the virtual network device,
|
However, this option can be used to select one of the special interface types, if support for them is compiled in.
|
||||||
using this option might help.
|
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
|
.It dummy
|
||||||
.It tun
|
Use a dummy interface.
|
||||||
|
No packets are ever read or written to a virtual network device.
|
||||||
|
Useful for testing, or when setting up a node that only forwards packets for other nodes.
|
||||||
|
.It raw_socket
|
||||||
|
Open a raw socket, and bind it to a pre-existing
|
||||||
|
.Va Interface
|
||||||
|
(eth0 by default).
|
||||||
|
All packets are read from this interface.
|
||||||
|
Packets received for the local node are written to the raw socket.
|
||||||
|
However, at least on Linux, the operating system does not process IP packets destined for the local host.
|
||||||
|
.It multicast
|
||||||
|
Open a multicast UDP socket and bind it to the address and port (separated by spaces) and optionally a TTL value specified using
|
||||||
|
.Va Device .
|
||||||
|
Packets are read from and written to this multicast socket.
|
||||||
|
This can be used to connect to UML, QEMU or KVM instances listening on the same multicast address.
|
||||||
|
Do NOT connect multiple
|
||||||
|
.Nm tinc
|
||||||
|
daemons to the same multicast address, this will very likely cause routing loops.
|
||||||
|
Also note that this can cause decrypted VPN packets to be sent out on a real network if misconfigured.
|
||||||
|
.It uml Pq not compiled in by default
|
||||||
|
Create a UNIX socket with the filename specified by
|
||||||
|
.Va Device ,
|
||||||
|
or
|
||||||
|
.Pa @runstatedir@/ Ns Ar NETNAME Ns Pa .umlsocket
|
||||||
|
if not specified.
|
||||||
|
.Nm tinc
|
||||||
|
will wait for a User Mode Linux instance to connect to this socket.
|
||||||
|
.It vde Pq not compiled in by default
|
||||||
|
Uses the libvdeplug library to connect to a Virtual Distributed Ethernet switch,
|
||||||
|
using the UNIX socket specified by
|
||||||
|
.Va Device ,
|
||||||
|
or
|
||||||
|
.Pa @runstatedir@/vde.ctl
|
||||||
|
if not specified.
|
||||||
|
.El
|
||||||
|
Also, in case tinc does not seem to correctly interpret packets received from the virtual network device,
|
||||||
|
it can be used to change the way packets are interpreted:
|
||||||
|
.Bl -tag -width indent
|
||||||
|
.It tun Pq BSD and Linux
|
||||||
Set type to tun.
|
Set type to tun.
|
||||||
Depending on the platform, this can either be with or without an address family header (see below).
|
Depending on the platform, this can either be with or without an address family header (see below).
|
||||||
|
.It tunnohead Pq BSD
|
||||||
.It tunnohead
|
|
||||||
Set type to tun without an address family header.
|
Set type to tun without an address family header.
|
||||||
Tinc will expect packets read from the virtual network device to start with an IP header.
|
Tinc will expect packets read from the virtual network device to start with an IP header.
|
||||||
On some platforms IPv6 packets cannot be read from or written to the device in this mode.
|
On some platforms IPv6 packets cannot be read from or written to the device in this mode.
|
||||||
|
.It tunifhead Pq BSD
|
||||||
.It tunifhead
|
|
||||||
Set type to tun with an address family header.
|
Set type to tun with an address family header.
|
||||||
Tinc will expect packets read from the virtual network device
|
Tinc will expect packets read from the virtual network device
|
||||||
to start with a four byte header containing the address family,
|
to start with a four byte header containing the address family,
|
||||||
followed by an IP header.
|
followed by an IP header.
|
||||||
This mode should support both IPv4 and IPv6 packets.
|
This mode should support both IPv4 and IPv6 packets.
|
||||||
|
.It utun Pq OS X
|
||||||
.It tap
|
Set type to utun.
|
||||||
|
This is only supported on OS X version 10.6.8 and higher, but doesn't require the tuntaposx module.
|
||||||
|
This mode should support both IPv4 and IPv6 packets.
|
||||||
|
.It tap Pq BSD and Linux
|
||||||
Set type to tap.
|
Set type to tap.
|
||||||
Tinc will expect packets read from the virtual network device
|
Tinc will expect packets read from the virtual network device
|
||||||
to start with an Ethernet header.
|
to start with an Ethernet header.
|
||||||
.El
|
.El
|
||||||
|
.It Va DirectOnly Li = yes | no Po no Pc Bq experimental
|
||||||
|
When this option is enabled, packets that cannot be sent directly to the destination node,
|
||||||
|
but which would have to be forwarded by an intermediate node, are dropped instead.
|
||||||
|
When combined with the IndirectData option,
|
||||||
|
packets for nodes for which we do not have a meta connection with are also dropped.
|
||||||
|
.It Va Forwarding Li = off | internal | kernel Po internal Pc Bq experimental
|
||||||
|
This option selects the way indirect packets are forwarded.
|
||||||
|
.Bl -tag -width indent
|
||||||
|
.It off
|
||||||
|
Incoming packets that are not meant for the local node,
|
||||||
|
but which should be forwarded to another node, are dropped.
|
||||||
|
.It internal
|
||||||
|
Incoming packets that are meant for another node are forwarded by tinc internally.
|
||||||
|
.Pp
|
||||||
|
This is the default mode, and unless you really know you need another forwarding mode, don't change it.
|
||||||
|
.It kernel
|
||||||
|
Incoming packets are always sent to the TUN/TAP device, even if the packets are not for the local node.
|
||||||
|
This is less efficient, but allows the kernel to apply its routing and firewall rules on them,
|
||||||
|
and can also help debugging.
|
||||||
|
.El
|
||||||
.It Va GraphDumpFile Li = Ar filename Bq experimental
|
.It Va GraphDumpFile Li = Ar filename Bq experimental
|
||||||
If this option is present,
|
If this option is present,
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
|
|
@ -211,17 +291,16 @@ If
|
||||||
starts with a pipe symbol |,
|
starts with a pipe symbol |,
|
||||||
then the rest of the filename is interpreted as a shell command
|
then the rest of the filename is interpreted as a shell command
|
||||||
that is executed, the graph is then sent to stdin.
|
that is executed, the graph is then sent to stdin.
|
||||||
|
|
||||||
.It Va Hostnames Li = yes | no Pq no
|
.It Va Hostnames Li = yes | no Pq no
|
||||||
This option selects whether IP addresses (both real and on the VPN) should
|
This option selects whether IP addresses (both real and on the VPN) should
|
||||||
be resolved. Since DNS lookups are blocking, it might affect tinc's
|
be resolved. Since DNS lookups are blocking, it might affect tinc's
|
||||||
efficiency, even stopping the daemon for a few seconds every time it does
|
efficiency, even stopping the daemon for a few seconds every time it does
|
||||||
a lookup if your DNS server is not responding.
|
a lookup if your DNS server is not responding.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
This does not affect resolving hostnames to IP addresses from the
|
This does not affect resolving hostnames to IP addresses from the
|
||||||
host configuration files.
|
host configuration files, but whether hostnames should be resolved while logging.
|
||||||
|
.It Va IffOneQueue Li = yes | no Po no Pc Bq experimental
|
||||||
|
(Linux only) Set IFF_ONE_QUEUE flag on TUN/TAP devices.
|
||||||
.It Va Interface Li = Ar interface
|
.It Va Interface Li = Ar interface
|
||||||
Defines the name of the interface corresponding to the virtual network device.
|
Defines the name of the interface corresponding to the virtual network device.
|
||||||
Depending on the operating system and the type of device this may or may not actually set the name of the interface.
|
Depending on the operating system and the type of device this may or may not actually set the name of the interface.
|
||||||
|
|
@ -229,94 +308,150 @@ Under Windows, this variable is used to select which network interface will be u
|
||||||
If you specified a
|
If you specified a
|
||||||
.Va Device ,
|
.Va Device ,
|
||||||
this variable is almost always already correctly set.
|
this variable is almost always already correctly set.
|
||||||
|
|
||||||
.It Va KeyExpire Li = Ar seconds Pq 3600
|
.It Va KeyExpire Li = Ar seconds Pq 3600
|
||||||
This option controls the period the encryption keys used to encrypt the data are valid.
|
This option controls the period the encryption keys used to encrypt the data are valid.
|
||||||
It is common practice to change keys at regular intervals to make it even harder for crackers,
|
It is common practice to change keys at regular intervals to make it even harder for crackers,
|
||||||
even though it is thought to be nearly impossible to crack a single key.
|
even though it is thought to be nearly impossible to crack a single key.
|
||||||
|
.It Va LocalDiscovery Li = yes | no Po no Pc Bq experimental
|
||||||
|
When enabled,
|
||||||
|
.Nm tinc
|
||||||
|
will try to detect peers that are on the same local network.
|
||||||
|
This will allow direct communication using LAN addresses, even if both peers are behind a NAT
|
||||||
|
and they only ConnectTo a third node outside the NAT,
|
||||||
|
which normally would prevent the peers from learning each other's LAN address.
|
||||||
|
.Pp
|
||||||
|
Currently, local discovery is implemented by sending broadcast packets to the LAN during path MTU discovery.
|
||||||
|
This feature may not work in all possible situations.
|
||||||
.It Va MACExpire Li = Ar seconds Pq 600
|
.It Va MACExpire Li = Ar seconds Pq 600
|
||||||
This option controls the amount of time MAC addresses are kept before they are removed.
|
This option controls the amount of time MAC addresses are kept before they are removed.
|
||||||
This only has effect when
|
This only has effect when
|
||||||
.Va Mode
|
.Va Mode
|
||||||
is set to
|
is set to
|
||||||
.Qq switch .
|
.Qq switch .
|
||||||
|
|
||||||
.It Va MaxTimeout Li = Ar seconds Pq 900
|
.It Va MaxTimeout Li = Ar seconds Pq 900
|
||||||
This is the maximum delay before trying to reconnect to other tinc daemons.
|
This is the maximum delay before trying to reconnect to other tinc daemons.
|
||||||
|
|
||||||
.It Va Mode Li = router | switch | hub Pq router
|
.It Va Mode Li = router | switch | hub Pq router
|
||||||
This option selects the way packets are routed to other daemons.
|
This option selects the way packets are routed to other daemons.
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
|
|
||||||
.It router
|
.It router
|
||||||
In this mode
|
In this mode
|
||||||
.Va Subnet
|
.Va Subnet
|
||||||
variables in the host configuration files will be used to form a routing table.
|
variables in the host configuration files will be used to form a routing table.
|
||||||
Only unicast packets of routable protocols (IPv4 and IPv6) are supported in this mode.
|
Only unicast packets of routable protocols (IPv4 and IPv6) are supported in this mode.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
This is the default mode, and unless you really know you need another mode, don't change it.
|
This is the default mode, and unless you really know you need another mode, don't change it.
|
||||||
|
|
||||||
.It switch
|
.It switch
|
||||||
In this mode the MAC addresses of the packets on the VPN will be used to
|
In this mode the MAC addresses of the packets on the VPN will be used to
|
||||||
dynamically create a routing table just like an Ethernet switch does.
|
dynamically create a routing table just like an Ethernet switch does.
|
||||||
Unicast, multicast and broadcast packets of every protocol that runs over Ethernet are supported in this mode
|
Unicast, multicast and broadcast packets of every protocol that runs over Ethernet are supported in this mode
|
||||||
at the cost of frequent broadcast ARP requests and routing table updates.
|
at the cost of frequent broadcast ARP requests and routing table updates.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
This mode is primarily useful if you want to bridge Ethernet segments.
|
This mode is primarily useful if you want to bridge Ethernet segments.
|
||||||
|
|
||||||
.It hub
|
.It hub
|
||||||
This mode is almost the same as the switch mode, but instead
|
This mode is almost the same as the switch mode, but instead
|
||||||
every packet will be broadcast to the other daemons
|
every packet will be broadcast to the other daemons
|
||||||
while no routing table is managed.
|
while no routing table is managed.
|
||||||
.El
|
.El
|
||||||
|
|
||||||
.It Va Name Li = Ar name Bq required
|
.It Va Name Li = Ar name Bq required
|
||||||
This is the name which identifies this tinc daemon.
|
This is the name which identifies this tinc daemon.
|
||||||
It must be unique for the virtual private network this daemon will connect to.
|
It must be unique for the virtual private network this daemon will connect to.
|
||||||
|
The Name may only consist of alphanumeric and underscore characters.
|
||||||
|
If
|
||||||
|
.Va Name
|
||||||
|
starts with a
|
||||||
|
.Li $ ,
|
||||||
|
then the contents of the environment variable that follows will be used.
|
||||||
|
In that case, invalid characters will be converted to underscores.
|
||||||
|
If
|
||||||
|
.Va Name
|
||||||
|
is
|
||||||
|
.Li $HOST ,
|
||||||
|
but no such environment variable exist, the hostname will be read using the gethostname() system call.
|
||||||
.It Va PingInterval Li = Ar seconds Pq 60
|
.It Va PingInterval Li = Ar seconds Pq 60
|
||||||
The number of seconds of inactivity that
|
The number of seconds of inactivity that
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
will wait before sending a probe to the other end.
|
will wait before sending a probe to the other end.
|
||||||
|
|
||||||
.It Va PingTimeout Li = Ar seconds Pq 5
|
.It Va PingTimeout Li = Ar seconds Pq 5
|
||||||
The number of seconds to wait for a response to pings or to allow meta
|
The number of seconds to wait for a response to pings or to allow meta
|
||||||
connections to block. If the other end doesn't respond within this time,
|
connections to block. If the other end doesn't respond within this time,
|
||||||
the connection is terminated,
|
the connection is terminated,
|
||||||
and the others will be notified of this.
|
and the others will be notified of this.
|
||||||
|
|
||||||
.It Va PriorityInheritance Li = yes | no Po no Pc Bq experimental
|
.It Va PriorityInheritance Li = yes | no Po no Pc Bq experimental
|
||||||
When this option is enabled the value of the TOS field of tunneled IPv4 packets
|
When this option is enabled the value of the TOS field of tunneled IPv4 packets
|
||||||
will be inherited by the UDP packets that are sent out.
|
will be inherited by the UDP packets that are sent out.
|
||||||
|
|
||||||
.It Va PrivateKey Li = Ar key Bq obsolete
|
.It Va PrivateKey Li = Ar key Bq obsolete
|
||||||
The private RSA key of this tinc daemon.
|
The private RSA key of this tinc daemon.
|
||||||
It will allow this tinc daemon to authenticate itself to other daemons.
|
It will allow this tinc daemon to authenticate itself to other daemons.
|
||||||
|
|
||||||
.It Va PrivateKeyFile Li = Ar filename Po Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /rsa_key.priv Pc
|
.It Va PrivateKeyFile Li = Ar filename Po Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /rsa_key.priv Pc
|
||||||
The file in which the private RSA key of this tinc daemon resides.
|
The file in which the private RSA key of this tinc daemon resides.
|
||||||
Note that there must be exactly one of
|
.It Va ProcessPriority Li = low | normal | high
|
||||||
.Va PrivateKey
|
When this option is used the priority of the tincd process will be adjusted.
|
||||||
or
|
Increasing the priority may help to reduce latency and packet loss on the VPN.
|
||||||
.Va PrivateKeyFile
|
.It Va Proxy Li = socks4 | socks5 | http | exec Ar ... Bq experimental
|
||||||
specified in the configuration file.
|
Use a proxy when making outgoing connections.
|
||||||
|
The following proxy types are currently supported:
|
||||||
|
.Bl -tag -width indent
|
||||||
|
.It socks4 Ar address Ar port Op Ar username
|
||||||
|
Connects to the proxy using the SOCKS version 4 protocol.
|
||||||
|
Optionally, a
|
||||||
|
.Ar username
|
||||||
|
can be supplied which will be passed on to the proxy server.
|
||||||
|
Only IPv4 connections can be proxied using SOCKS 4.
|
||||||
|
.It socks5 Ar address Ar port Op Ar username Ar password
|
||||||
|
Connect to the proxy using the SOCKS version 5 protocol.
|
||||||
|
If a
|
||||||
|
.Ar username
|
||||||
|
and
|
||||||
|
.Ar password
|
||||||
|
are given, basic username/password authentication will be used,
|
||||||
|
otherwise no authentication will be used.
|
||||||
|
.It http Ar address Ar port
|
||||||
|
Connects to the proxy and sends a HTTP CONNECT request.
|
||||||
|
.It exec Ar command
|
||||||
|
Executes the given
|
||||||
|
.Ar command
|
||||||
|
which should set up the outgoing connection.
|
||||||
|
The environment variables
|
||||||
|
.Ev NAME ,
|
||||||
|
.Ev NODE ,
|
||||||
|
.Ev REMOTEADDRES
|
||||||
|
and
|
||||||
|
.Ev REMOTEPORT
|
||||||
|
are available.
|
||||||
|
.El
|
||||||
|
.It Va ReplayWindow Li = Ar bytes Pq 16
|
||||||
|
This is the size of the replay tracking window for each remote node, in bytes.
|
||||||
|
The window is a bitfield which tracks 1 packet per bit, so for example
|
||||||
|
the default setting of 16 will track up to 128 packets in the window. In high
|
||||||
|
bandwidth scenarios, setting this to a higher value can reduce packet loss from
|
||||||
|
the interaction of replay tracking with underlying real packet loss and/or
|
||||||
|
reordering. Setting this to zero will disable replay tracking completely and
|
||||||
|
pass all traffic, but leaves tinc vulnerable to replay-based attacks on your
|
||||||
|
traffic.
|
||||||
|
.It Va StrictSubnets Li = yes | no Po no Pc Bq experimental
|
||||||
|
When this option is enabled tinc will only use Subnet statements which are
|
||||||
|
present in the host config files in the local
|
||||||
|
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/
|
||||||
|
directory. Subnets learned via connections to other nodes and which are not
|
||||||
|
present in the local host config files are ignored.
|
||||||
.It Va TunnelServer Li = yes | no Po no Pc Bq experimental
|
.It Va TunnelServer Li = yes | no Po no Pc Bq experimental
|
||||||
When this option is enabled tinc will no longer forward information between other tinc daemons,
|
When this option is enabled tinc will no longer forward information between other tinc daemons,
|
||||||
and will only allow nodes and subnets on the VPN which are present in the
|
and will only allow connections with nodes for which host config files are present in the local
|
||||||
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/
|
.Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/
|
||||||
directory.
|
directory.
|
||||||
|
Setting this options also implicitly sets StrictSubnets.
|
||||||
|
.It Va UDPRcvBuf Li = Ar bytes Pq OS default
|
||||||
|
Sets the socket receive buffer size for the UDP socket, in bytes.
|
||||||
|
If unset, the default buffer size will be used by the operating system.
|
||||||
|
.It Va UDPSndBuf Li = Ar bytes Pq OS default
|
||||||
|
Sets the socket send buffer size for the UDP socket, in bytes.
|
||||||
|
If unset, the default buffer size will be used by the operating system.
|
||||||
.El
|
.El
|
||||||
|
|
||||||
.Sh HOST CONFIGURATION FILES
|
.Sh HOST CONFIGURATION FILES
|
||||||
The host configuration files contain all information needed
|
The host configuration files contain all information needed
|
||||||
to establish a connection to those hosts.
|
to establish a connection to those hosts.
|
||||||
A host configuration file is also required for the local tinc daemon,
|
A host configuration file is also required for the local tinc daemon,
|
||||||
it will use it to read in it's listen port, public key and subnets.
|
it will use it to read in it's listen port, public key and subnets.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
The idea is that these files are portable.
|
The idea is that these files are portable.
|
||||||
You can safely mail your own host configuration file to someone else.
|
You can safely mail your own host configuration file to someone else.
|
||||||
|
|
@ -325,66 +460,59 @@ and now his tinc daemon will be able to connect to your tinc daemon.
|
||||||
Since host configuration files only contain public keys,
|
Since host configuration files only contain public keys,
|
||||||
no secrets are revealed by sending out this information.
|
no secrets are revealed by sending out this information.
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
|
.It Va Address Li = Ar address Oo Ar port Oc Bq recommended
|
||||||
.It Va Address Li = Ar address Bq recommended
|
|
||||||
The IP address or hostname of this tinc daemon on the real network.
|
The IP address or hostname of this tinc daemon on the real network.
|
||||||
This will only be used when trying to make an outgoing connection to this tinc daemon.
|
This will only be used when trying to make an outgoing connection to this tinc daemon.
|
||||||
|
Optionally, a port can be specified to use for this address.
|
||||||
Multiple
|
Multiple
|
||||||
.Va Address
|
.Va Address
|
||||||
variables can be specified, in which case each address will be tried until a working
|
variables can be specified, in which case each address will be tried until a working
|
||||||
connection has been established.
|
connection has been established.
|
||||||
|
.It Va Cipher Li = Ar cipher Pq aes-256-cbc
|
||||||
.It Va Cipher Li = Ar cipher Pq blowfish
|
|
||||||
The symmetric cipher algorithm used to encrypt UDP packets.
|
The symmetric cipher algorithm used to encrypt UDP packets.
|
||||||
Any cipher supported by OpenSSL is recognised.
|
Any cipher supported by LibreSSL or OpenSSL is recognised.
|
||||||
Furthermore, specifying
|
Furthermore, specifying
|
||||||
.Qq none
|
.Qq none
|
||||||
will turn off packet encryption.
|
will turn off packet encryption.
|
||||||
It is best to use only those ciphers which support CBC mode.
|
It is best to use only those ciphers which support CBC mode.
|
||||||
|
.It Va ClampMSS Li = yes | no Pq yes
|
||||||
|
This option specifies whether tinc should clamp the maximum segment size (MSS)
|
||||||
|
of TCP packets to the path MTU. This helps in situations where ICMP
|
||||||
|
Fragmentation Needed or Packet too Big messages are dropped by firewalls.
|
||||||
.It Va Compression Li = Ar level Pq 0
|
.It Va Compression Li = Ar level Pq 0
|
||||||
This option sets the level of compression used for UDP packets.
|
This option sets the level of compression used for UDP packets.
|
||||||
Possible values are 0 (off), 1 (fast zlib) and any integer up to 9 (best zlib),
|
Possible values are 0 (off), 1 (fast zlib) and any integer up to 9 (best zlib),
|
||||||
10 (fast lzo) and 11 (best lzo).
|
10 (fast lzo) and 11 (best lzo).
|
||||||
|
.It Va Digest Li = Ar digest Pq sha256
|
||||||
.It Va Digest Li = Ar digest Pq sha1
|
|
||||||
The digest algorithm used to authenticate UDP packets.
|
The digest algorithm used to authenticate UDP packets.
|
||||||
Any digest supported by OpenSSL is recognised.
|
Any digest supported by LibreSSL or OpenSSL is recognised.
|
||||||
Furthermore, specifying
|
Furthermore, specifying
|
||||||
.Qq none
|
.Qq none
|
||||||
will turn off packet authentication.
|
will turn off packet authentication.
|
||||||
|
|
||||||
.It Va IndirectData Li = yes | no Pq no
|
.It Va IndirectData Li = yes | no Pq no
|
||||||
This option specifies whether other tinc daemons besides the one you specified with
|
When set to yes, only nodes which already have a meta connection to you
|
||||||
.Va ConnectTo
|
will try to establish direct communication with you.
|
||||||
can make a direct connection to you.
|
It is best to leave this option out or set it to no.
|
||||||
This is especially useful if you are behind a firewall
|
|
||||||
and it is impossible to make a connection from the outside to your tinc daemon.
|
|
||||||
Otherwise, it is best to leave this option out or set it to no.
|
|
||||||
|
|
||||||
.It Va MACLength Li = Ar length Pq 4
|
.It Va MACLength Li = Ar length Pq 4
|
||||||
The length of the message authentication code used to authenticate UDP packets.
|
The length of the message authentication code used to authenticate UDP packets.
|
||||||
Can be anything from
|
Can be anything from
|
||||||
.Qq 0
|
.Qq 0
|
||||||
up to the length of the digest produced by the digest algorithm.
|
up to the length of the digest produced by the digest algorithm.
|
||||||
|
|
||||||
.It Va PMTU Li = Ar mtu Po 1514 Pc
|
.It Va PMTU Li = Ar mtu Po 1514 Pc
|
||||||
This option controls the initial path MTU to this node.
|
This option controls the initial path MTU to this node.
|
||||||
|
|
||||||
.It Va PMTUDiscovery Li = yes | no Po yes Pc
|
.It Va PMTUDiscovery Li = yes | no Po yes Pc
|
||||||
When this option is enabled, tinc will try to discover the path MTU to this node.
|
When this option is enabled, tinc will try to discover the path MTU to this node.
|
||||||
After the path MTU has been discovered, it will be enforced on the VPN.
|
After the path MTU has been discovered, it will be enforced on the VPN.
|
||||||
|
|
||||||
.It Va Port Li = Ar port Pq 655
|
.It Va Port Li = Ar port Pq 655
|
||||||
The port number on which this tinc daemon is listening for incoming connections.
|
The port number on which this tinc daemon is listening for incoming connections,
|
||||||
|
which is used if no port number is specified in an
|
||||||
|
.Va Address
|
||||||
|
statement.
|
||||||
.It Va PublicKey Li = Ar key Bq obsolete
|
.It Va PublicKey Li = Ar key Bq obsolete
|
||||||
The public RSA key of this tinc daemon.
|
The public RSA key of this tinc daemon.
|
||||||
It will be used to cryptographically verify it's identity and to set up a secure connection.
|
It will be used to cryptographically verify it's identity and to set up a secure connection.
|
||||||
|
|
||||||
.It Va PublicKeyFile Li = Ar filename Bq obsolete
|
.It Va PublicKeyFile Li = Ar filename Bq obsolete
|
||||||
The file in which the public RSA key of this tinc daemon resides.
|
The file in which the public RSA key of this tinc daemon resides.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
From version 1.0pre4 on
|
From version 1.0pre4 on
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
|
|
@ -393,8 +521,7 @@ the above two options then are not necessary.
|
||||||
Either the PEM format is used, or exactly one of the above two options must be specified
|
Either the PEM format is used, or exactly one of the above two options must be specified
|
||||||
in each host configuration file,
|
in each host configuration file,
|
||||||
if you want to be able to establish a connection with that host.
|
if you want to be able to establish a connection with that host.
|
||||||
|
.It Va Subnet Li = Ar address Ns Op Li / Ns Ar prefixlength Ns Op Li # Ns Ar weight
|
||||||
.It Va Subnet Li = Ar address Ns Op Li / Ns Ar prefixlength
|
|
||||||
The subnet which this tinc daemon will serve.
|
The subnet which this tinc daemon will serve.
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
tries to look up which other daemon it should send a packet to by searching the appropriate subnet.
|
tries to look up which other daemon it should send a packet to by searching the appropriate subnet.
|
||||||
|
|
@ -403,69 +530,74 @@ it will be sent to the daemon who has this subnet in his host configuration file
|
||||||
Multiple
|
Multiple
|
||||||
.Va Subnet
|
.Va Subnet
|
||||||
variables can be specified.
|
variables can be specified.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
Subnets can either be single MAC, IPv4 or IPv6 addresses,
|
Subnets can either be single MAC, IPv4 or IPv6 addresses,
|
||||||
in which case a subnet consisting of only that single address is assumed,
|
in which case a subnet consisting of only that single address is assumed,
|
||||||
or they can be a IPv4 or IPv6 network address with a prefixlength.
|
or they can be a IPv4 or IPv6 network address with a prefixlength.
|
||||||
Shorthand notations are not supported.
|
|
||||||
For example, IPv4 subnets must be in a form like 192.168.1.0/24,
|
For example, IPv4 subnets must be in a form like 192.168.1.0/24,
|
||||||
where 192.168.1.0 is the network address and 24 is the number of bits set in the netmask.
|
where 192.168.1.0 is the network address and 24 is the number of bits set in the netmask.
|
||||||
Note that subnets like 192.168.1.1/24 are invalid!
|
Note that subnets like 192.168.1.1/24 are invalid!
|
||||||
Read a networking HOWTO/FAQ/guide if you don't understand this.
|
Read a networking HOWTO/FAQ/guide if you don't understand this.
|
||||||
IPv6 subnets are notated like fec0:0:0:1:0:0:0:0/64.
|
IPv6 subnets are notated like fec0:0:0:1::/64.
|
||||||
MAC addresses are notated like 0:1a:2b:3c:4d:5e.
|
MAC addresses are notated like 0:1a:2b:3c:4d:5e.
|
||||||
|
.Pp
|
||||||
.It Va TCPOnly Li = yes | no Pq no
|
A Subnet can be given a weight to indicate its priority over identical Subnets
|
||||||
|
owned by different nodes. The default weight is 10. Lower values indicate
|
||||||
|
higher priority. Packets will be sent to the node with the highest priority,
|
||||||
|
unless that node is not reachable, in which case the node with the next highest
|
||||||
|
priority will be tried, and so on.
|
||||||
|
.It Va TCPOnly Li = yes | no Pq no Bq obsolete
|
||||||
If this variable is set to yes,
|
If this variable is set to yes,
|
||||||
then the packets are tunnelled over the TCP connection instead of a UDP connection.
|
then the packets are tunnelled over the TCP connection instead of a UDP connection.
|
||||||
This is especially useful for those who want to run a tinc daemon
|
This is especially useful for those who want to run a tinc daemon
|
||||||
from behind a masquerading firewall,
|
from behind a masquerading firewall,
|
||||||
or if UDP packet routing is disabled somehow.
|
or if UDP packet routing is disabled somehow.
|
||||||
Setting this options also implicitly sets IndirectData.
|
Setting this options also implicitly sets IndirectData.
|
||||||
|
.Pp
|
||||||
|
Since version 1.0.10, tinc will automatically detect whether communication via
|
||||||
|
UDP is possible or not.
|
||||||
.El
|
.El
|
||||||
|
|
||||||
.Sh SCRIPTS
|
.Sh SCRIPTS
|
||||||
Apart from reading the server and host configuration files,
|
Apart from reading the server and host configuration files,
|
||||||
tinc can also run scripts at certain moments.
|
tinc can also run scripts at certain moments.
|
||||||
Under Windows (not Cygwin), the scripts should have the extension
|
Below is a list of filenames of scripts and a description of when they are run.
|
||||||
|
A script is only run if it exists and if it is executable.
|
||||||
|
.Pp
|
||||||
|
Scripts are run synchronously;
|
||||||
|
this means that tinc will temporarily stop processing packets until the called script finishes executing.
|
||||||
|
This guarantees that scripts will execute in the exact same order as the events that trigger them.
|
||||||
|
If you need to run commands asynchronously, you have to ensure yourself that they are being run in the background.
|
||||||
|
.Pp
|
||||||
|
Under Windows (not Cygwin), the scripts must have the extension
|
||||||
.Pa .bat .
|
.Pa .bat .
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc-up
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc-up
|
||||||
This is the most important script.
|
This is the most important script.
|
||||||
If it is present it will be executed right after the tinc daemon has been started and has connected to the virtual network device.
|
If it is present it will be executed right after the tinc daemon has been started and has connected to the virtual network device.
|
||||||
It should be used to set up the corresponding network interface,
|
It should be used to set up the corresponding network interface,
|
||||||
but can also be used to start other things.
|
but can also be used to start other things.
|
||||||
|
.Pp
|
||||||
Under Windows you can use the Network Connections control panel instead of creating this script.
|
Under Windows you can use the Network Connections control panel instead of creating this script.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc-down
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc-down
|
||||||
This script is started right before the tinc daemon quits.
|
This script is started right before the tinc daemon quits.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/ Ns Ar HOST Ns Pa -up
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/ Ns Ar HOST Ns Pa -up
|
||||||
This script is started when the tinc daemon with name
|
This script is started when the tinc daemon with name
|
||||||
.Ar HOST
|
.Ar HOST
|
||||||
becomes reachable.
|
becomes reachable.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/ Ns Ar HOST Ns Pa -down
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/ Ns Ar HOST Ns Pa -down
|
||||||
This script is started when the tinc daemon with name
|
This script is started when the tinc daemon with name
|
||||||
.Ar HOST
|
.Ar HOST
|
||||||
becomes unreachable.
|
becomes unreachable.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /host-up
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /host-up
|
||||||
This script is started when any host becomes reachable.
|
This script is started when any host becomes reachable.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /host-down
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /host-down
|
||||||
This script is started when any host becomes unreachable.
|
This script is started when any host becomes unreachable.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /subnet-up
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /subnet-up
|
||||||
This script is started when a Subnet becomes reachable.
|
This script is started when a Subnet becomes reachable.
|
||||||
The Subnet and the node it belongs to are passed in environment variables.
|
The Subnet and the node it belongs to are passed in environment variables.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /subnet-down
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /subnet-down
|
||||||
This script is started when a Subnet becomes unreachable.
|
This script is started when a Subnet becomes unreachable.
|
||||||
.El
|
.El
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
The scripts are started without command line arguments, but can make use of certain environment variables.
|
The scripts are started without command line arguments, but can make use of certain environment variables.
|
||||||
Under UNIX like operating systems the names of environment variables must be preceded by a
|
Under UNIX like operating systems the names of environment variables must be preceded by a
|
||||||
|
|
@ -477,65 +609,56 @@ files, they have to be put between
|
||||||
.Li %
|
.Li %
|
||||||
signs.
|
signs.
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
|
|
||||||
.It Ev NETNAME
|
.It Ev NETNAME
|
||||||
If a netname was specified, this environment variable contains it.
|
If a netname was specified, this environment variable contains it.
|
||||||
|
|
||||||
.It Ev NAME
|
.It Ev NAME
|
||||||
Contains the name of this tinc daemon.
|
Contains the name of this tinc daemon.
|
||||||
|
|
||||||
.It Ev DEVICE
|
.It Ev DEVICE
|
||||||
Contains the name of the virtual network device that tinc uses.
|
Contains the name of the virtual network device that tinc uses.
|
||||||
|
|
||||||
.It Ev INTERFACE
|
.It Ev INTERFACE
|
||||||
Contains the name of the virtual network interface that tinc uses.
|
Contains the name of the virtual network interface that tinc uses.
|
||||||
This should be used for commands like
|
This should be used for commands like
|
||||||
.Pa ifconfig .
|
.Pa ifconfig .
|
||||||
|
|
||||||
.It Ev NODE
|
.It Ev NODE
|
||||||
When a host becomes (un)reachable, this is set to its name.
|
When a host becomes (un)reachable, this is set to its name.
|
||||||
If a subnet becomes (un)reachable, this is set to the owner of that subnet.
|
If a subnet becomes (un)reachable, this is set to the owner of that subnet.
|
||||||
|
|
||||||
.It Ev REMOTEADDRESS
|
.It Ev REMOTEADDRESS
|
||||||
When a host becomes (un)reachable, this is set to its real address.
|
When a host becomes (un)reachable, this is set to its real address.
|
||||||
|
|
||||||
.It Ev REMOTEPORT
|
.It Ev REMOTEPORT
|
||||||
When a host becomes (un)reachable, this is set to the port number it uses for communication with other tinc daemons.
|
When a host becomes (un)reachable, this is set to the port number it uses for communication with other tinc daemons.
|
||||||
|
|
||||||
.It Ev SUBNET
|
.It Ev SUBNET
|
||||||
When a subnet becomes (un)reachable, this is set to the subnet.
|
When a subnet becomes (un)reachable, this is set to the subnet.
|
||||||
|
.It Ev WEIGHT
|
||||||
|
When a subnet becomes (un)reachable, this is set to the subnet weight.
|
||||||
.El
|
.El
|
||||||
|
.Pp
|
||||||
|
Do not forget that under UNIX operating systems, you have to make the scripts executable, using the command
|
||||||
|
.Nm chmod Li a+x Pa script .
|
||||||
.Sh FILES
|
.Sh FILES
|
||||||
The most important files are:
|
The most important files are:
|
||||||
.Bl -tag -width indent
|
.Bl -tag -width indent
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/
|
.It Pa @sysconfdir@/tinc/
|
||||||
The top directory for configuration files.
|
The top directory for configuration files.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc.conf
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc.conf
|
||||||
The default name of the server configuration file for net
|
The default name of the server configuration file for net
|
||||||
.Ar NETNAME .
|
.Ar NETNAME .
|
||||||
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /conf.d/
|
||||||
|
Optional directory from which any *.conf file will be loaded
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /hosts/
|
||||||
Host configuration files are kept in this directory.
|
Host configuration files are kept in this directory.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc-up
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc-up
|
||||||
If an executable file with this name exists,
|
If an executable file with this name exists,
|
||||||
it will be executed right after the tinc daemon has connected to the virtual network device.
|
it will be executed right after the tinc daemon has connected to the virtual network device.
|
||||||
It can be used to set up the corresponding network interface.
|
It can be used to set up the corresponding network interface.
|
||||||
|
|
||||||
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc-down
|
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /tinc-down
|
||||||
If an executable file with this name exists,
|
If an executable file with this name exists,
|
||||||
it will be executed right before the tinc daemon is going to close
|
it will be executed right before the tinc daemon is going to close
|
||||||
its connection to the virtual network device.
|
its connection to the virtual network device.
|
||||||
.El
|
.El
|
||||||
|
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
.Xr tincd 8 ,
|
.Xr tincd 8 ,
|
||||||
.Pa http://www.tinc-vpn.org/ ,
|
.Pa https://www.tinc-vpn.org/ ,
|
||||||
.Pa http://www.linuxdoc.org/LDP/nag2/ .
|
.Pa http://www.tldp.org/LDP/nag2/ .
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
The full documentation for
|
The full documentation for
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
|
|
@ -543,7 +666,6 @@ is maintained as a Texinfo manual.
|
||||||
If the info and tinc programs are properly installed at your site, the command
|
If the info and tinc programs are properly installed at your site, the command
|
||||||
.Ic info tinc
|
.Ic info tinc
|
||||||
should give you access to the complete manual.
|
should give you access to the complete manual.
|
||||||
|
|
||||||
.Pp
|
.Pp
|
||||||
.Nm tinc
|
.Nm tinc
|
||||||
comes with ABSOLUTELY NO WARRANTY.
|
comes with ABSOLUTELY NO WARRANTY.
|
||||||
|
|
|
||||||
1795
doc/tinc.info
1795
doc/tinc.info
File diff suppressed because it is too large
Load diff
639
doc/tinc.texi
639
doc/tinc.texi
File diff suppressed because it is too large
Load diff
|
|
@ -1,249 +0,0 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<!-- Created on December, 26 2008 by texi2html 1.78 -->
|
|
||||||
<!--
|
|
||||||
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
|
||||||
Karl Berry <karl@freefriends.org>
|
|
||||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
|
||||||
and many others.
|
|
||||||
Maintained by: Many creative people.
|
|
||||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
|
||||||
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<title>tinc Manual: 1. Introduction</title>
|
|
||||||
|
|
||||||
<meta name="description" content="tinc Manual: 1. Introduction">
|
|
||||||
<meta name="keywords" content="tinc Manual: 1. Introduction">
|
|
||||||
<meta name="resource-type" content="document">
|
|
||||||
<meta name="distribution" content="global">
|
|
||||||
<meta name="Generator" content="texi2html 1.78">
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
<!--
|
|
||||||
a.summary-letter {text-decoration: none}
|
|
||||||
pre.display {font-family: serif}
|
|
||||||
pre.format {font-family: serif}
|
|
||||||
pre.menu-comment {font-family: serif}
|
|
||||||
pre.menu-preformatted {font-family: serif}
|
|
||||||
pre.smalldisplay {font-family: serif; font-size: smaller}
|
|
||||||
pre.smallexample {font-size: smaller}
|
|
||||||
pre.smallformat {font-family: serif; font-size: smaller}
|
|
||||||
pre.smalllisp {font-size: smaller}
|
|
||||||
span.roman {font-family:serif; font-weight:normal;}
|
|
||||||
span.sansserif {font-family:sans-serif; font-weight:normal;}
|
|
||||||
ul.toc {list-style: none}
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
|
||||||
|
|
||||||
<a name="Introduction"></a>
|
|
||||||
<a name="SEC1"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[ < ]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC2" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[ << ]</td>
|
|
||||||
<td valign="middle" align="left">[ Up ]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_1.html#SEC5" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h1 class="chapter"> 1. Introduction </h1>
|
|
||||||
|
|
||||||
<p>Tinc is a Virtual Private Network (VPN) daemon that uses tunneling and
|
|
||||||
encryption to create a secure private network between hosts on the
|
|
||||||
Internet.
|
|
||||||
</p>
|
|
||||||
<p>Because the tunnel appears to the IP level network code as a normal
|
|
||||||
network device, there is no need to adapt any existing software.
|
|
||||||
The encrypted tunnels allows VPN sites to share information with each other
|
|
||||||
over the Internet without exposing any information to others.
|
|
||||||
</p>
|
|
||||||
<p>This document is the manual for tinc. Included are chapters on how to
|
|
||||||
configure your computer to use tinc, as well as the configuration
|
|
||||||
process of tinc itself.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC2">1.1 Virtual Private Networks</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC3">1.2 tinc</a></td><td> </td><td align="left" valign="top"> About tinc
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC4">1.3 Supported platforms</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Virtual-Private-Networks"></a>
|
|
||||||
<a name="SEC2"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC1" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC3" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_1.html#SEC5" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 1.1 Virtual Private Networks </h2>
|
|
||||||
|
|
||||||
<a name="IDX1"></a>
|
|
||||||
<p>A Virtual Private Network or VPN is a network that can only be accessed
|
|
||||||
by a few elected computers that participate. This goal is achievable in
|
|
||||||
more than just one way.
|
|
||||||
</p>
|
|
||||||
<a name="IDX2"></a>
|
|
||||||
<p>Private networks can consist of a single stand-alone Ethernet LAN. Or
|
|
||||||
even two computers hooked up using a null-modem cable. In these cases,
|
|
||||||
it is
|
|
||||||
obvious that the network is <em>private</em>, no one can access it from the
|
|
||||||
outside. But if your computers are linked to the Internet, the network
|
|
||||||
is not private anymore, unless one uses firewalls to block all private
|
|
||||||
traffic. But then, there is no way to send private data to trusted
|
|
||||||
computers on the other end of the Internet.
|
|
||||||
</p>
|
|
||||||
<p>This problem can be solved by using <em>virtual</em> networks. Virtual
|
|
||||||
networks can live on top of other networks, but they use encapsulation to
|
|
||||||
keep using their private address space so they do not interfere with
|
|
||||||
the Internet. Mostly, virtual networks appear like a singe LAN, even though
|
|
||||||
they can span the entire world. But virtual networks can't be secured
|
|
||||||
by using firewalls, because the traffic that flows through it has to go
|
|
||||||
through the Internet, where other people can look at it.
|
|
||||||
</p>
|
|
||||||
<p>As is the case with either type of VPN, anybody could eavesdrop. Or
|
|
||||||
worse, alter data. Hence it's probably advisable to encrypt the data
|
|
||||||
that flows over the network.
|
|
||||||
</p>
|
|
||||||
<p>When one introduces encryption, we can form a true VPN. Other people may
|
|
||||||
see encrypted traffic, but if they don't know how to decipher it (they
|
|
||||||
need to know the key for that), they cannot read the information that flows
|
|
||||||
through the VPN. This is what tinc was made for.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="tinc"></a>
|
|
||||||
<a name="SEC3"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC2" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC4" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_1.html#SEC5" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 1.2 tinc </h2>
|
|
||||||
|
|
||||||
<a name="IDX3"></a>
|
|
||||||
<p>I really don't quite remember what got us started, but it must have been
|
|
||||||
Guus' idea. He wrote a simple implementation (about 50 lines of C) that
|
|
||||||
used the ethertap device that Linux knows of since somewhere
|
|
||||||
about kernel 2.1.60. It didn't work immediately and he improved it a
|
|
||||||
bit. At this stage, the project was still simply called "vpnd".
|
|
||||||
</p>
|
|
||||||
<p>Since then, a lot has changed—to say the least.
|
|
||||||
</p>
|
|
||||||
<a name="IDX4"></a>
|
|
||||||
<p>Tinc now supports encryption, it consists of a single daemon (tincd) for
|
|
||||||
both the receiving and sending end, it has become largely
|
|
||||||
runtime-configurable—in short, it has become a full-fledged
|
|
||||||
professional package.
|
|
||||||
</p>
|
|
||||||
<a name="IDX5"></a>
|
|
||||||
<p>Tinc also allows more than two sites to connect to eachother and form a single VPN.
|
|
||||||
Traditionally VPNs are created by making tunnels, which only have two endpoints.
|
|
||||||
Larger VPNs with more sites are created by adding more tunnels.
|
|
||||||
Tinc takes another approach: only endpoints are specified,
|
|
||||||
the software itself will take care of creating the tunnels.
|
|
||||||
This allows for easier configuration and improved scalability.
|
|
||||||
</p>
|
|
||||||
<p>A lot can—and will be—changed. We have a number of things that we would like to
|
|
||||||
see in the future releases of tinc. Not everything will be available in
|
|
||||||
the near future. Our first objective is to make tinc work perfectly as
|
|
||||||
it stands, and then add more advanced features.
|
|
||||||
</p>
|
|
||||||
<p>Meanwhile, we're always open-minded towards new ideas. And we're
|
|
||||||
available too.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Supported-platforms"></a>
|
|
||||||
<a name="SEC4"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC3" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_1.html#SEC5" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_1.html#SEC5" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 1.3 Supported platforms </h2>
|
|
||||||
|
|
||||||
<a name="IDX6"></a>
|
|
||||||
<p>Tinc has been verified to work under Linux, FreeBSD, OpenBSD, NetBSD, MacOS/X (Darwin), Solaris, and Windows (both natively and in a Cygwin environment),
|
|
||||||
with various hardware architectures. These are some of the platforms
|
|
||||||
that are supported by the universal tun/tap device driver or other virtual network device drivers.
|
|
||||||
Without such a driver, tinc will most
|
|
||||||
likely compile and run, but it will not be able to send or receive data
|
|
||||||
packets.
|
|
||||||
</p>
|
|
||||||
<p>For an up to date list of supported platforms, please check the list on
|
|
||||||
our website:
|
|
||||||
<a href="http://www.tinc-vpn.org/platforms">http://www.tinc-vpn.org/platforms</a>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC1" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_1.html#SEC5" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<p>
|
|
||||||
<font size="-1">
|
|
||||||
This document was generated by <em>Guus Sliepen</em> on <em>December, 26 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
|
|
||||||
</font>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,536 +0,0 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<!-- Created on December, 26 2008 by texi2html 1.78 -->
|
|
||||||
<!--
|
|
||||||
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
|
||||||
Karl Berry <karl@freefriends.org>
|
|
||||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
|
||||||
and many others.
|
|
||||||
Maintained by: Many creative people.
|
|
||||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
|
||||||
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<title>tinc Manual: 2. Preparations</title>
|
|
||||||
|
|
||||||
<meta name="description" content="tinc Manual: 2. Preparations">
|
|
||||||
<meta name="keywords" content="tinc Manual: 2. Preparations">
|
|
||||||
<meta name="resource-type" content="document">
|
|
||||||
<meta name="distribution" content="global">
|
|
||||||
<meta name="Generator" content="texi2html 1.78">
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
<!--
|
|
||||||
a.summary-letter {text-decoration: none}
|
|
||||||
pre.display {font-family: serif}
|
|
||||||
pre.format {font-family: serif}
|
|
||||||
pre.menu-comment {font-family: serif}
|
|
||||||
pre.menu-preformatted {font-family: serif}
|
|
||||||
pre.smalldisplay {font-family: serif; font-size: smaller}
|
|
||||||
pre.smallexample {font-size: smaller}
|
|
||||||
pre.smallformat {font-family: serif; font-size: smaller}
|
|
||||||
pre.smalllisp {font-size: smaller}
|
|
||||||
span.roman {font-family:serif; font-weight:normal;}
|
|
||||||
span.sansserif {font-family:sans-serif; font-weight:normal;}
|
|
||||||
ul.toc {list-style: none}
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
|
||||||
|
|
||||||
<a name="Preparations"></a>
|
|
||||||
<a name="SEC5"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="tinc_0.html#SEC4" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC6" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h1 class="chapter"> 2. Preparations </h1>
|
|
||||||
|
|
||||||
<p>This chapter contains information on how to prepare your system to
|
|
||||||
support tinc.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC6">2.1 Configuring the kernel</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC14">2.2 Libraries</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Configuring-the-kernel"></a>
|
|
||||||
<a name="SEC6"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC5" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC7" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 2.1 Configuring the kernel </h2>
|
|
||||||
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC7">2.1.1 Configuration of Linux kernels</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC8">2.1.2 Configuration of FreeBSD kernels</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC9">2.1.3 Configuration of OpenBSD kernels</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC10">2.1.4 Configuration of NetBSD kernels</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC11">2.1.5 Configuration of Solaris kernels</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC12">2.1.6 Configuration of Darwin (MacOS/X) kernels</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC13">2.1.7 Configuration of Windows</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Configuration-of-Linux-kernels"></a>
|
|
||||||
<a name="SEC7"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC6" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC8" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC6" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.1.1 Configuration of Linux kernels </h3>
|
|
||||||
|
|
||||||
<p>For tinc to work, you need a kernel that supports the Universal tun/tap device.
|
|
||||||
Most distributions come with kernels that already support this.
|
|
||||||
Here are the options you have to turn on when configuring a new kernel:
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">Code maturity level options
|
|
||||||
[*] Prompt for development and/or incomplete code/drivers
|
|
||||||
Network device support
|
|
||||||
<M> Universal tun/tap device driver support
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<p>It's not necessary to compile this driver as a module, even if you are going to
|
|
||||||
run more than one instance of tinc.
|
|
||||||
</p>
|
|
||||||
<p>If you decide to build the tun/tap driver as a kernel module, add these lines
|
|
||||||
to ‘<tt>/etc/modules.conf</tt>’:
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">alias char-major-10-200 tun
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Configuration-of-FreeBSD-kernels"></a>
|
|
||||||
<a name="SEC8"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC7" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC9" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC6" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.1.2 Configuration of FreeBSD kernels </h3>
|
|
||||||
|
|
||||||
<p>For FreeBSD version 4.1 and higher, tun and tap drivers are included in the default kernel configuration.
|
|
||||||
Using tap devices is recommended.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Configuration-of-OpenBSD-kernels"></a>
|
|
||||||
<a name="SEC9"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC8" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC10" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC6" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.1.3 Configuration of OpenBSD kernels </h3>
|
|
||||||
|
|
||||||
<p>For OpenBSD version 2.9 and higher,
|
|
||||||
the tun driver is included in the default kernel configuration.
|
|
||||||
There is also a kernel patch from <a href="http://diehard.n-r-g.com/stuff/openbsd/">http://diehard.n-r-g.com/stuff/openbsd/</a>
|
|
||||||
which adds a tap device to OpenBSD which should work with tinc,
|
|
||||||
but with recent versions of OpenBSD,
|
|
||||||
a tun device can act as a tap device by setting the link0 option with ifconfig.
|
|
||||||
</p>
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Configuration-of-NetBSD-kernels"></a>
|
|
||||||
<a name="SEC10"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC9" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC11" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC6" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.1.4 Configuration of NetBSD kernels </h3>
|
|
||||||
|
|
||||||
<p>For NetBSD version 1.5.2 and higher,
|
|
||||||
the tun driver is included in the default kernel configuration.
|
|
||||||
</p>
|
|
||||||
<p>Tunneling IPv6 may not work on NetBSD's tun device.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Configuration-of-Solaris-kernels"></a>
|
|
||||||
<a name="SEC11"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC10" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC12" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC6" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.1.5 Configuration of Solaris kernels </h3>
|
|
||||||
|
|
||||||
<p>For Solaris 8 (SunOS 5.8) and higher,
|
|
||||||
the tun driver may or may not be included in the default kernel configuration.
|
|
||||||
If it isn't, the source can be downloaded from <a href="http://vtun.sourceforge.net/tun/">http://vtun.sourceforge.net/tun/</a>.
|
|
||||||
For x86 and sparc64 architectures, precompiled versions can be found at <a href="http://www.monkey.org/~dugsong/fragroute/">http://www.monkey.org/~dugsong/fragroute/</a>.
|
|
||||||
If the ‘<tt>net/if_tun.h</tt>’ header file is missing, install it from the source package.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="NOD12"></a>
|
|
||||||
<a name="SEC12"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC11" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC13" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC6" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.1.6 Configuration of Darwin (MacOS/X) kernels </h3>
|
|
||||||
|
|
||||||
<p>Tinc on Darwin relies on a tunnel driver for its data acquisition from the kernel.
|
|
||||||
Tinc supports either the driver from <a href="http://www-user.rhrk.uni-kl.de/~nissler/tuntap/">http://www-user.rhrk.uni-kl.de/~nissler/tuntap/</a>,
|
|
||||||
which supports both tun and tap style devices,
|
|
||||||
and also the driver from from <a href="http://chrisp.de/en/projects/tunnel.html">http://chrisp.de/en/projects/tunnel.html</a>.
|
|
||||||
The former driver is recommended.
|
|
||||||
The tunnel driver must be loaded before starting tinc with the following command:
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">kmodload tunnel
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Configuration-of-Windows"></a>
|
|
||||||
<a name="SEC13"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC12" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC14" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC6" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.1.7 Configuration of Windows </h3>
|
|
||||||
|
|
||||||
<p>You will need to install the latest TAP-Win32 driver from OpenVPN.
|
|
||||||
You can download it from <a href="http://openvpn.sourceforge.net">http://openvpn.sourceforge.net</a>.
|
|
||||||
Using the Network Connections control panel,
|
|
||||||
configure the TAP-Win32 network interface in the same way as you would do from the tinc-up script,
|
|
||||||
as explained in the rest of the documentation.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Libraries"></a>
|
|
||||||
<a name="SEC14"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC13" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC15" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 2.2 Libraries </h2>
|
|
||||||
|
|
||||||
<p>Before you can configure or build tinc, you need to have the OpenSSL,
|
|
||||||
zlib and lzo libraries installed on your system. If you try to configure tinc without
|
|
||||||
having them installed, configure will give you an error message, and stop.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC15">2.2.1 OpenSSL</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC17">2.2.2 zlib</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC18">2.2.3 lzo</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="OpenSSL"></a>
|
|
||||||
<a name="SEC15"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC14" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC17" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC14" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.2.1 OpenSSL </h3>
|
|
||||||
|
|
||||||
<p>For all cryptography-related functions, tinc uses the functions provided
|
|
||||||
by the OpenSSL library.
|
|
||||||
</p>
|
|
||||||
<p>If this library is not installed, you wil get an error when configuring
|
|
||||||
tinc for build. Support for running tinc without having OpenSSL
|
|
||||||
installed <em>may</em> be added in the future.
|
|
||||||
</p>
|
|
||||||
<p>You can use your operating system's package manager to install this if
|
|
||||||
available. Make sure you install the development AND runtime versions
|
|
||||||
of this package.
|
|
||||||
</p>
|
|
||||||
<p>If you have to install OpenSSL manually, you can get the source code
|
|
||||||
from <a href="http://www.openssl.org/">http://www.openssl.org/</a>. Instructions on how to configure,
|
|
||||||
build and install this package are included within the package. Please
|
|
||||||
make sure you build development and runtime libraries (which is the
|
|
||||||
default).
|
|
||||||
</p>
|
|
||||||
<p>If you installed the OpenSSL libraries from source, it may be necessary
|
|
||||||
to let configure know where they are, by passing configure one of the
|
|
||||||
–with-openssl-* parameters.
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">--with-openssl=DIR OpenSSL library and headers prefix
|
|
||||||
--with-openssl-include=DIR OpenSSL headers directory
|
|
||||||
(Default is OPENSSL_DIR/include)
|
|
||||||
--with-openssl-lib=DIR OpenSSL library directory
|
|
||||||
(Default is OPENSSL_DIR/lib)
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
|
|
||||||
<a name="SEC16"></a>
|
|
||||||
<h4 class="subsubheading"> License </h4>
|
|
||||||
|
|
||||||
<p>The complete source code of tinc is covered by the GNU GPL version 2.
|
|
||||||
Since the license under which OpenSSL is distributed is not directly
|
|
||||||
compatible with the terms of the GNU GPL
|
|
||||||
<a href="http://www.openssl.org/support/faq.html#LEGAL2">http://www.openssl.org/support/faq.html#LEGAL2</a>, we
|
|
||||||
include an exemption to the GPL (see also the file COPYING.README) to allow
|
|
||||||
everyone to create a statically or dynamically linked executable:
|
|
||||||
</p>
|
|
||||||
<blockquote><p>This program is released under the GPL with the additional exemption
|
|
||||||
that compiling, linking, and/or using OpenSSL is allowed. You may
|
|
||||||
provide binary packages linked to the OpenSSL libraries, provided that
|
|
||||||
all other requirements of the GPL are met.
|
|
||||||
</p></blockquote>
|
|
||||||
|
|
||||||
<p>Since the LZO library used by tinc is also covered by the GPL,
|
|
||||||
we also present the following exemption:
|
|
||||||
</p>
|
|
||||||
<blockquote><p>Hereby I grant a special exception to the tinc VPN project
|
|
||||||
(http://www.tinc-vpn.org/) to link the LZO library with the OpenSSL library
|
|
||||||
(http://www.openssl.org).
|
|
||||||
</p>
|
|
||||||
<p>Markus F.X.J. Oberhumer
|
|
||||||
</p></blockquote>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="zlib"></a>
|
|
||||||
<a name="SEC17"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC15" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC18" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC14" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.2.2 zlib </h3>
|
|
||||||
|
|
||||||
<p>For the optional compression of UDP packets, tinc uses the functions provided
|
|
||||||
by the zlib library.
|
|
||||||
</p>
|
|
||||||
<p>If this library is not installed, you wil get an error when configuring
|
|
||||||
tinc for build. Support for running tinc without having zlib
|
|
||||||
installed <em>may</em> be added in the future.
|
|
||||||
</p>
|
|
||||||
<p>You can use your operating system's package manager to install this if
|
|
||||||
available. Make sure you install the development AND runtime versions
|
|
||||||
of this package.
|
|
||||||
</p>
|
|
||||||
<p>If you have to install zlib manually, you can get the source code
|
|
||||||
from <a href="http://www.gzip.org/zlib/">http://www.gzip.org/zlib/</a>. Instructions on how to configure,
|
|
||||||
build and install this package are included within the package. Please
|
|
||||||
make sure you build development and runtime libraries (which is the
|
|
||||||
default).
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="lzo"></a>
|
|
||||||
<a name="SEC18"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC17" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC14" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 2.2.3 lzo </h3>
|
|
||||||
|
|
||||||
<a name="IDX7"></a>
|
|
||||||
<p>Another form of compression is offered using the lzo library.
|
|
||||||
</p>
|
|
||||||
<p>If this library is not installed, you wil get an error when configuring
|
|
||||||
tinc for build. Support for running tinc without having lzo
|
|
||||||
installed <em>may</em> be added in the future.
|
|
||||||
</p>
|
|
||||||
<p>You can use your operating system's package manager to install this if
|
|
||||||
available. Make sure you install the development AND runtime versions
|
|
||||||
of this package.
|
|
||||||
</p>
|
|
||||||
<p>If you have to install lzo manually, you can get the source code
|
|
||||||
from <a href="http://www.oberhumer.com/opensource/lzo/">http://www.oberhumer.com/opensource/lzo/</a>. Instructions on how to configure,
|
|
||||||
build and install this package are included within the package. Please
|
|
||||||
make sure you build development and runtime libraries (which is the
|
|
||||||
default).
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_2.html#SEC19" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<p>
|
|
||||||
<font size="-1">
|
|
||||||
This document was generated by <em>Guus Sliepen</em> on <em>December, 26 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
|
|
||||||
</font>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,344 +0,0 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<!-- Created on December, 26 2008 by texi2html 1.78 -->
|
|
||||||
<!--
|
|
||||||
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
|
||||||
Karl Berry <karl@freefriends.org>
|
|
||||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
|
||||||
and many others.
|
|
||||||
Maintained by: Many creative people.
|
|
||||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
|
||||||
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<title>tinc Manual: 3. Installation</title>
|
|
||||||
|
|
||||||
<meta name="description" content="tinc Manual: 3. Installation">
|
|
||||||
<meta name="keywords" content="tinc Manual: 3. Installation">
|
|
||||||
<meta name="resource-type" content="document">
|
|
||||||
<meta name="distribution" content="global">
|
|
||||||
<meta name="Generator" content="texi2html 1.78">
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
<!--
|
|
||||||
a.summary-letter {text-decoration: none}
|
|
||||||
pre.display {font-family: serif}
|
|
||||||
pre.format {font-family: serif}
|
|
||||||
pre.menu-comment {font-family: serif}
|
|
||||||
pre.menu-preformatted {font-family: serif}
|
|
||||||
pre.smalldisplay {font-family: serif; font-size: smaller}
|
|
||||||
pre.smallexample {font-size: smaller}
|
|
||||||
pre.smallformat {font-family: serif; font-size: smaller}
|
|
||||||
pre.smalllisp {font-size: smaller}
|
|
||||||
span.roman {font-family:serif; font-weight:normal;}
|
|
||||||
span.sansserif {font-family:sans-serif; font-weight:normal;}
|
|
||||||
ul.toc {list-style: none}
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
|
||||||
|
|
||||||
<a name="Installation"></a>
|
|
||||||
<a name="SEC19"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="tinc_1.html#SEC18" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC20" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_1.html#SEC5" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h1 class="chapter"> 3. Installation </h1>
|
|
||||||
|
|
||||||
<p>If you use Debian, you may want to install one of the
|
|
||||||
precompiled packages for your system. These packages are equipped with
|
|
||||||
system startup scripts and sample configurations.
|
|
||||||
</p>
|
|
||||||
<p>If you cannot use one of the precompiled packages, or you want to compile tinc
|
|
||||||
for yourself, you can use the source. The source is distributed under
|
|
||||||
the GNU General Public License (GPL). Download the source from the
|
|
||||||
<a href="http://www.tinc-vpn.org/download">download page</a>, which has
|
|
||||||
the checksums of these files listed; you may wish to check these with
|
|
||||||
md5sum before continuing.
|
|
||||||
</p>
|
|
||||||
<p>Tinc comes in a convenient autoconf/automake package, which you can just
|
|
||||||
treat the same as any other package. Which is just untar it, type
|
|
||||||
`./configure' and then `make'.
|
|
||||||
More detailed instructions are in the file ‘<tt>INSTALL</tt>’, which is
|
|
||||||
included in the source distribution.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC20">3.1 Building and installing tinc</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC24">3.2 System files</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Building-and-installing-tinc"></a>
|
|
||||||
<a name="SEC20"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC19" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC21" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 3.1 Building and installing tinc </h2>
|
|
||||||
|
|
||||||
<p>Detailed instructions on configuring the source, building tinc and installing tinc
|
|
||||||
can be found in the file called ‘<tt>INSTALL</tt>’.
|
|
||||||
</p>
|
|
||||||
<p>If you happen to have a binary package for tinc for your distribution,
|
|
||||||
you can use the package management tools of that distribution to install tinc.
|
|
||||||
The documentation that comes along with your distribution will tell you how to do that.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC21">3.1.1 Darwin (MacOS/X) build environment</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC22">3.1.2 Cygwin (Windows) build environment</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC23">3.1.3 MinGW (Windows) build environment</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="NOD20"></a>
|
|
||||||
<a name="SEC21"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC20" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC22" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC20" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 3.1.1 Darwin (MacOS/X) build environment </h3>
|
|
||||||
|
|
||||||
<p>In order to build tinc on Darwin, you need to install the MacOS/X Developer Tools
|
|
||||||
from <a href="http://developer.apple.com/tools/macosxtools.html">http://developer.apple.com/tools/macosxtools.html</a> and
|
|
||||||
a recent version of Fink from <a href="http://fink.sourceforge.net/">http://fink.sourceforge.net/</a>.
|
|
||||||
</p>
|
|
||||||
<p>After installation use fink to download and install the following packages:
|
|
||||||
autoconf25, automake, dlcompat, m4, openssl, zlib and lzo.
|
|
||||||
</p>
|
|
||||||
<hr size="6">
|
|
||||||
<a name="NOD21"></a>
|
|
||||||
<a name="SEC22"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC21" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC23" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC20" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 3.1.2 Cygwin (Windows) build environment </h3>
|
|
||||||
|
|
||||||
<p>If Cygwin hasn't already been installed, install it directly from
|
|
||||||
<a href="http://www.cygwin.com/">http://www.cygwin.com/</a>.
|
|
||||||
</p>
|
|
||||||
<p>When tinc is compiled in a Cygwin environment, it can only be run in this environment,
|
|
||||||
but all programs, including those started outside the Cygwin environment, will be able to use the VPN.
|
|
||||||
It will also support all features.
|
|
||||||
</p>
|
|
||||||
<hr size="6">
|
|
||||||
<a name="NOD22"></a>
|
|
||||||
<a name="SEC23"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC22" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC24" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC20" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 3.1.3 MinGW (Windows) build environment </h3>
|
|
||||||
|
|
||||||
<p>You will need to install the MinGW environment from <a href="http://www.mingw.org">http://www.mingw.org</a>.
|
|
||||||
</p>
|
|
||||||
<p>When tinc is compiled using MinGW it runs natively under Windows,
|
|
||||||
it is not necessary to keep MinGW installed.
|
|
||||||
</p>
|
|
||||||
<p>When detaching, tinc will install itself as a service,
|
|
||||||
which will be restarted automatically after reboots.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="System-files"></a>
|
|
||||||
<a name="SEC24"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC23" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC25" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 3.2 System files </h2>
|
|
||||||
|
|
||||||
<p>Before you can run tinc, you must make sure you have all the needed
|
|
||||||
files on your system.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC25">3.2.1 Device files</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC26">3.2.2 Other files</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Device-files"></a>
|
|
||||||
<a name="SEC25"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC24" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC26" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC24" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 3.2.1 Device files </h3>
|
|
||||||
|
|
||||||
<p>Most operating systems nowadays come with the necessary device files by default,
|
|
||||||
or they have a mechanism to create them on demand.
|
|
||||||
</p>
|
|
||||||
<p>If you use Linux and do not have udev installed,
|
|
||||||
you may need to create the following device file if it does not exist:
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">mknod -m 600 /dev/net/tun c 10 200
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Other-files"></a>
|
|
||||||
<a name="SEC26"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC25" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC19" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC24" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 3.2.2 Other files </h3>
|
|
||||||
|
|
||||||
<a name="SEC27"></a>
|
|
||||||
<h4 class="subsubheading"> ‘<tt>/etc/networks</tt>’ </h4>
|
|
||||||
|
|
||||||
<p>You may add a line to ‘<tt>/etc/networks</tt>’ so that your VPN will get a
|
|
||||||
symbolic name. For example:
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">myvpn 10.0.0.0
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<a name="SEC28"></a>
|
|
||||||
<h4 class="subsubheading"> ‘<tt>/etc/services</tt>’ </h4>
|
|
||||||
|
|
||||||
<a name="IDX8"></a>
|
|
||||||
<p>You may add this line to ‘<tt>/etc/services</tt>’. The effect is that you
|
|
||||||
may supply a ‘<samp>tinc</samp>’ as a valid port number to some programs. The
|
|
||||||
number 655 is registered with the IANA.
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">tinc 655/tcp TINC
|
|
||||||
tinc 655/udp TINC
|
|
||||||
# Ivo Timmermans <ivo@tinc-vpn.org>
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC19" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<p>
|
|
||||||
<font size="-1">
|
|
||||||
This document was generated by <em>Guus Sliepen</em> on <em>December, 26 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
|
|
||||||
</font>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
1137
doc/tinc/tinc_3.html
1137
doc/tinc/tinc_3.html
File diff suppressed because it is too large
Load diff
|
|
@ -1,533 +0,0 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<!-- Created on December, 26 2008 by texi2html 1.78 -->
|
|
||||||
<!--
|
|
||||||
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
|
||||||
Karl Berry <karl@freefriends.org>
|
|
||||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
|
||||||
and many others.
|
|
||||||
Maintained by: Many creative people.
|
|
||||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
|
||||||
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<title>tinc Manual: 5. Running tinc</title>
|
|
||||||
|
|
||||||
<meta name="description" content="tinc Manual: 5. Running tinc">
|
|
||||||
<meta name="keywords" content="tinc Manual: 5. Running tinc">
|
|
||||||
<meta name="resource-type" content="document">
|
|
||||||
<meta name="distribution" content="global">
|
|
||||||
<meta name="Generator" content="texi2html 1.78">
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
<!--
|
|
||||||
a.summary-letter {text-decoration: none}
|
|
||||||
pre.display {font-family: serif}
|
|
||||||
pre.format {font-family: serif}
|
|
||||||
pre.menu-comment {font-family: serif}
|
|
||||||
pre.menu-preformatted {font-family: serif}
|
|
||||||
pre.smalldisplay {font-family: serif; font-size: smaller}
|
|
||||||
pre.smallexample {font-size: smaller}
|
|
||||||
pre.smallformat {font-family: serif; font-size: smaller}
|
|
||||||
pre.smalllisp {font-size: smaller}
|
|
||||||
span.roman {font-family:serif; font-weight:normal;}
|
|
||||||
span.sansserif {font-family:sans-serif; font-weight:normal;}
|
|
||||||
ul.toc {list-style: none}
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
|
||||||
|
|
||||||
<a name="Running-tinc"></a>
|
|
||||||
<a name="SEC49"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="tinc_3.html#SEC42" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC50" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_3.html#SEC29" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h1 class="chapter"> 5. Running tinc </h1>
|
|
||||||
|
|
||||||
<p>If everything else is done, you can start tinc by typing the following command:
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">tincd -n <var>netname</var>
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<a name="IDX64"></a>
|
|
||||||
<p>Tinc will detach from the terminal and continue to run in the background like a good daemon.
|
|
||||||
If there are any problems however you can try to increase the debug level
|
|
||||||
and look in the syslog to find out what the problems are.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC50">5.1 Runtime options</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC51">5.2 Signals</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC52">5.3 Debug levels</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC53">5.4 Solving problems</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC54">5.5 Error messages</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC55">5.6 Sending bug reports</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Runtime-options"></a>
|
|
||||||
<a name="SEC50"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC49" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC51" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 5.1 Runtime options </h2>
|
|
||||||
|
|
||||||
<p>Besides the settings in the configuration file, tinc also accepts some
|
|
||||||
command line options.
|
|
||||||
</p>
|
|
||||||
<a name="IDX65"></a>
|
|
||||||
<a name="IDX66"></a>
|
|
||||||
<a name="IDX67"></a>
|
|
||||||
<dl compact="compact">
|
|
||||||
<dt> ‘<samp>-c, --config=<var>path</var></samp>’</dt>
|
|
||||||
<dd><p>Read configuration options from the directory <var>path</var>. The default is
|
|
||||||
‘<tt>/etc/tinc/<var>netname</var>/</tt>’.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>-D, --no-detach</samp>’</dt>
|
|
||||||
<dd><p>Don't fork and detach.
|
|
||||||
This will also disable the automatic restart mechanism for fatal errors.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>-d, --debug=<var>level</var></samp>’</dt>
|
|
||||||
<dd><p>Set debug level to <var>level</var>. The higher the debug level, the more gets
|
|
||||||
logged. Everything goes via syslog.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>-k, --kill[=<var>signal</var>]</samp>’</dt>
|
|
||||||
<dd><p>Attempt to kill a running tincd (optionally with the specified <var>signal</var> instead of SIGTERM) and exit.
|
|
||||||
Use it in conjunction with the -n option to make sure you kill the right tinc daemon.
|
|
||||||
Under native Windows the optional argument is ignored,
|
|
||||||
the service will always be stopped and removed.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>-n, --net=<var>netname</var></samp>’</dt>
|
|
||||||
<dd><p>Use configuration for net <var>netname</var>. See section <a href="tinc_3.html#SEC31">Multiple networks</a>.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>-K, --generate-keys[=<var>bits</var>]</samp>’</dt>
|
|
||||||
<dd><p>Generate public/private keypair of <var>bits</var> length. If <var>bits</var> is not specified,
|
|
||||||
1024 is the default. tinc will ask where you want to store the files,
|
|
||||||
but will default to the configuration directory (you can use the -c or -n option
|
|
||||||
in combination with -K). After that, tinc will quit.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>-L, --mlock</samp>’</dt>
|
|
||||||
<dd><p>Lock tinc into main memory.
|
|
||||||
This will prevent sensitive data like shared private keys to be written to the system swap files/partitions.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>--logfile[=<var>file</var>]</samp>’</dt>
|
|
||||||
<dd><p>Write log entries to a file instead of to the system logging facility.
|
|
||||||
If <var>file</var> is omitted, the default is ‘<tt>/var/log/tinc.<var>netname</var>.log</tt>’.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>--pidfile=<var>file</var></samp>’</dt>
|
|
||||||
<dd><p>Write PID to <var>file</var> instead of ‘<tt>/var/run/tinc.<var>netname</var>.pid</tt>’.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>--bypass-security</samp>’</dt>
|
|
||||||
<dd><p>Disables encryption and authentication.
|
|
||||||
Only useful for debugging.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>--help</samp>’</dt>
|
|
||||||
<dd><p>Display a short reminder of these runtime options and terminate.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>--version</samp>’</dt>
|
|
||||||
<dd><p>Output version information and exit.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Signals"></a>
|
|
||||||
<a name="SEC51"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC50" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC52" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 5.2 Signals </h2>
|
|
||||||
|
|
||||||
<p>You can also send the following signals to a running tincd process:
|
|
||||||
</p>
|
|
||||||
<dl compact="compact">
|
|
||||||
<dt> ‘<samp>ALRM</samp>’</dt>
|
|
||||||
<dd><p>Forces tinc to try to connect to all uplinks immediately.
|
|
||||||
Usually tinc attempts to do this itself,
|
|
||||||
but increases the time it waits between the attempts each time it failed,
|
|
||||||
and if tinc didn't succeed to connect to an uplink the first time after it started,
|
|
||||||
it defaults to the maximum time of 15 minutes.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>HUP</samp>’</dt>
|
|
||||||
<dd><p>Partially rereads configuration files.
|
|
||||||
Connections to hosts whose host config file are removed are closed.
|
|
||||||
New outgoing connections specified in ‘<tt>tinc.conf</tt>’ will be made.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>INT</samp>’</dt>
|
|
||||||
<dd><p>Temporarily increases debug level to 5.
|
|
||||||
Send this signal again to revert to the original level.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>USR1</samp>’</dt>
|
|
||||||
<dd><p>Dumps the connection list to syslog.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>USR2</samp>’</dt>
|
|
||||||
<dd><p>Dumps virtual network device statistics, all known nodes, edges and subnets to syslog.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>WINCH</samp>’</dt>
|
|
||||||
<dd><p>Purges all information remembered about unreachable nodes.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Debug-levels"></a>
|
|
||||||
<a name="SEC52"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC51" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC53" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 5.3 Debug levels </h2>
|
|
||||||
|
|
||||||
<p>The tinc daemon can send a lot of messages to the syslog.
|
|
||||||
The higher the debug level, the more messages it will log.
|
|
||||||
Each level inherits all messages of the previous level:
|
|
||||||
</p>
|
|
||||||
<dl compact="compact">
|
|
||||||
<dt> ‘<samp>0</samp>’</dt>
|
|
||||||
<dd><p>This will log a message indicating tinc has started along with a version number.
|
|
||||||
It will also log any serious error.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>1</samp>’</dt>
|
|
||||||
<dd><p>This will log all connections that are made with other tinc daemons.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>2</samp>’</dt>
|
|
||||||
<dd><p>This will log status and error messages from scripts and other tinc daemons.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>3</samp>’</dt>
|
|
||||||
<dd><p>This will log all requests that are exchanged with other tinc daemons. These include
|
|
||||||
authentication, key exchange and connection list updates.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>4</samp>’</dt>
|
|
||||||
<dd><p>This will log a copy of everything received on the meta socket.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>5</samp>’</dt>
|
|
||||||
<dd><p>This will log all network traffic over the virtual private network.
|
|
||||||
</p>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Solving-problems"></a>
|
|
||||||
<a name="SEC53"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC52" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC54" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 5.4 Solving problems </h2>
|
|
||||||
|
|
||||||
<p>If tinc starts without problems, but if the VPN doesn't work, you will have to find the cause of the problem.
|
|
||||||
The first thing to do is to start tinc with a high debug level in the foreground,
|
|
||||||
so you can directly see everything tinc logs:
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">tincd -n <var>netname</var> -d5 -D
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<p>If tinc does not log any error messages, then you might want to check the following things:
|
|
||||||
</p>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> ‘<tt>tinc-up</tt>’ script
|
|
||||||
Does this script contain the right commands?
|
|
||||||
Normally you must give the interface the address of this host on the VPN, and the netmask must be big enough so that the entire VPN is covered.
|
|
||||||
|
|
||||||
</li><li> Subnet
|
|
||||||
Does the Subnet (or Subnets) in the host configuration file of this host match the portion of the VPN that belongs to this host?
|
|
||||||
|
|
||||||
</li><li> Firewalls and NATs
|
|
||||||
Do you have a firewall or a NAT device (a masquerading firewall or perhaps an ADSL router that performs masquerading)?
|
|
||||||
If so, check that it allows TCP and UDP traffic on port 655.
|
|
||||||
If it masquerades and the host running tinc is behind it, make sure that it forwards TCP and UDP traffic to port 655 to the host running tinc.
|
|
||||||
You can add ‘<samp>TCPOnly = yes</samp>’ to your host config file to force tinc to only use a single TCP connection,
|
|
||||||
this works through most firewalls and NATs.
|
|
||||||
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Error-messages"></a>
|
|
||||||
<a name="SEC54"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC53" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC55" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 5.5 Error messages </h2>
|
|
||||||
|
|
||||||
<p>What follows is a list of the most common error messages you might find in the logs.
|
|
||||||
Some of them will only be visible if the debug level is high enough.
|
|
||||||
</p>
|
|
||||||
<dl compact="compact">
|
|
||||||
<dt> ‘<samp>Could not open /dev/tap0: No such device</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> You forgot to `modprobe netlink_dev' or `modprobe ethertap'.
|
|
||||||
</li><li> You forgot to compile `Netlink device emulation' in the kernel.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Can't write to /dev/net/tun: No such device</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> You forgot to `modprobe tun'.
|
|
||||||
</li><li> You forgot to compile `Universal TUN/TAP driver' in the kernel.
|
|
||||||
</li><li> The tun device is located somewhere else in ‘<tt>/dev/</tt>’.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Network address and prefix length do not match!</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> The Subnet field must contain a <em>network</em> address, trailing bits should be 0.
|
|
||||||
</li><li> If you only want to use one IP address, set the netmask to /32.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Error reading RSA key file `rsa_key.priv': No such file or directory</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> You forgot to create a public/private keypair.
|
|
||||||
</li><li> Specify the complete pathname to the private key file with the ‘<samp>PrivateKeyFile</samp>’ option.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Warning: insecure file permissions for RSA private key file `rsa_key.priv'!</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> The private key file is readable by users other than root.
|
|
||||||
Use chmod to correct the file permissions.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Creating metasocket failed: Address family not supported</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> By default tinc tries to create both IPv4 and IPv6 sockets.
|
|
||||||
On some platforms this might not be implemented.
|
|
||||||
If the logs show ‘<samp>Ready</samp>’ later on, then at least one metasocket was created,
|
|
||||||
and you can ignore this message.
|
|
||||||
You can add ‘<samp>AddressFamily = ipv4</samp>’ to ‘<tt>tinc.conf</tt>’ to prevent this from happening.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Cannot route packet: unknown IPv4 destination 1.2.3.4</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> You try to send traffic to a host on the VPN for which no Subnet is known.
|
|
||||||
</li><li> If it is a broadcast address (ending in .255), it probably is a samba server or a Windows host sending broadcast packets.
|
|
||||||
You can ignore it.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Cannot route packet: ARP request for unknown address 1.2.3.4</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> You try to send traffic to a host on the VPN for which no Subnet is known.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Packet with destination 1.2.3.4 is looping back to us!</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> Something is not configured right. Packets are being sent out to the
|
|
||||||
virtual network device, but according to the Subnet directives in your host configuration
|
|
||||||
file, those packets should go to your own host. Most common mistake is that
|
|
||||||
you have a Subnet line in your host configuration file with a prefix length which is
|
|
||||||
just as large as the prefix of the virtual network interface. The latter should in almost all
|
|
||||||
cases be larger. Rethink your configuration.
|
|
||||||
Note that you will only see this message if you specified a debug
|
|
||||||
level of 5 or higher!
|
|
||||||
</li><li> Chances are that a ‘<samp>Subnet = ...</samp>’ line in the host configuration file of this tinc daemon is wrong.
|
|
||||||
Change it to a subnet that is accepted locally by another interface,
|
|
||||||
or if that is not the case, try changing the prefix length into /32.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Node foo (1.2.3.4) is not reachable</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> Node foo does not have a connection anymore, its tinc daemon is not running or its connection to the Internet is broken.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Received UDP packet from unknown source 1.2.3.4 (port 12345)</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> If you see this only sporadically, it is harmless and caused by a node sending packets using an old key.
|
|
||||||
</li><li> If you see this often and another node is not reachable anymore, then a NAT (masquerading firewall) is changing the source address of UDP packets.
|
|
||||||
You can add ‘<samp>TCPOnly = yes</samp>’ to host configuration files to force all VPN traffic to go over a TCP connection.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt> ‘<samp>Got bad/bogus/unauthorized REQUEST from foo (1.2.3.4 port 12345)</samp>’</dt>
|
|
||||||
<dd>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> Node foo does not have the right public/private keypair.
|
|
||||||
Generate new keypairs and distribute them again.
|
|
||||||
</li><li> An attacker tries to gain access to your VPN.
|
|
||||||
</li><li> A network error caused corruption of metadata sent from foo.
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Sending-bug-reports"></a>
|
|
||||||
<a name="SEC55"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC54" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC49" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 5.6 Sending bug reports </h2>
|
|
||||||
|
|
||||||
<p>If you really can't find the cause of a problem, or if you suspect tinc is not working right,
|
|
||||||
you can send us a bugreport, see <a href="tinc_7.html#SEC69">Contact information</a>.
|
|
||||||
Be sure to include the following information in your bugreport:
|
|
||||||
</p>
|
|
||||||
<ul class="toc">
|
|
||||||
<li> A clear description of what you are trying to achieve and what the problem is.
|
|
||||||
</li><li> What platform (operating system, version, hardware architecture) and which version of tinc you use.
|
|
||||||
</li><li> If compiling tinc fails, a copy of ‘<tt>config.log</tt>’ and the error messages you get.
|
|
||||||
</li><li> Otherwise, a copy of ‘<tt>tinc.conf</tt>’, ‘<tt>tinc-up</tt>’ and all files in the ‘<tt>hosts/</tt>’ directory.
|
|
||||||
</li><li> The output of the commands ‘<samp>ifconfig -a</samp>’ and ‘<samp>route -n</samp>’ (or ‘<samp>netstat -rn</samp>’ if that doesn't work).
|
|
||||||
</li><li> The output of any command that fails to work as it should (like ping or traceroute).
|
|
||||||
</li></ul>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC49" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<p>
|
|
||||||
<font size="-1">
|
|
||||||
This document was generated by <em>Guus Sliepen</em> on <em>December, 26 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
|
|
||||||
</font>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,655 +0,0 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<!-- Created on December, 26 2008 by texi2html 1.78 -->
|
|
||||||
<!--
|
|
||||||
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
|
||||||
Karl Berry <karl@freefriends.org>
|
|
||||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
|
||||||
and many others.
|
|
||||||
Maintained by: Many creative people.
|
|
||||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
|
||||||
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<title>tinc Manual: 6. Technical information</title>
|
|
||||||
|
|
||||||
<meta name="description" content="tinc Manual: 6. Technical information">
|
|
||||||
<meta name="keywords" content="tinc Manual: 6. Technical information">
|
|
||||||
<meta name="resource-type" content="document">
|
|
||||||
<meta name="distribution" content="global">
|
|
||||||
<meta name="Generator" content="texi2html 1.78">
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
<!--
|
|
||||||
a.summary-letter {text-decoration: none}
|
|
||||||
pre.display {font-family: serif}
|
|
||||||
pre.format {font-family: serif}
|
|
||||||
pre.menu-comment {font-family: serif}
|
|
||||||
pre.menu-preformatted {font-family: serif}
|
|
||||||
pre.smalldisplay {font-family: serif; font-size: smaller}
|
|
||||||
pre.smallexample {font-size: smaller}
|
|
||||||
pre.smallformat {font-family: serif; font-size: smaller}
|
|
||||||
pre.smalllisp {font-size: smaller}
|
|
||||||
span.roman {font-family:serif; font-weight:normal;}
|
|
||||||
span.sansserif {font-family:sans-serif; font-weight:normal;}
|
|
||||||
ul.toc {list-style: none}
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
|
||||||
|
|
||||||
<a name="Technical-information"></a>
|
|
||||||
<a name="SEC56"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="tinc_4.html#SEC55" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC57" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_4.html#SEC49" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h1 class="chapter"> 6. Technical information </h1>
|
|
||||||
|
|
||||||
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC57">6.1 The connection</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC60">6.2 The meta-protocol</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC61">6.3 Security</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="The-connection"></a>
|
|
||||||
<a name="SEC57"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC56" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC58" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 6.1 The connection </h2>
|
|
||||||
|
|
||||||
<p>Tinc is a daemon that takes VPN data and transmit that to another host
|
|
||||||
computer over the existing Internet infrastructure.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC58">6.1.1 The UDP tunnel</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC59">6.1.2 The meta-connection</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="The-UDP-tunnel"></a>
|
|
||||||
<a name="SEC58"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC57" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC59" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC57" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 6.1.1 The UDP tunnel </h3>
|
|
||||||
|
|
||||||
<a name="IDX68"></a>
|
|
||||||
<p>The data itself is read from a character device file, the so-called
|
|
||||||
<em>virtual network device</em>. This device is associated with a network
|
|
||||||
interface. Any data sent to this interface can be read from the device,
|
|
||||||
and any data written to the device gets sent from the interface.
|
|
||||||
There are two possible types of virtual network devices:
|
|
||||||
`tun' style, which are point-to-point devices which can only handle IPv4 and/or IPv6 packets,
|
|
||||||
and `tap' style, which are Ethernet devices and handle complete Ethernet frames.
|
|
||||||
</p>
|
|
||||||
<p>So when tinc reads an Ethernet frame from the device, it determines its
|
|
||||||
type. When tinc is in it's default routing mode, it can handle IPv4 and IPv6
|
|
||||||
packets. Depending on the Subnet lines, it will send the packets off to their destination IP address.
|
|
||||||
In the `switch' and `hub' mode, tinc will use broadcasts and MAC address discovery
|
|
||||||
to deduce the destination of the packets.
|
|
||||||
Since the latter modes only depend on the link layer information,
|
|
||||||
any protocol that runs over Ethernet is supported (for instance IPX and Appletalk).
|
|
||||||
However, only `tap' style devices provide this information.
|
|
||||||
</p>
|
|
||||||
<p>After the destination has been determined,
|
|
||||||
the packet will be compressed (optionally),
|
|
||||||
a sequence number will be added to the packet,
|
|
||||||
the packet will then be encrypted
|
|
||||||
and a message authentication code will be appended.
|
|
||||||
</p>
|
|
||||||
<a name="IDX69"></a>
|
|
||||||
<a name="IDX70"></a>
|
|
||||||
<p>When that is done, time has come to actually transport the
|
|
||||||
packet to the destination computer. We do this by sending the packet
|
|
||||||
over an UDP connection to the destination host. This is called
|
|
||||||
<em>encapsulating</em>, the VPN packet (though now encrypted) is
|
|
||||||
encapsulated in another IP datagram.
|
|
||||||
</p>
|
|
||||||
<p>When the destination receives this packet, the same thing happens, only
|
|
||||||
in reverse. So it checks the message authentication code, decrypts the contents of the UDP datagram,
|
|
||||||
checks the sequence number
|
|
||||||
and writes the decrypted information to its own virtual network device.
|
|
||||||
</p>
|
|
||||||
<p>If the virtual network device is a `tun' device (a point-to-point tunnel),
|
|
||||||
there is no problem for the kernel to accept a packet.
|
|
||||||
However, if it is a `tap' device (this is the only available type on FreeBSD),
|
|
||||||
the destination MAC address must match that of the virtual network interface.
|
|
||||||
If tinc is in it's default routing mode, ARP does not work, so the correct destination MAC
|
|
||||||
can not be known by the sending host.
|
|
||||||
Tinc solves this by letting the receiving end detect the MAC address of its own virtual network interface
|
|
||||||
and overwriting the destination MAC address of the received packet.
|
|
||||||
</p>
|
|
||||||
<p>In switch or hub modes ARP does work so the sender already knows the correct destination MAC address.
|
|
||||||
In those modes every interface should have a unique MAC address, so make sure they are not the same.
|
|
||||||
Because switch and hub modes rely on MAC addresses to function correctly,
|
|
||||||
these modes cannot be used on the following operating systems which don't have a `tap' style virtual network device:
|
|
||||||
OpenBSD, NetBSD, Darwin and Solaris.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="The-meta_002dconnection"></a>
|
|
||||||
<a name="SEC59"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC58" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC60" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC57" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 6.1.2 The meta-connection </h3>
|
|
||||||
|
|
||||||
<p>Having only a UDP connection available is not enough. Though suitable
|
|
||||||
for transmitting data, we want to be able to reliably send other
|
|
||||||
information, such as routing and session key information to somebody.
|
|
||||||
</p>
|
|
||||||
<a name="IDX71"></a>
|
|
||||||
<p>TCP is a better alternative, because it already contains protection
|
|
||||||
against information being lost, unlike UDP.
|
|
||||||
</p>
|
|
||||||
<p>So we establish two connections. One for the encrypted VPN data, and one
|
|
||||||
for other information, the meta-data. Hence, we call the second
|
|
||||||
connection the meta-connection. We can now be sure that the
|
|
||||||
meta-information doesn't get lost on the way to another computer.
|
|
||||||
</p>
|
|
||||||
<a name="IDX72"></a>
|
|
||||||
<a name="IDX73"></a>
|
|
||||||
<p>Like with any communication, we must have a protocol, so that everybody
|
|
||||||
knows what everything stands for, and how she should react. Because we
|
|
||||||
have two connections, we also have two protocols. The protocol used for
|
|
||||||
the UDP data is the “data-protocol,” the other one is the
|
|
||||||
“meta-protocol.”
|
|
||||||
</p>
|
|
||||||
<p>The reason we don't use TCP for both protocols is that UDP is much
|
|
||||||
better for encapsulation, even while it is less reliable. The real
|
|
||||||
problem is that when TCP would be used to encapsulate a TCP stream
|
|
||||||
that's on the private network, for every packet sent there would be
|
|
||||||
three ACKs sent instead of just one. Furthermore, if there would be
|
|
||||||
a timeout, both TCP streams would sense the timeout, and both would
|
|
||||||
start re-sending packets.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="The-meta_002dprotocol"></a>
|
|
||||||
<a name="SEC60"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC59" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC61" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 6.2 The meta-protocol </h2>
|
|
||||||
|
|
||||||
<p>The meta protocol is used to tie all tinc daemons together, and
|
|
||||||
exchange information about which tinc daemon serves which virtual
|
|
||||||
subnet.
|
|
||||||
</p>
|
|
||||||
<p>The meta protocol consists of requests that can be sent to the other
|
|
||||||
side. Each request has a unique number and several parameters. All
|
|
||||||
requests are represented in the standard ASCII character set. It is
|
|
||||||
possible to use tools such as telnet or netcat to connect to a tinc
|
|
||||||
daemon started with the –bypass-security option
|
|
||||||
and to read and write requests by hand, provided that one
|
|
||||||
understands the numeric codes sent.
|
|
||||||
</p>
|
|
||||||
<p>The authentication scheme is described in <a href="#SEC62">Authentication protocol</a>. After a
|
|
||||||
successful authentication, the server and the client will exchange all the
|
|
||||||
information about other tinc daemons and subnets they know of, so that both
|
|
||||||
sides (and all the other tinc daemons behind them) have their information
|
|
||||||
synchronised.
|
|
||||||
</p>
|
|
||||||
<a name="IDX74"></a>
|
|
||||||
<a name="IDX75"></a>
|
|
||||||
<table><tr><td> </td><td><pre class="example">message
|
|
||||||
------------------------------------------------------------------
|
|
||||||
ADD_EDGE node1 node2 21.32.43.54 655 222 0
|
|
||||||
| | | | | +-> options
|
|
||||||
| | | | +----> weight
|
|
||||||
| | | +--------> UDP port of node2
|
|
||||||
| | +----------------> real address of node2
|
|
||||||
| +-------------------------> name of destination node
|
|
||||||
+-------------------------------> name of source node
|
|
||||||
|
|
||||||
ADD_SUBNET node 192.168.1.0/24
|
|
||||||
| | +--> prefixlength
|
|
||||||
| +--------> network address
|
|
||||||
+------------------> owner of this subnet
|
|
||||||
------------------------------------------------------------------
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<p>The ADD_EDGE messages are to inform other tinc daemons that a connection between
|
|
||||||
two nodes exist. The address of the destination node is available so that
|
|
||||||
VPN packets can be sent directly to that node.
|
|
||||||
</p>
|
|
||||||
<p>The ADD_SUBNET messages inform other tinc daemons that certain subnets belong
|
|
||||||
to certain nodes. tinc will use it to determine to which node a VPN packet has
|
|
||||||
to be sent.
|
|
||||||
</p>
|
|
||||||
<a name="IDX76"></a>
|
|
||||||
<a name="IDX77"></a>
|
|
||||||
<table><tr><td> </td><td><pre class="example">message
|
|
||||||
------------------------------------------------------------------
|
|
||||||
DEL_EDGE node1 node2
|
|
||||||
| +----> name of destination node
|
|
||||||
+----------> name of source node
|
|
||||||
|
|
||||||
DEL_SUBNET node 192.168.1.0/24
|
|
||||||
| | +--> prefixlength
|
|
||||||
| +--------> network address
|
|
||||||
+------------------> owner of this subnet
|
|
||||||
------------------------------------------------------------------
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<p>In case a connection between two daemons is closed or broken, DEL_EDGE messages
|
|
||||||
are sent to inform the other daemons of that fact. Each daemon will calculate a
|
|
||||||
new route to the the daemons, or mark them unreachable if there isn't any.
|
|
||||||
</p>
|
|
||||||
<a name="IDX78"></a>
|
|
||||||
<a name="IDX79"></a>
|
|
||||||
<a name="IDX80"></a>
|
|
||||||
<table><tr><td> </td><td><pre class="example">message
|
|
||||||
------------------------------------------------------------------
|
|
||||||
REQ_KEY origin destination
|
|
||||||
| +--> name of the tinc daemon it wants the key from
|
|
||||||
+----------> name of the daemon that wants the key
|
|
||||||
|
|
||||||
ANS_KEY origin destination 4ae0b0a82d6e0078 91 64 4
|
|
||||||
| | \______________/ | | +--> MAC length
|
|
||||||
| | | | +-----> digest algorithm
|
|
||||||
| | | +--------> cipher algorithm
|
|
||||||
| | +--> 128 bits key
|
|
||||||
| +--> name of the daemon that wants the key
|
|
||||||
+----------> name of the daemon that uses this key
|
|
||||||
|
|
||||||
KEY_CHANGED origin
|
|
||||||
+--> daemon that has changed it's packet key
|
|
||||||
------------------------------------------------------------------
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<p>The keys used to encrypt VPN packets are not sent out directly. This is
|
|
||||||
because it would generate a lot of traffic on VPNs with many daemons, and
|
|
||||||
chances are that not every tinc daemon will ever send a packet to every
|
|
||||||
other daemon. Instead, if a daemon needs a key it sends a request for it
|
|
||||||
via the meta connection of the nearest hop in the direction of the
|
|
||||||
destination.
|
|
||||||
</p>
|
|
||||||
<a name="IDX81"></a>
|
|
||||||
<table><tr><td> </td><td><pre class="example">daemon message
|
|
||||||
------------------------------------------------------------------
|
|
||||||
origin PING
|
|
||||||
dest. PONG
|
|
||||||
------------------------------------------------------------------
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<p>There is also a mechanism to check if hosts are still alive. Since network
|
|
||||||
failures or a crash can cause a daemon to be killed without properly
|
|
||||||
shutting down the TCP connection, this is necessary to keep an up to date
|
|
||||||
connection list. PINGs are sent at regular intervals, except when there
|
|
||||||
is also some other traffic. A little bit of salt (random data) is added
|
|
||||||
with each PING and PONG message, to make sure that long sequences of PING/PONG
|
|
||||||
messages without any other traffic won't result in known plaintext.
|
|
||||||
</p>
|
|
||||||
<p>This basically covers what is sent over the meta connection by tinc.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Security"></a>
|
|
||||||
<a name="SEC61"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC60" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC62" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h2 class="section"> 6.3 Security </h2>
|
|
||||||
|
|
||||||
<a name="IDX82"></a>
|
|
||||||
<p>Tinc got its name from “TINC,” short for <em>There Is No Cabal</em>; the
|
|
||||||
alleged Cabal was/is an organisation that was said to keep an eye on the
|
|
||||||
entire Internet. As this is exactly what you <em>don't</em> want, we named
|
|
||||||
the tinc project after TINC.
|
|
||||||
</p>
|
|
||||||
<p>But in order to be “immune” to eavesdropping, you'll have to encrypt
|
|
||||||
your data. Because tinc is a <em>Secure</em> VPN (SVPN) daemon, it does
|
|
||||||
exactly that: encrypt.
|
|
||||||
Tinc by default uses blowfish encryption with 128 bit keys in CBC mode, 32 bit
|
|
||||||
sequence numbers and 4 byte long message authentication codes to make sure
|
|
||||||
eavesdroppers cannot get and cannot change any information at all from the
|
|
||||||
packets they can intercept. The encryption algorithm and message authentication
|
|
||||||
algorithm can be changed in the configuration. The length of the message
|
|
||||||
authentication codes is also adjustable. The length of the key for the
|
|
||||||
encryption algorithm is always the default length used by OpenSSL.
|
|
||||||
</p>
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC62">6.3.1 Authentication protocol</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC63">6.3.2 Encryption of network packets</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC64">6.3.3 Security issues</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Authentication-protocol"></a>
|
|
||||||
<a name="SEC62"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC61" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC63" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC61" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 6.3.1 Authentication protocol </h3>
|
|
||||||
|
|
||||||
<a name="IDX83"></a>
|
|
||||||
<p>A new scheme for authentication in tinc has been devised, which offers some
|
|
||||||
improvements over the protocol used in 1.0pre2 and 1.0pre3. Explanation is
|
|
||||||
below.
|
|
||||||
</p>
|
|
||||||
<a name="IDX84"></a>
|
|
||||||
<a name="IDX85"></a>
|
|
||||||
<a name="IDX86"></a>
|
|
||||||
<a name="IDX87"></a>
|
|
||||||
<table><tr><td> </td><td><pre class="example">daemon message
|
|
||||||
--------------------------------------------------------------------------
|
|
||||||
client <attempts connection>
|
|
||||||
|
|
||||||
server <accepts connection>
|
|
||||||
|
|
||||||
client ID client 12
|
|
||||||
| +---> version
|
|
||||||
+-------> name of tinc daemon
|
|
||||||
|
|
||||||
server ID server 12
|
|
||||||
| +---> version
|
|
||||||
+-------> name of tinc daemon
|
|
||||||
|
|
||||||
client META_KEY 5f0823a93e35b69e...7086ec7866ce582b
|
|
||||||
\_________________________________/
|
|
||||||
+-> RSAKEYLEN bits totally random string S1,
|
|
||||||
encrypted with server's public RSA key
|
|
||||||
|
|
||||||
server META_KEY 6ab9c1640388f8f0...45d1a07f8a672630
|
|
||||||
\_________________________________/
|
|
||||||
+-> RSAKEYLEN bits totally random string S2,
|
|
||||||
encrypted with client's public RSA key
|
|
||||||
|
|
||||||
From now on:
|
|
||||||
- the client will symmetrically encrypt outgoing traffic using S1
|
|
||||||
- the server will symmetrically encrypt outgoing traffic using S2
|
|
||||||
|
|
||||||
client CHALLENGE da02add1817c1920989ba6ae2a49cecbda0
|
|
||||||
\_________________________________/
|
|
||||||
+-> CHALLEN bits totally random string H1
|
|
||||||
|
|
||||||
server CHALLENGE 57fb4b2ccd70d6bb35a64c142f47e61d57f
|
|
||||||
\_________________________________/
|
|
||||||
+-> CHALLEN bits totally random string H2
|
|
||||||
|
|
||||||
client CHAL_REPLY 816a86
|
|
||||||
+-> 160 bits SHA1 of H2
|
|
||||||
|
|
||||||
server CHAL_REPLY 928ffe
|
|
||||||
+-> 160 bits SHA1 of H1
|
|
||||||
|
|
||||||
After the correct challenge replies are received, both ends have proved
|
|
||||||
their identity. Further information is exchanged.
|
|
||||||
|
|
||||||
client ACK 655 123 0
|
|
||||||
| | +-> options
|
|
||||||
| +----> estimated weight
|
|
||||||
+--------> listening port of client
|
|
||||||
|
|
||||||
server ACK 655 321 0
|
|
||||||
| | +-> options
|
|
||||||
| +----> estimated weight
|
|
||||||
+--------> listening port of server
|
|
||||||
--------------------------------------------------------------------------
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<p>This new scheme has several improvements, both in efficiency and security.
|
|
||||||
</p>
|
|
||||||
<p>First of all, the server sends exactly the same kind of messages over the wire
|
|
||||||
as the client. The previous versions of tinc first authenticated the client,
|
|
||||||
and then the server. This scheme even allows both sides to send their messages
|
|
||||||
simultaneously, there is no need to wait for the other to send something first.
|
|
||||||
This means that any calculations that need to be done upon sending or receiving
|
|
||||||
a message can also be done in parallel. This is especially important when doing
|
|
||||||
RSA encryption/decryption. Given that these calculations are the main part of
|
|
||||||
the CPU time spent for the authentication, speed is improved by a factor 2.
|
|
||||||
</p>
|
|
||||||
<p>Second, only one RSA encrypted message is sent instead of two. This reduces the
|
|
||||||
amount of information attackers can see (and thus use for a cryptographic
|
|
||||||
attack). It also improves speed by a factor two, making the total speedup a
|
|
||||||
factor 4.
|
|
||||||
</p>
|
|
||||||
<p>Third, and most important:
|
|
||||||
The symmetric cipher keys are exchanged first, the challenge is done
|
|
||||||
afterwards. In the previous authentication scheme, because a man-in-the-middle
|
|
||||||
could pass the challenge/chal_reply phase (by just copying the messages between
|
|
||||||
the two real tinc daemons), but no information was exchanged that was really
|
|
||||||
needed to read the rest of the messages, the challenge/chal_reply phase was of
|
|
||||||
no real use. The man-in-the-middle was only stopped by the fact that only after
|
|
||||||
the ACK messages were encrypted with the symmetric cipher. Potentially, it
|
|
||||||
could even send it's own symmetric key to the server (if it knew the server's
|
|
||||||
public key) and read some of the metadata the server would send it (it was
|
|
||||||
impossible for the mitm to read actual network packets though). The new scheme
|
|
||||||
however prevents this.
|
|
||||||
</p>
|
|
||||||
<p>This new scheme makes sure that first of all, symmetric keys are exchanged. The
|
|
||||||
rest of the messages are then encrypted with the symmetric cipher. Then, each
|
|
||||||
side can only read received messages if they have their private key. The
|
|
||||||
challenge is there to let the other side know that the private key is really
|
|
||||||
known, because a challenge reply can only be sent back if the challenge is
|
|
||||||
decrypted correctly, and that can only be done with knowledge of the private
|
|
||||||
key.
|
|
||||||
</p>
|
|
||||||
<p>Fourth: the first thing that is sent via the symmetric cipher encrypted
|
|
||||||
connection is a totally random string, so that there is no known plaintext (for
|
|
||||||
an attacker) in the beginning of the encrypted stream.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Encryption-of-network-packets"></a>
|
|
||||||
<a name="SEC63"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC62" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC64" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC61" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 6.3.2 Encryption of network packets </h3>
|
|
||||||
<a name="IDX88"></a>
|
|
||||||
|
|
||||||
<p>A data packet can only be sent if the encryption key is known to both
|
|
||||||
parties, and the connection is activated. If the encryption key is not
|
|
||||||
known, a request is sent to the destination using the meta connection
|
|
||||||
to retrieve it. The packet is stored in a queue while waiting for the
|
|
||||||
key to arrive.
|
|
||||||
</p>
|
|
||||||
<p>The UDP packet containing the network packet from the VPN has the following layout:
|
|
||||||
</p>
|
|
||||||
<table><tr><td> </td><td><pre class="example">... | IP header | UDP header | seqno | VPN packet | MAC | UDP trailer
|
|
||||||
\___________________/\_____/
|
|
||||||
| |
|
|
||||||
V +---> digest algorithm
|
|
||||||
Encrypted with symmetric cipher
|
|
||||||
</pre></td></tr></table>
|
|
||||||
|
|
||||||
<p>So, the entire VPN packet is encrypted using a symmetric cipher, including a 32 bits
|
|
||||||
sequence number that is added in front of the actual VPN packet, to act as a unique
|
|
||||||
IV for each packet and to prevent replay attacks. A message authentication code
|
|
||||||
is added to the UDP packet to prevent alteration of packets. By default the
|
|
||||||
first 4 bytes of the digest are used for this, but this can be changed using
|
|
||||||
the MACLength configuration variable.
|
|
||||||
</p>
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Security-issues"></a>
|
|
||||||
<a name="SEC64"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC63" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC61" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h3 class="subsection"> 6.3.3 Security issues </h3>
|
|
||||||
|
|
||||||
<p>In August 2000, we discovered the existence of a security hole in all versions
|
|
||||||
of tinc up to and including 1.0pre2. This had to do with the way we exchanged
|
|
||||||
keys. Since then, we have been working on a new authentication scheme to make
|
|
||||||
tinc as secure as possible. The current version uses the OpenSSL library and
|
|
||||||
uses strong authentication with RSA keys.
|
|
||||||
</p>
|
|
||||||
<p>On the 29th of December 2001, Jerome Etienne posted a security analysis of tinc
|
|
||||||
1.0pre4. Due to a lack of sequence numbers and a message authentication code
|
|
||||||
for each packet, an attacker could possibly disrupt certain network services or
|
|
||||||
launch a denial of service attack by replaying intercepted packets. The current
|
|
||||||
version adds sequence numbers and message authentication codes to prevent such
|
|
||||||
attacks.
|
|
||||||
</p>
|
|
||||||
<p>On the 15th of September 2003, Peter Gutmann posted a security analysis of tinc
|
|
||||||
1.0.1. He argues that the 32 bit sequence number used by tinc is not a good IV,
|
|
||||||
that tinc's default length of 4 bytes for the MAC is too short, and he doesn't
|
|
||||||
like tinc's use of RSA during authentication. We do not know of a security hole
|
|
||||||
in this version of tinc, but tinc's security is not as strong as TLS or IPsec.
|
|
||||||
We will address these issues in tinc 2.0.
|
|
||||||
</p>
|
|
||||||
<p>Cryptography is a hard thing to get right. We cannot make any
|
|
||||||
guarantees. Time, review and feedback are the only things that can
|
|
||||||
prove the security of any cryptographic product. If you wish to review
|
|
||||||
tinc or give us feedback, you are stronly encouraged to do so.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_6.html#SEC65" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<p>
|
|
||||||
<font size="-1">
|
|
||||||
This document was generated by <em>Guus Sliepen</em> on <em>December, 26 2008</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.78</em></a>.
|
|
||||||
</font>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<!-- Created on December, 26 2008 by texi2html 1.78 -->
|
|
||||||
<!--
|
|
||||||
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
|
||||||
Karl Berry <karl@freefriends.org>
|
|
||||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
|
||||||
and many others.
|
|
||||||
Maintained by: Many creative people.
|
|
||||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
|
||||||
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<title>tinc Manual: 7. Platform specific information</title>
|
|
||||||
|
|
||||||
<meta name="description" content="tinc Manual: 7. Platform specific information">
|
|
||||||
<meta name="keywords" content="tinc Manual: 7. Platform specific information">
|
|
||||||
<meta name="resource-type" content="document">
|
|
||||||
<meta name="distribution" content="global">
|
|
||||||
<meta name="Generator" content="texi2html 1.78">
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
<!--
|
|
||||||
a.summary-letter {text-decoration: none}
|
|
||||||
pre.display {font-family: serif}
|
|
||||||
pre.format {font-family: serif}
|
|
||||||
pre.menu-comment {font-family: serif}
|
|
||||||
pre.menu-preformatted {font-family: serif}
|
|
||||||
pre.smalldisplay {font-family: serif; font-size: smaller}
|
|
||||||
pre.smallexample {font-size: smaller}
|
|
||||||
pre.smallformat {font-family: serif; font-size: smaller}
|
|
||||||
pre.smalllisp {font-size: smaller}
|
|
||||||
span.roman {font-family:serif; font-weight:normal;}
|
|
||||||
span.sansserif {font-family:sans-serif; font-weight:normal;}
|
|
||||||
ul.toc {list-style: none}
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
|
|
||||||
|
|
||||||
<a name="Platform-specific-information"></a>
|
|
||||||
<a name="SEC65"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="tinc_5.html#SEC64" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC66" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_5.html#SEC56" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_7.html#SEC68" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_0.html#SEC1" title="Cover (top) of document">Top</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_8.html#SEC71" title="Index">Index</a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
|
|
||||||
</tr></table>
|
|
||||||
<h1 class="chapter"> 7. Platform specific information </h1>
|
|
||||||
|
|
||||||
<table class="menu" border="0" cellspacing="0">
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC66">7.1 Interface configuration</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
<tr><td align="left" valign="top"><a href="#SEC67">7.2 Routes</a></td><td> </td><td align="left" valign="top">
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<hr size="6">
|
|
||||||
<a name="Interface-configuration"></a>
|
|
||||||
<a name="SEC66"></a>
|
|
||||||
<table cellpadding="1" cellspacing="1" border="0">
|
|
||||||
<tr><td valign="middle" align="left">[<a href="#SEC65" title="Previous section in reading order"> < </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC67" title="Next section in reading order"> > </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC65" title="Beginning of this chapter or previous chapter"> << </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="#SEC65" title="Up section"> Up </a>]</td>
|
|
||||||
<td valign="middle" align="left">[<a href="tinc_7.html#SEC68" title="Next chapter"> >> </a>]</td>
|
|
||||||
<td valign="middle" align="left"> </td>
|
|
||||||
<td valign="middl
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
.Dd 2002-03-25
|
.Dd 2014-05-11
|
||||||
.Dt TINCD 8
|
.Dt TINCD 8
|
||||||
.\" Manual page created by:
|
.\" Manual page created by:
|
||||||
.\" Ivo Timmermans
|
.\" Ivo Timmermans
|
||||||
|
|
@ -8,17 +8,20 @@
|
||||||
.Nd tinc VPN daemon
|
.Nd tinc VPN daemon
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.Nm
|
.Nm
|
||||||
.Op Fl cdDkKnL
|
.Op Fl cdDkKnoLRU
|
||||||
.Op Fl -config Ns = Ns Ar DIR
|
.Op Fl -config Ns = Ns Ar DIR
|
||||||
.Op Fl -no-detach
|
.Op Fl -no-detach
|
||||||
.Op Fl -debug Ns Op = Ns Ar LEVEL
|
.Op Fl -debug Ns Op = Ns Ar LEVEL
|
||||||
.Op Fl -kill Ns Op = Ns Ar SIGNAL
|
.Op Fl -kill Ns Op = Ns Ar SIGNAL
|
||||||
.Op Fl -net Ns = Ns Ar NETNAME
|
.Op Fl -net Ns = Ns Ar NETNAME
|
||||||
.Op Fl -generate-keys Ns Op = Ns Ar BITS
|
.Op Fl -generate-keys Ns Op = Ns Ar BITS
|
||||||
|
.Op Fl -option Ns = Ns Ar [HOST.]KEY=VALUE
|
||||||
.Op Fl -mlock
|
.Op Fl -mlock
|
||||||
.Op Fl -logfile Ns Op = Ns Ar FILE
|
.Op Fl -logfile Ns Op = Ns Ar FILE
|
||||||
.Op Fl -pidfile Ns = Ns Ar FILE
|
.Op Fl -pidfile Ns = Ns Ar FILE
|
||||||
.Op Fl -bypass-security
|
.Op Fl -bypass-security
|
||||||
|
.Op Fl -chroot
|
||||||
|
.Op Fl -user Ns = Ns Ar USER
|
||||||
.Op Fl -help
|
.Op Fl -help
|
||||||
.Op Fl -version
|
.Op Fl -version
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
|
|
@ -62,13 +65,37 @@ the service will always be stopped and removed.
|
||||||
.It Fl n, -net Ns = Ns Ar NETNAME
|
.It Fl n, -net Ns = Ns Ar NETNAME
|
||||||
Connect to net
|
Connect to net
|
||||||
.Ar NETNAME .
|
.Ar NETNAME .
|
||||||
|
This will let tinc read all configuration files from
|
||||||
|
.Pa @sysconfdir@/tinc/ Ar NETNAME .
|
||||||
|
Specifying
|
||||||
|
.Li .
|
||||||
|
for
|
||||||
|
.Ar NETNAME
|
||||||
|
is the same as not specifying any
|
||||||
|
.Ar NETNAME .
|
||||||
.It Fl K, -generate-keys Ns Op = Ns Ar BITS
|
.It Fl K, -generate-keys Ns Op = Ns Ar BITS
|
||||||
Generate public/private RSA keypair and exit.
|
Generate public/private RSA keypair and exit.
|
||||||
If
|
If
|
||||||
.Ar BITS
|
.Ar BITS
|
||||||
is omitted, the default length will be 1024 bits.
|
is omitted, the default length will be 2048 bits.
|
||||||
When saving keys to existing files, tinc will not delete the old keys,
|
When saving keys to existing files, tinc will not delete the old keys,
|
||||||
you have to remove them manually.
|
you have to remove them manually.
|
||||||
|
.It Fl o, -option Ns = Ns Ar [HOST.]KEY=VALUE
|
||||||
|
Without specifying a
|
||||||
|
.Ar HOST ,
|
||||||
|
this will set server configuration variable
|
||||||
|
.Ar KEY
|
||||||
|
to
|
||||||
|
.Ar VALUE .
|
||||||
|
If specified as
|
||||||
|
.Ar HOST.KEY=VALUE ,
|
||||||
|
this will set the host configuration variable
|
||||||
|
.Ar KEY
|
||||||
|
of the host named
|
||||||
|
.Ar HOST
|
||||||
|
to
|
||||||
|
.Ar VALUE .
|
||||||
|
This option can be used more than once to specify multiple configuration variables.
|
||||||
.It Fl L, -mlock
|
.It Fl L, -mlock
|
||||||
Lock tinc into main memory.
|
Lock tinc into main memory.
|
||||||
This will prevent sensitive data like shared private keys to be written to the system swap files/partitions.
|
This will prevent sensitive data like shared private keys to be written to the system swap files/partitions.
|
||||||
|
|
@ -82,11 +109,19 @@ is omitted, the default is
|
||||||
Write PID to
|
Write PID to
|
||||||
.Ar FILE
|
.Ar FILE
|
||||||
instead of
|
instead of
|
||||||
.Pa @localstatedir@/run/tinc. Ns Ar NETNAME Ns Pa .pid.
|
.Pa @runstatedir@/tinc. Ns Ar NETNAME Ns Pa .pid.
|
||||||
Under Windows this option will be ignored.
|
Under Windows this option will be ignored.
|
||||||
.It Fl -bypass-security
|
.It Fl -bypass-security
|
||||||
Disables encryption and authentication of the meta protocol.
|
Disables encryption and authentication of the meta protocol.
|
||||||
Only useful for debugging.
|
Only useful for debugging.
|
||||||
|
.It Fl R, -chroot
|
||||||
|
With this option tinc chroots into the directory where network
|
||||||
|
config is located (@sysconfdir@/tinc/NETNAME if -n option is used,
|
||||||
|
or to the directory specified with -c option) after initialization.
|
||||||
|
.It Fl U, -user Ns = Ns Ar USER
|
||||||
|
setuid to the specified
|
||||||
|
.Ar USER
|
||||||
|
after initialization.
|
||||||
.It Fl -help
|
.It Fl -help
|
||||||
Display short list of options.
|
Display short list of options.
|
||||||
.It Fl -version
|
.It Fl -version
|
||||||
|
|
@ -112,6 +147,10 @@ Connections to hosts whose host config file are removed are closed.
|
||||||
New outgoing connections specified in
|
New outgoing connections specified in
|
||||||
.Pa tinc.conf
|
.Pa tinc.conf
|
||||||
will be made.
|
will be made.
|
||||||
|
If the
|
||||||
|
.Fl -logfile
|
||||||
|
option is used, this will also close and reopen the log file,
|
||||||
|
useful when log rotation is used.
|
||||||
.It INT
|
.It INT
|
||||||
Temporarily increases debug level to 5.
|
Temporarily increases debug level to 5.
|
||||||
Send this signal again to revert to the original level.
|
Send this signal again to revert to the original level.
|
||||||
|
|
@ -151,7 +190,7 @@ This will log all network traffic over the virtual private network.
|
||||||
Directory containing the configuration files tinc uses.
|
Directory containing the configuration files tinc uses.
|
||||||
For more information, see
|
For more information, see
|
||||||
.Xr tinc.conf 5 .
|
.Xr tinc.conf 5 .
|
||||||
.It Pa @localstatedir@/run/tinc. Ns Ar NETNAME Ns Pa .pid
|
.It Pa @runstatedir@/tinc. Ns Ar NETNAME Ns Pa .pid
|
||||||
The PID of the currently running
|
The PID of the currently running
|
||||||
.Nm
|
.Nm
|
||||||
is stored in this file.
|
is stored in this file.
|
||||||
|
|
@ -168,7 +207,7 @@ If you find any bugs, report them to tinc@tinc-vpn.org.
|
||||||
A lot, especially security auditing.
|
A lot, especially security auditing.
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
.Xr tinc.conf 5 ,
|
.Xr tinc.conf 5 ,
|
||||||
.Pa http://www.tinc-vpn.org/ ,
|
.Pa https://www.tinc-vpn.org/ ,
|
||||||
.Pa http://www.cabal.org/ .
|
.Pa http://www.cabal.org/ .
|
||||||
.Pp
|
.Pp
|
||||||
The full documentation for tinc is maintained as a Texinfo manual.
|
The full documentation for tinc is maintained as a Texinfo manual.
|
||||||
|
|
|
||||||
5
doc/tincinclude.texi
Normal file
5
doc/tincinclude.texi
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
@set VERSION 1.0.36
|
||||||
|
@set PACKAGE tinc
|
||||||
|
@set sysconfdir /etc
|
||||||
|
@set localstatedir /var
|
||||||
|
@set runstatedir /run
|
||||||
|
|
@ -2,3 +2,4 @@
|
||||||
@set PACKAGE @PACKAGE@
|
@set PACKAGE @PACKAGE@
|
||||||
@set sysconfdir @sysconfdir@
|
@set sysconfdir @sysconfdir@
|
||||||
@set localstatedir @localstatedir@
|
@set localstatedir @localstatedir@
|
||||||
|
@set runstatedir @runstatedir@
|
||||||
|
|
|
||||||
418
install-sh
418
install-sh
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# install - install a program, script, or datafile
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
scriptversion=2006-12-25.00
|
scriptversion=2018-03-11.20; # UTC
|
||||||
|
|
||||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
|
@ -35,25 +35,21 @@ scriptversion=2006-12-25.00
|
||||||
# FSF changes to this file are in the public domain.
|
# FSF changes to this file are in the public domain.
|
||||||
#
|
#
|
||||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
# `make' implicit rules from creating a file called install from it
|
# 'make' implicit rules from creating a file called install from it
|
||||||
# when there is no Makefile.
|
# when there is no Makefile.
|
||||||
#
|
#
|
||||||
# This script is compatible with the BSD install script, but was written
|
# This script is compatible with the BSD install script, but was written
|
||||||
# from scratch.
|
# from scratch.
|
||||||
|
|
||||||
|
tab=' '
|
||||||
nl='
|
nl='
|
||||||
'
|
'
|
||||||
IFS=" "" $nl"
|
IFS=" $tab$nl"
|
||||||
|
|
||||||
# set DOITPROG to echo to test this script
|
# Set DOITPROG to "echo" to test this script.
|
||||||
|
|
||||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
|
||||||
doit=${DOITPROG-}
|
doit=${DOITPROG-}
|
||||||
if test -z "$doit"; then
|
doit_exec=${doit:-exec}
|
||||||
doit_exec=exec
|
|
||||||
else
|
|
||||||
doit_exec=$doit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put in absolute file names if you don't have them in your path;
|
# Put in absolute file names if you don't have them in your path;
|
||||||
# or use environment vars.
|
# or use environment vars.
|
||||||
|
|
@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
|
||||||
rmprog=${RMPROG-rm}
|
rmprog=${RMPROG-rm}
|
||||||
stripprog=${STRIPPROG-strip}
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
posix_glob='?'
|
|
||||||
initialize_posix_glob='
|
|
||||||
test "$posix_glob" != "?" || {
|
|
||||||
if (set -f) 2>/dev/null; then
|
|
||||||
posix_glob=
|
|
||||||
else
|
|
||||||
posix_glob=:
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
'
|
|
||||||
|
|
||||||
posix_mkdir=
|
posix_mkdir=
|
||||||
|
|
||||||
# Desired mode of installed file.
|
# Desired mode of installed file.
|
||||||
|
|
@ -97,7 +82,7 @@ dir_arg=
|
||||||
dst_arg=
|
dst_arg=
|
||||||
|
|
||||||
copy_on_change=false
|
copy_on_change=false
|
||||||
no_target_directory=
|
is_target_a_directory=possibly
|
||||||
|
|
||||||
usage="\
|
usage="\
|
||||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
|
|
@ -137,42 +122,57 @@ while test $# -ne 0; do
|
||||||
-d) dir_arg=true;;
|
-d) dir_arg=true;;
|
||||||
|
|
||||||
-g) chgrpcmd="$chgrpprog $2"
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
--help) echo "$usage"; exit $?;;
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
-m) mode=$2
|
-m) mode=$2
|
||||||
case $mode in
|
case $mode in
|
||||||
*' '* | *' '* | *'
|
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||||
'* | *'*'* | *'?'* | *'['*)
|
echo "$0: invalid mode: $mode" >&2
|
||||||
echo "$0: invalid mode: $mode" >&2
|
exit 1;;
|
||||||
exit 1;;
|
esac
|
||||||
esac
|
shift;;
|
||||||
shift;;
|
|
||||||
|
|
||||||
-o) chowncmd="$chownprog $2"
|
-o) chowncmd="$chownprog $2"
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
-s) stripcmd=$stripprog;;
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
-t) dst_arg=$2
|
-t)
|
||||||
shift;;
|
is_target_a_directory=always
|
||||||
|
dst_arg=$2
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
-T) no_target_directory=true;;
|
-T) is_target_a_directory=never;;
|
||||||
|
|
||||||
--version) echo "$0 $scriptversion"; exit $?;;
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
--) shift
|
--) shift
|
||||||
break;;
|
break;;
|
||||||
|
|
||||||
-*) echo "$0: invalid option: $1" >&2
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
exit 1;;
|
exit 1;;
|
||||||
|
|
||||||
*) break;;
|
*) break;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# We allow the use of options -d and -T together, by making -d
|
||||||
|
# take the precedence; this is for compatibility with GNU install.
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
echo "$0: target directory not allowed when installing a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
# When -d is used, all remaining arguments are directories to create.
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
# When -t is used, the destination is already specified.
|
# When -t is used, the destination is already specified.
|
||||||
|
|
@ -186,6 +186,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
fi
|
fi
|
||||||
shift # arg
|
shift # arg
|
||||||
dst_arg=$arg
|
dst_arg=$arg
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -194,13 +198,26 @@ if test $# -eq 0; then
|
||||||
echo "$0: no input file specified." >&2
|
echo "$0: no input file specified." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
# It's OK to call `install-sh -d' without argument.
|
# It's OK to call 'install-sh -d' without argument.
|
||||||
# This can happen when creating conditional directories.
|
# This can happen when creating conditional directories.
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -z "$dir_arg"; then
|
if test -z "$dir_arg"; then
|
||||||
trap '(exit $?); exit' 1 2 13 15
|
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||||
|
if test ! -d "$dst_arg"; then
|
||||||
|
echo "$0: $dst_arg: Is not a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
do_exit='(exit $ret); exit $ret'
|
||||||
|
trap "ret=129; $do_exit" 1
|
||||||
|
trap "ret=130; $do_exit" 2
|
||||||
|
trap "ret=141; $do_exit" 13
|
||||||
|
trap "ret=143; $do_exit" 15
|
||||||
|
|
||||||
# Set umask so as not to create temps with too-generous modes.
|
# Set umask so as not to create temps with too-generous modes.
|
||||||
# However, 'strip' requires both read and write access to temps.
|
# However, 'strip' requires both read and write access to temps.
|
||||||
|
|
@ -211,16 +228,16 @@ if test -z "$dir_arg"; then
|
||||||
|
|
||||||
*[0-7])
|
*[0-7])
|
||||||
if test -z "$stripcmd"; then
|
if test -z "$stripcmd"; then
|
||||||
u_plus_rw=
|
u_plus_rw=
|
||||||
else
|
else
|
||||||
u_plus_rw='% 200'
|
u_plus_rw='% 200'
|
||||||
fi
|
fi
|
||||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
*)
|
*)
|
||||||
if test -z "$stripcmd"; then
|
if test -z "$stripcmd"; then
|
||||||
u_plus_rw=
|
u_plus_rw=
|
||||||
else
|
else
|
||||||
u_plus_rw=,u+rw
|
u_plus_rw=,u+rw
|
||||||
fi
|
fi
|
||||||
cp_umask=$mode$u_plus_rw;;
|
cp_umask=$mode$u_plus_rw;;
|
||||||
esac
|
esac
|
||||||
|
|
@ -228,9 +245,9 @@ fi
|
||||||
|
|
||||||
for src
|
for src
|
||||||
do
|
do
|
||||||
# Protect names starting with `-'.
|
# Protect names problematic for 'test' and other utilities.
|
||||||
case $src in
|
case $src in
|
||||||
-*) src=./$src;;
|
-* | [=\(\)!]) src=./$src;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test -n "$dir_arg"; then
|
if test -n "$dir_arg"; then
|
||||||
|
|
@ -252,129 +269,115 @@ do
|
||||||
echo "$0: no destination specified." >&2
|
echo "$0: no destination specified." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dst=$dst_arg
|
dst=$dst_arg
|
||||||
# Protect names starting with `-'.
|
|
||||||
case $dst in
|
|
||||||
-*) dst=./$dst;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If destination is a directory, append the input filename; won't work
|
# If destination is a directory, append the input filename.
|
||||||
# if double slashes aren't ignored.
|
|
||||||
if test -d "$dst"; then
|
if test -d "$dst"; then
|
||||||
if test -n "$no_target_directory"; then
|
if test "$is_target_a_directory" = never; then
|
||||||
echo "$0: $dst_arg: Is a directory" >&2
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
dstdir=$dst
|
dstdir=$dst
|
||||||
dst=$dstdir/`basename "$src"`
|
dstbase=`basename "$src"`
|
||||||
|
case $dst in
|
||||||
|
*/) dst=$dst$dstbase;;
|
||||||
|
*) dst=$dst/$dstbase;;
|
||||||
|
esac
|
||||||
dstdir_status=0
|
dstdir_status=0
|
||||||
else
|
else
|
||||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
dstdir=`dirname "$dst"`
|
||||||
dstdir=`
|
|
||||||
(dirname "$dst") 2>/dev/null ||
|
|
||||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
|
||||||
X"$dst" : 'X\(//\)[^/]' \| \
|
|
||||||
X"$dst" : 'X\(//\)$' \| \
|
|
||||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
|
||||||
echo X"$dst" |
|
|
||||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)[^/].*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\).*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
s/.*/./; q'
|
|
||||||
`
|
|
||||||
|
|
||||||
test -d "$dstdir"
|
test -d "$dstdir"
|
||||||
dstdir_status=$?
|
dstdir_status=$?
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
*/) dstdirslash=$dstdir;;
|
||||||
|
*) dstdirslash=$dstdir/;;
|
||||||
|
esac
|
||||||
|
|
||||||
obsolete_mkdir_used=false
|
obsolete_mkdir_used=false
|
||||||
|
|
||||||
if test $dstdir_status != 0; then
|
if test $dstdir_status != 0; then
|
||||||
case $posix_mkdir in
|
case $posix_mkdir in
|
||||||
'')
|
'')
|
||||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
umask=`umask`
|
umask=`umask`
|
||||||
case $stripcmd.$umask in
|
case $stripcmd.$umask in
|
||||||
# Optimize common cases.
|
# Optimize common cases.
|
||||||
*[2367][2367]) mkdir_umask=$umask;;
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
*[0-7])
|
*[0-7])
|
||||||
mkdir_umask=`expr $umask + 22 \
|
mkdir_umask=`expr $umask + 22 \
|
||||||
- $umask % 100 % 40 + $umask % 20 \
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
- $umask % 10 % 4 + $umask % 2
|
- $umask % 10 % 4 + $umask % 2
|
||||||
`;;
|
`;;
|
||||||
*) mkdir_umask=$umask,go-w;;
|
*) mkdir_umask=$umask,go-w;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# With -d, create the new directory with the user-specified mode.
|
# With -d, create the new directory with the user-specified mode.
|
||||||
# Otherwise, rely on $mkdir_umask.
|
# Otherwise, rely on $mkdir_umask.
|
||||||
if test -n "$dir_arg"; then
|
if test -n "$dir_arg"; then
|
||||||
mkdir_mode=-m$mode
|
mkdir_mode=-m$mode
|
||||||
else
|
else
|
||||||
mkdir_mode=
|
mkdir_mode=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
posix_mkdir=false
|
posix_mkdir=false
|
||||||
case $umask in
|
case $umask in
|
||||||
*[123567][0-7][0-7])
|
*[123567][0-7][0-7])
|
||||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
# Note that $RANDOM variable is not portable (e.g. dash); Use it
|
||||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
# here however when possible just to lower collision chance.
|
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
|
|
||||||
if (umask $mkdir_umask &&
|
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
|
||||||
then
|
# Because "mkdir -p" follows existing symlinks and we likely work
|
||||||
if test -z "$dir_arg" || {
|
# directly in world-writeable /tmp, make sure that the '$tmpdir'
|
||||||
# Check for POSIX incompatibilities with -m.
|
# directory is successfully created first before we actually test
|
||||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
# 'mkdir -p' feature.
|
||||||
# other-writeable bit of parent directory when it shouldn't.
|
if (umask $mkdir_umask &&
|
||||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
$mkdirprog $mkdir_mode "$tmpdir" &&
|
||||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
|
||||||
case $ls_ld_tmpdir in
|
then
|
||||||
d????-?r-*) different_mode=700;;
|
if test -z "$dir_arg" || {
|
||||||
d????-?--*) different_mode=755;;
|
# Check for POSIX incompatibilities with -m.
|
||||||
*) false;;
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
esac &&
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
test_tmpdir="$tmpdir/a"
|
||||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
|
||||||
}
|
case $ls_ld_tmpdir in
|
||||||
}
|
d????-?r-*) different_mode=700;;
|
||||||
then posix_mkdir=:
|
d????-?--*) different_mode=755;;
|
||||||
fi
|
*) false;;
|
||||||
rmdir "$tmpdir/d" "$tmpdir"
|
esac &&
|
||||||
else
|
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
|
||||||
# Remove any dirs left behind by ancient mkdir implementations.
|
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
|
||||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
fi
|
}
|
||||||
trap '' 0;;
|
}
|
||||||
esac;;
|
then posix_mkdir=:
|
||||||
|
fi
|
||||||
|
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
|
||||||
|
else
|
||||||
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
|
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
|
||||||
|
fi
|
||||||
|
trap '' 0;;
|
||||||
|
esac;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if
|
if
|
||||||
$posix_mkdir && (
|
$posix_mkdir && (
|
||||||
umask $mkdir_umask &&
|
umask $mkdir_umask &&
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
)
|
)
|
||||||
then :
|
then :
|
||||||
else
|
else
|
||||||
|
|
@ -384,53 +387,51 @@ do
|
||||||
# directory the slow way, step by step, checking for races as we go.
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
case $dstdir in
|
case $dstdir in
|
||||||
/*) prefix='/';;
|
/*) prefix='/';;
|
||||||
-*) prefix='./';;
|
[-=\(\)!]*) prefix='./';;
|
||||||
*) prefix='';;
|
*) prefix='';;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
eval "$initialize_posix_glob"
|
|
||||||
|
|
||||||
oIFS=$IFS
|
oIFS=$IFS
|
||||||
IFS=/
|
IFS=/
|
||||||
$posix_glob set -f
|
set -f
|
||||||
set fnord $dstdir
|
set fnord $dstdir
|
||||||
shift
|
shift
|
||||||
$posix_glob set +f
|
set +f
|
||||||
IFS=$oIFS
|
IFS=$oIFS
|
||||||
|
|
||||||
prefixes=
|
prefixes=
|
||||||
|
|
||||||
for d
|
for d
|
||||||
do
|
do
|
||||||
test -z "$d" && continue
|
test X"$d" = X && continue
|
||||||
|
|
||||||
prefix=$prefix$d
|
prefix=$prefix$d
|
||||||
if test -d "$prefix"; then
|
if test -d "$prefix"; then
|
||||||
prefixes=
|
prefixes=
|
||||||
else
|
else
|
||||||
if $posix_mkdir; then
|
if $posix_mkdir; then
|
||||||
(umask=$mkdir_umask &&
|
(umask=$mkdir_umask &&
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
# Don't fail if two instances are running concurrently.
|
# Don't fail if two instances are running concurrently.
|
||||||
test -d "$prefix" || exit 1
|
test -d "$prefix" || exit 1
|
||||||
else
|
else
|
||||||
case $prefix in
|
case $prefix in
|
||||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
*) qprefix=$prefix;;
|
*) qprefix=$prefix;;
|
||||||
esac
|
esac
|
||||||
prefixes="$prefixes '$qprefix'"
|
prefixes="$prefixes '$qprefix'"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
prefix=$prefix/
|
prefix=$prefix/
|
||||||
done
|
done
|
||||||
|
|
||||||
if test -n "$prefixes"; then
|
if test -n "$prefixes"; then
|
||||||
# Don't fail if two instances are running concurrently.
|
# Don't fail if two instances are running concurrently.
|
||||||
(umask $mkdir_umask &&
|
(umask $mkdir_umask &&
|
||||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
test -d "$dstdir" || exit 1
|
test -d "$dstdir" || exit 1
|
||||||
obsolete_mkdir_used=true
|
obsolete_mkdir_used=true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
@ -443,14 +444,25 @@ do
|
||||||
else
|
else
|
||||||
|
|
||||||
# Make a couple of temp file names in the proper directory.
|
# Make a couple of temp file names in the proper directory.
|
||||||
dsttmp=$dstdir/_inst.$$_
|
dsttmp=${dstdirslash}_inst.$$_
|
||||||
rmtmp=$dstdir/_rm.$$_
|
rmtmp=${dstdirslash}_rm.$$_
|
||||||
|
|
||||||
# Trap to clean up those temp files at exit.
|
# Trap to clean up those temp files at exit.
|
||||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
|
||||||
# Copy the file name to the temp name.
|
# Copy the file name to the temp name.
|
||||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
(umask $cp_umask &&
|
||||||
|
{ test -z "$stripcmd" || {
|
||||||
|
# Create $dsttmp read-write so that cp doesn't create it read-only,
|
||||||
|
# which would cause strip to fail.
|
||||||
|
if test -z "$doit"; then
|
||||||
|
: >"$dsttmp" # No need to fork-exec 'touch'.
|
||||||
|
else
|
||||||
|
$doit touch "$dsttmp"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
} &&
|
||||||
|
$doit_exec $cpprog "$src" "$dsttmp") &&
|
||||||
|
|
||||||
# and set any options; do chmod last to preserve setuid bits.
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
#
|
#
|
||||||
|
|
@ -465,15 +477,12 @@ do
|
||||||
|
|
||||||
# If -C, don't bother to copy if it wouldn't change the file.
|
# If -C, don't bother to copy if it wouldn't change the file.
|
||||||
if $copy_on_change &&
|
if $copy_on_change &&
|
||||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
set -f &&
|
||||||
eval "$initialize_posix_glob" &&
|
|
||||||
$posix_glob set -f &&
|
|
||||||
set X $old && old=:$2:$4:$5:$6 &&
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
set X $new && new=:$2:$4:$5:$6 &&
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
$posix_glob set +f &&
|
set +f &&
|
||||||
|
|
||||||
test "$old" = "$new" &&
|
test "$old" = "$new" &&
|
||||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
|
|
@ -486,24 +495,24 @@ do
|
||||||
# to itself, or perhaps because mv is so ancient that it does not
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
# support -f.
|
# support -f.
|
||||||
{
|
{
|
||||||
# Now remove or move aside any old file at destination location.
|
# Now remove or move aside any old file at destination location.
|
||||||
# We try this two ways since rm can't unlink itself on some
|
# We try this two ways since rm can't unlink itself on some
|
||||||
# systems and the destination file might be busy for other
|
# systems and the destination file might be busy for other
|
||||||
# reasons. In this case, the final cleanup might fail but the new
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
# file should still install successfully.
|
# file should still install successfully.
|
||||||
{
|
{
|
||||||
test ! -f "$dst" ||
|
test ! -f "$dst" ||
|
||||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||||
} ||
|
} ||
|
||||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
(exit 1); exit 1
|
(exit 1); exit 1
|
||||||
}
|
}
|
||||||
} &&
|
} &&
|
||||||
|
|
||||||
# Now rename the file to the real destination.
|
# Now rename the file to the real destination.
|
||||||
$doit $mvcmd "$dsttmp" "$dst"
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
}
|
}
|
||||||
fi || exit 1
|
fi || exit 1
|
||||||
|
|
||||||
|
|
@ -512,8 +521,9 @@ do
|
||||||
done
|
done
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
# time-stamp-start: "scriptversion="
|
# time-stamp-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
# time-stamp-end: "$"
|
# time-stamp-time-zone: "UTC0"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
# $Id: Makefile.am 1374 2004-03-21 14:21:22Z guus $
|
|
||||||
|
|
||||||
noinst_LIBRARIES = libvpn.a
|
|
||||||
|
|
||||||
INCLUDES = @INCLUDES@ -I. -I$(top_builddir)
|
|
||||||
|
|
||||||
libvpn_a_SOURCES = xmalloc.c pidfile.c utils.c getopt.c getopt1.c list.c avl_tree.c dropin.c fake-getaddrinfo.c fake-getnameinfo.c
|
|
||||||
|
|
||||||
libvpn_a_LIBADD = @LIBOBJS@ @ALLOCA@
|
|
||||||
libvpn_a_DEPENDENCIES = $(libvpn_a_LIBADD)
|
|
||||||
|
|
||||||
noinst_HEADERS = xalloc.h pidfile.h utils.h getopt.h list.h avl_tree.h dropin.h fake-getaddrinfo.h fake-getnameinfo.h fake-gai-errnos.h gettext.h ipv6.h ipv4.h ethernet.h
|
|
||||||
|
|
||||||
EXTRA_DIST =
|
|
||||||
442
lib/Makefile.in
442
lib/Makefile.in
|
|
@ -1,442 +0,0 @@
|
||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
|
|
||||||
# $Id: Makefile.am 1374 2004-03-21 14:21:22Z guus $
|
|
||||||
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
install_sh_SCRIPT = $(install_sh) -c
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = $(program_transform_name)
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
build_triplet = @build@
|
|
||||||
host_triplet = @host@
|
|
||||||
subdir = lib
|
|
||||||
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
|
||||||
$(srcdir)/Makefile.in alloca.c malloc.c memcmp.c realloc.c
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
|
|
||||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
|
|
||||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
|
||||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
|
|
||||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \
|
|
||||||
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
|
|
||||||
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in
|
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
||||||
$(ACLOCAL_M4)
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
LIBRARIES = $(noinst_LIBRARIES)
|
|
||||||
AR = ar
|
|
||||||
ARFLAGS = cru
|
|
||||||
libvpn_a_AR = $(AR) $(ARFLAGS)
|
|
||||||
am_libvpn_a_OBJECTS = xmalloc.$(OBJEXT) pidfile.$(OBJEXT) \
|
|
||||||
utils.$(OBJEXT) getopt.$(OBJEXT) getopt1.$(OBJEXT) \
|
|
||||||
list.$(OBJEXT) avl_tree.$(OBJEXT) dropin.$(OBJEXT) \
|
|
||||||
fake-getaddrinfo.$(OBJEXT) fake-getnameinfo.$(OBJEXT)
|
|
||||||
libvpn_a_OBJECTS = $(am_libvpn_a_OBJECTS)
|
|
||||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
|
||||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
|
||||||
am__depfiles_maybe = depfiles
|
|
||||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
CCLD = $(CC)
|
|
||||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
|
||||||
SOURCES = $(libvpn_a_SOURCES)
|
|
||||||
DIST_SOURCES = $(libvpn_a_SOURCES)
|
|
||||||
HEADERS = $(noinst_HEADERS)
|
|
||||||
ETAGS = etags
|
|
||||||
CTAGS = ctags
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
ALLOCA = @ALLOCA@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AWK = @AWK@
|
|
||||||
CC = @CC@
|
|
||||||
CCDEPMODE = @CCDEPMODE@
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
CPP = @CPP@
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
CYGPATH_W = @CYGPATH_W@
|
|
||||||
DEFS = @DEFS@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
ECHO_C = @ECHO_C@
|
|
||||||
ECHO_N = @ECHO_N@
|
|
||||||
ECHO_T = @ECHO_T@
|
|
||||||
EGREP = @EGREP@
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
GMSGFMT = @GMSGFMT@
|
|
||||||
GREP = @GREP@
|
|
||||||
INCLUDES = @INCLUDES@ -I. -I$(top_builddir)
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
INTLLIBS = @INTLLIBS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBICONV = @LIBICONV@
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
LN_S = @LN_S@
|
|
||||||
LTLIBICONV = @LTLIBICONV@
|
|
||||||
LTLIBINTL = @LTLIBINTL@
|
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
|
||||||
MAINT = @MAINT@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
|
||||||
MKDIR_P = @MKDIR_P@
|
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
MSGFMT = @MSGFMT@
|
|
||||||
MSGMERGE = @MSGMERGE@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
POSUB = @POSUB@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
USE_NLS = @USE_NLS@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
XGETTEXT = @XGETTEXT@
|
|
||||||
abs_builddir = @abs_builddir@
|
|
||||||
abs_srcdir = @abs_srcdir@
|
|
||||||
abs_top_builddir = @abs_top_builddir@
|
|
||||||
abs_top_srcdir = @abs_top_srcdir@
|
|
||||||
ac_ct_CC = @ac_ct_CC@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__leading_dot = @am__leading_dot@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
am__tar = @am__tar@
|
|
||||||
am__untar = @am__untar@
|
|
||||||
bindir = @bindir@
|
|
||||||
build = @build@
|
|
||||||
build_alias = @build_alias@
|
|
||||||
build_cpu = @build_cpu@
|
|
||||||
build_os = @build_os@
|
|
||||||
build_vendor = @build_vendor@
|
|
||||||
builddir = @builddir@
|
|
||||||
datadir = @datadir@
|
|
||||||
datarootdir = @datarootdir@
|
|
||||||
docdir = @docdir@
|
|
||||||
dvidir = @dvidir@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
host = @host@
|
|
||||||
host_alias = @host_alias@
|
|
||||||
host_cpu = @host_cpu@
|
|
||||||
host_os = @host_os@
|
|
||||||
host_vendor = @host_vendor@
|
|
||||||
htmldir = @htmldir@
|
|
||||||
includedir = @includedir@
|
|
||||||
infodir = @infodir@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
libdir = @libdir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
localedir = @localedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
mandir = @mandir@
|
|
||||||
mkdir_p = @mkdir_p@
|
|
||||||
oldincludedir = @oldincludedir@
|
|
||||||
pdfdir = @pdfdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
program_transform_name = @program_transform_name@
|
|
||||||
psdir = @psdir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
srcdir = @srcdir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
target_alias = @target_alias@
|
|
||||||
top_builddir = @top_builddir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
noinst_LIBRARIES = libvpn.a
|
|
||||||
libvpn_a_SOURCES = xmalloc.c pidfile.c utils.c getopt.c getopt1.c list.c avl_tree.c dropin.c fake-getaddrinfo.c fake-getnameinfo.c
|
|
||||||
libvpn_a_LIBADD = @LIBOBJS@ @ALLOCA@
|
|
||||||
libvpn_a_DEPENDENCIES = $(libvpn_a_LIBADD)
|
|
||||||
noinst_HEADERS = xalloc.h pidfile.h utils.h getopt.h list.h avl_tree.h dropin.h fake-getaddrinfo.h fake-getnameinfo.h fake-gai-errnos.h gettext.h ipv6.h ipv4.h ethernet.h
|
|
||||||
EXTRA_DIST =
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .c .o .obj
|
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
|
||||||
@for dep in $?; do \
|
|
||||||
case '$(am__configure_deps)' in \
|
|
||||||
*$$dep*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
|
||||||
&& exit 0; \
|
|
||||||
exit 1;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
|
|
||||||
cd $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu lib/Makefile
|
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
@case '$?' in \
|
|
||||||
*config.status*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
|
||||||
*) \
|
|
||||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
|
||||||
esac;
|
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
|
|
||||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
|
|
||||||
clean-noinstLIBRARIES:
|
|
||||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
|
||||||
libvpn.a: $(libvpn_a_OBJECTS) $(libvpn_a_DEPENDENCIES)
|
|
||||||
-rm -f libvpn.a
|
|
||||||
$(libvpn_a_AR) libvpn.a $(libvpn_a_OBJECTS) $(libvpn_a_LIBADD)
|
|
||||||
$(RANLIB) libvpn.a
|
|
||||||
|
|
||||||
mostlyclean-compile:
|
|
||||||
-rm -f *.$(OBJEXT)
|
|
||||||
|
|
||||||
distclean-compile:
|
|
||||||
-rm -f *.tab.c
|
|
||||||
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memcmp.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl_tree.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dropin.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake-getaddrinfo.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake-getnameinfo.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfile.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
|
||||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
|
||||||
|
|
||||||
.c.obj:
|
|
||||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
|
||||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
mkid -fID $$unique
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
|
||||||
tags=; \
|
|
||||||
here=`pwd`; \
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
|
||||||
test -n "$$unique" || unique=$$empty_fix; \
|
|
||||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
||||||
$$tags $$unique; \
|
|
||||||
fi
|
|
||||||
ctags: CTAGS
|
|
||||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
|
||||||
tags=; \
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|
||||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
|
||||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|
||||||
$$tags $$unique
|
|
||||||
|
|
||||||
GTAGS:
|
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
|
||||||
&& cd $(top_srcdir) \
|
|
||||||
&& gtags -i $(GTAGS_ARGS) $$here
|
|
||||||
|
|
||||||
distclean-tags:
|
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
list='$(DISTFILES)'; \
|
|
||||||
dist_files=`for file in $$list; do echo $$file; done | \
|
|
||||||
sed -e "s|^$$srcdirstrip/||;t" \
|
|
||||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|
||||||
case $$dist_files in \
|
|
||||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|
||||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|
||||||
sort -u` ;; \
|
|
||||||
esac; \
|
|
||||||
for file in $$dist_files; do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
|
||||||
fi; \
|
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
|
||||||
else \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile $(LIBRARIES) $(HEADERS)
|
|
||||||
installdirs:
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
`test -z '$(STRIP)' || \
|
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
|
||||||
-rm -f Makefile
|
|
||||||
distclean-am: clean-am distclean-compile distclean-generic \
|
|
||||||
distclean-tags
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
html: html-am
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-dvi: install-dvi-am
|
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
|
|
||||||
install-html: install-html-am
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
|
||||||
|
|
||||||
install-ps: install-ps-am
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
|
||||||
-rm -f Makefile
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
|
||||||
|
|
||||||
pdf: pdf-am
|
|
||||||
|
|
||||||
pdf-am:
|
|
||||||
|
|
||||||
ps: ps-am
|
|
||||||
|
|
||||||
ps-am:
|
|
||||||
|
|
||||||
uninstall-am:
|
|
||||||
|
|
||||||
.MAKE: install-am install-strip
|
|
||||||
|
|
||||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
|
||||||
clean-noinstLIBRARIES ctags distclean distclean-compile \
|
|
||||||
distclean-generic distclean-tags distdir dvi dvi-am html \
|
|
||||||
html-am info info-am install install-am install-data \
|
|
||||||
install-data-am install-dvi install-dvi-am install-exec \
|
|
||||||
install-exec-am install-html install-html-am install-info \
|
|
||||||
install-info-am install-man install-pdf install-pdf-am \
|
|
||||||
install-ps install-ps-am install-strip installcheck \
|
|
||||||
installcheck-am installdirs maintainer-clean \
|
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
|
||||||
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
|
||||||
uninstall-am
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
.NOEXPORT:
|
|
||||||
494
lib/alloca.c
494
lib/alloca.c
|
|
@ -1,494 +0,0 @@
|
||||||
/* alloca.c -- allocate automatically reclaimed memory
|
|
||||||
(Mostly) portable public-domain implementation -- D A Gwyn
|
|
||||||
|
|
||||||
This implementation of the PWB library alloca function,
|
|
||||||
which is used to allocate space off the run-time stack so
|
|
||||||
that it is automatically reclaimed upon procedure exit,
|
|
||||||
was inspired by discussions with J. Q. Johnson of Cornell.
|
|
||||||
J.Otto Tennant <jot@cray.com> contributed the Cray support.
|
|
||||||
|
|
||||||
There are some preprocessor constants that can
|
|
||||||
be defined when compiling for your specific system, for
|
|
||||||
improved efficiency; however, the defaults should be okay.
|
|
||||||
|
|
||||||
The general concept of this implementation is to keep
|
|
||||||
track of all alloca-allocated blocks, and reclaim any
|
|
||||||
that are found to be deeper in the stack than the current
|
|
||||||
invocation. This heuristic does not reclaim storage as
|
|
||||||
soon as it becomes invalid, but it will do so eventually.
|
|
||||||
|
|
||||||
As a special case, alloca(0) reclaims storage without
|
|
||||||
allocating any. It is a good idea to use alloca(0) in
|
|
||||||
your main control loop, etc. to force garbage collection. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef emacs
|
|
||||||
# include "blockinput.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If compiling with GCC 2, this file's not needed. */
|
|
||||||
#if !defined (__GNUC__) || __GNUC__ < 2
|
|
||||||
|
|
||||||
/* If someone has defined alloca as a macro,
|
|
||||||
there must be some other way alloca is supposed to work. */
|
|
||||||
# ifndef alloca
|
|
||||||
|
|
||||||
# ifdef emacs
|
|
||||||
# ifdef static
|
|
||||||
/* actually, only want this if static is defined as ""
|
|
||||||
-- this is for usg, in which emacs must undefine static
|
|
||||||
in order to make unexec workable
|
|
||||||
*/
|
|
||||||
# ifndef STACK_DIRECTION
|
|
||||||
you
|
|
||||||
lose
|
|
||||||
-- must know STACK_DIRECTION at compile-time
|
|
||||||
# endif /* STACK_DIRECTION undefined */
|
|
||||||
# endif /* static */
|
|
||||||
# endif /* emacs */
|
|
||||||
|
|
||||||
/* If your stack is a linked list of frames, you have to
|
|
||||||
provide an "address metric" ADDRESS_FUNCTION macro. */
|
|
||||||
|
|
||||||
# if defined (CRAY) && defined (CRAY_STACKSEG_END)
|
|
||||||
long i00afunc ();
|
|
||||||
# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
|
|
||||||
# else
|
|
||||||
# define ADDRESS_FUNCTION(arg) &(arg)
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# if __STDC__
|
|
||||||
typedef void *pointer;
|
|
||||||
# else
|
|
||||||
typedef char *pointer;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifndef NULL
|
|
||||||
# define NULL 0
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* Different portions of Emacs need to call different versions of
|
|
||||||
malloc. The Emacs executable needs alloca to call xmalloc, because
|
|
||||||
ordinary malloc isn't protected from input signals. On the other
|
|
||||||
hand, the utilities in lib-src need alloca to call malloc; some of
|
|
||||||
them are very simple, and don't have an xmalloc routine.
|
|
||||||
|
|
||||||
Non-Emacs programs expect this to call xmalloc.
|
|
||||||
|
|
||||||
Callers below should use malloc. */
|
|
||||||
|
|
||||||
# ifndef emacs
|
|
||||||
# define malloc xmalloc
|
|
||||||
# endif
|
|
||||||
extern pointer malloc ();
|
|
||||||
|
|
||||||
/* Define STACK_DIRECTION if you know the direction of stack
|
|
||||||
growth for your system; otherwise it will be automatically
|
|
||||||
deduced at run-time.
|
|
||||||
|
|
||||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
|
||||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
|
||||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
|
||||||
|
|
||||||
# ifndef STACK_DIRECTION
|
|
||||||
# define STACK_DIRECTION 0 /* Direction unknown. */
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# if STACK_DIRECTION != 0
|
|
||||||
|
|
||||||
# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
|
|
||||||
|
|
||||||
# else /* STACK_DIRECTION == 0; need run-time code. */
|
|
||||||
|
|
||||||
static int stack_dir; /* 1 or -1 once known. */
|
|
||||||
# define STACK_DIR stack_dir
|
|
||||||
|
|
||||||
static void
|
|
||||||
find_stack_direction ()
|
|
||||||
{
|
|
||||||
static char *addr = NULL; /* Address of first `dummy', once known. */
|
|
||||||
auto char dummy; /* To get stack address. */
|
|
||||||
|
|
||||||
if (addr == NULL)
|
|
||||||
{ /* Initial entry. */
|
|
||||||
addr = ADDRESS_FUNCTION (dummy);
|
|
||||||
|
|
||||||
find_stack_direction (); /* Recurse once. */
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Second entry. */
|
|
||||||
if (ADDRESS_FUNCTION (dummy) > addr)
|
|
||||||
stack_dir = 1; /* Stack grew upward. */
|
|
||||||
else
|
|
||||||
stack_dir = -1; /* Stack grew downward. */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# endif /* STACK_DIRECTION == 0 */
|
|
||||||
|
|
||||||
/* An "alloca header" is used to:
|
|
||||||
(a) chain together all alloca'ed blocks;
|
|
||||||
(b) keep track of stack depth.
|
|
||||||
|
|
||||||
It is very important that sizeof(header) agree with malloc
|
|
||||||
alignment chunk size. The following default should work okay. */
|
|
||||||
|
|
||||||
# ifndef ALIGN_SIZE
|
|
||||||
# define ALIGN_SIZE sizeof(double)
|
|
||||||
# endif
|
|
||||||
|
|
||||||
typedef union hdr
|
|
||||||
{
|
|
||||||
char align[ALIGN_SIZE]; /* To force sizeof(header). */
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
union hdr *next; /* For chaining headers. */
|
|
||||||
char *deep; /* For stack depth measure. */
|
|
||||||
} h;
|
|
||||||
} header;
|
|
||||||
|
|
||||||
static header *last_alloca_header = NULL; /* -> last alloca header. */
|
|
||||||
|
|
||||||
/* Return a pointer to at least SIZE bytes of storage,
|
|
||||||
which will be automatically reclaimed upon exit from
|
|
||||||
the procedure that called alloca. Originally, this space
|
|
||||||
was supposed to be taken from the current stack frame of the
|
|
||||||
caller, but that method cannot be made to work for some
|
|
||||||
implementations of C, for example under Gould's UTX/32. */
|
|
||||||
|
|
||||||
pointer
|
|
||||||
alloca (size)
|
|
||||||
unsigned size;
|
|
||||||
{
|
|
||||||
auto char probe; /* Probes stack depth: */
|
|
||||||
register char *depth = ADDRESS_FUNCTION (probe);
|
|
||||||
|
|
||||||
# if STACK_DIRECTION == 0
|
|
||||||
if (STACK_DIR == 0) /* Unknown growth direction. */
|
|
||||||
find_stack_direction ();
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* Reclaim garbage, defined as all alloca'd storage that
|
|
||||||
was allocated from deeper in the stack than currently. */
|
|
||||||
|
|
||||||
{
|
|
||||||
register header *hp; /* Traverses linked list. */
|
|
||||||
|
|
||||||
# ifdef emacs
|
|
||||||
BLOCK_INPUT;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
for (hp = last_alloca_header; hp != NULL;)
|
|
||||||
if ((STACK_DIR > 0 && hp->h.deep > depth)
|
|
||||||
|| (STACK_DIR < 0 && hp->h.deep < depth))
|
|
||||||
{
|
|
||||||
register header *np = hp->h.next;
|
|
||||||
|
|
||||||
free ((pointer) hp); /* Collect garbage. */
|
|
||||||
|
|
||||||
hp = np; /* -> next header. */
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break; /* Rest are not deeper. */
|
|
||||||
|
|
||||||
last_alloca_header = hp; /* -> last valid storage. */
|
|
||||||
|
|
||||||
# ifdef emacs
|
|
||||||
UNBLOCK_INPUT;
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (size == 0)
|
|
||||||
return NULL; /* No allocation required. */
|
|
||||||
|
|
||||||
/* Allocate combined header + user data storage. */
|
|
||||||
|
|
||||||
{
|
|
||||||
register pointer new = malloc (sizeof (header) + size);
|
|
||||||
/* Address of header. */
|
|
||||||
|
|
||||||
((header *) new)->h.next = last_alloca_header;
|
|
||||||
((header *) new)->h.deep = depth;
|
|
||||||
|
|
||||||
last_alloca_header = (header *) new;
|
|
||||||
|
|
||||||
/* User storage begins just after header. */
|
|
||||||
|
|
||||||
return (pointer) ((char *) new + sizeof (header));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# if defined (CRAY) && defined (CRAY_STACKSEG_END)
|
|
||||||
|
|
||||||
# ifdef DEBUG_I00AFUNC
|
|
||||||
# include <stdio.h>
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifndef CRAY_STACK
|
|
||||||
# define CRAY_STACK
|
|
||||||
# ifndef CRAY2
|
|
||||||
/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
|
|
||||||
struct stack_control_header
|
|
||||||
{
|
|
||||||
long shgrow:32; /* Number of times stack has grown. */
|
|
||||||
long shaseg:32; /* Size of increments to stack. */
|
|
||||||
long shhwm:32; /* High water mark of stack. */
|
|
||||||
long shsize:32; /* Current size of stack (all segments). */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* The stack segment linkage control information occurs at
|
|
||||||
the high-address end of a stack segment. (The stack
|
|
||||||
grows from low addresses to high addresses.) The initial
|
|
||||||
part of the stack segment linkage control information is
|
|
||||||
0200 (octal) words. This provides for register storage
|
|
||||||
for the routine which overflows the stack. */
|
|
||||||
|
|
||||||
struct stack_segment_linkage
|
|
||||||
{
|
|
||||||
long ss[0200]; /* 0200 overflow words. */
|
|
||||||
long sssize:32; /* Number of words in this segment. */
|
|
||||||
long ssbase:32; /* Offset to stack base. */
|
|
||||||
long:32;
|
|
||||||
long sspseg:32; /* Offset to linkage control of previous
|
|
||||||
segment of stack. */
|
|
||||||
long:32;
|
|
||||||
long sstcpt:32; /* Pointer to task common address block. */
|
|
||||||
long sscsnm; /* Private control structure number for
|
|
||||||
microtasking. */
|
|
||||||
long ssusr1; /* Reserved for user. */
|
|
||||||
long ssusr2; /* Reserved for user. */
|
|
||||||
long sstpid; /* Process ID for pid based multi-tasking. */
|
|
||||||
long ssgvup; /* Pointer to multitasking thread giveup. */
|
|
||||||
long sscray[7]; /* Reserved for Cray Research. */
|
|
||||||
long ssa0;
|
|
||||||
long ssa1;
|
|
||||||
long ssa2;
|
|
||||||
long ssa3;
|
|
||||||
long ssa4;
|
|
||||||
long ssa5;
|
|
||||||
long ssa6;
|
|
||||||
long ssa7;
|
|
||||||
long sss0;
|
|
||||||
long sss1;
|
|
||||||
long sss2;
|
|
||||||
long sss3;
|
|
||||||
long sss4;
|
|
||||||
long sss5;
|
|
||||||
long sss6;
|
|
||||||
long sss7;
|
|
||||||
};
|
|
||||||
|
|
||||||
# else /* CRAY2 */
|
|
||||||
/* The following structure defines the vector of words
|
|
||||||
returned by the STKSTAT library routine. */
|
|
||||||
struct stk_stat
|
|
||||||
{
|
|
||||||
long now; /* Current total stack size. */
|
|
||||||
long maxc; /* Amount of contiguous space which would
|
|
||||||
be required to satisfy the maximum
|
|
||||||
stack demand to date. */
|
|
||||||
long high_water; /* Stack high-water mark. */
|
|
||||||
long overflows; /* Number of stack overflow ($STKOFEN) calls. */
|
|
||||||
long hits; /* Number of internal buffer hits. */
|
|
||||||
long extends; /* Number of block extensions. */
|
|
||||||
long stko_mallocs; /* Block allocations by $STKOFEN. */
|
|
||||||
long underflows; /* Number of stack underflow calls ($STKRETN). */
|
|
||||||
long stko_free; /* Number of deallocations by $STKRETN. */
|
|
||||||
long stkm_free; /* Number of deallocations by $STKMRET. */
|
|
||||||
long segments; /* Current number of stack segments. */
|
|
||||||
long maxs; /* Maximum number of stack segments so far. */
|
|
||||||
long pad_size; /* Stack pad size. */
|
|
||||||
long current_address; /* Current stack segment address. */
|
|
||||||
long current_size; /* Current stack segment size. This
|
|
||||||
number is actually corrupted by STKSTAT to
|
|
||||||
include the fifteen word trailer area. */
|
|
||||||
long initial_address; /* Address of initial segment. */
|
|
||||||
long initial_size; /* Size of initial segment. */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* The following structure describes the data structure which trails
|
|
||||||
any stack segment. I think that the description in 'asdef' is
|
|
||||||
out of date. I only describe the parts that I am sure about. */
|
|
||||||
|
|
||||||
struct stk_trailer
|
|
||||||
{
|
|
||||||
long this_address; /* Address of this block. */
|
|
||||||
long this_size; /* Size of this block (does not include
|
|
||||||
this trailer). */
|
|
||||||
long unknown2;
|
|
||||||
long unknown3;
|
|
||||||
long link; /* Address of trailer block of previous
|
|
||||||
segment. */
|
|
||||||
long unknown5;
|
|
||||||
long unknown6;
|
|
||||||
long unknown7;
|
|
||||||
long unknown8;
|
|
||||||
long unknown9;
|
|
||||||
long unknown10;
|
|
||||||
long unknown11;
|
|
||||||
long unknown12;
|
|
||||||
long unknown13;
|
|
||||||
long unknown14;
|
|
||||||
};
|
|
||||||
|
|
||||||
# endif /* CRAY2 */
|
|
||||||
# endif /* not CRAY_STACK */
|
|
||||||
|
|
||||||
# ifdef CRAY2
|
|
||||||
/* Determine a "stack measure" for an arbitrary ADDRESS.
|
|
||||||
I doubt that "lint" will like this much. */
|
|
||||||
|
|
||||||
static long
|
|
||||||
i00afunc (long *address)
|
|
||||||
{
|
|
||||||
struct stk_stat status;
|
|
||||||
struct stk_trailer *trailer;
|
|
||||||
long *block, size;
|
|
||||||
long result = 0;
|
|
||||||
|
|
||||||
/* We want to iterate through all of the segments. The first
|
|
||||||
step is to get the stack status structure. We could do this
|
|
||||||
more quickly and more directly, perhaps, by referencing the
|
|
||||||
$LM00 common block, but I know that this works. */
|
|
||||||
|
|
||||||
STKSTAT (&status);
|
|
||||||
|
|
||||||
/* Set up the iteration. */
|
|
||||||
|
|
||||||
trailer = (struct stk_trailer *) (status.current_address
|
|
||||||
+ status.current_size
|
|
||||||
- 15);
|
|
||||||
|
|
||||||
/* There must be at least one stack segment. Therefore it is
|
|
||||||
a fatal error if "trailer" is null. */
|
|
||||||
|
|
||||||
if (trailer == 0)
|
|
||||||
abort ();
|
|
||||||
|
|
||||||
/* Discard segments that do not contain our argument address. */
|
|
||||||
|
|
||||||
while (trailer != 0)
|
|
||||||
{
|
|
||||||
block = (long *) trailer->this_address;
|
|
||||||
size = trailer->this_size;
|
|
||||||
if (block == 0 || size == 0)
|
|
||||||
abort ();
|
|
||||||
trailer = (struct stk_trailer *) trailer->link;
|
|
||||||
if ((block <= address) && (address < (block + size)))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the result to the offset in this segment and add the sizes
|
|
||||||
of all predecessor segments. */
|
|
||||||
|
|
||||||
result = address - block;
|
|
||||||
|
|
||||||
if (trailer == 0)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if (trailer->this_size <= 0)
|
|
||||||
abort ();
|
|
||||||
result += trailer->this_size;
|
|
||||||
trailer = (struct stk_trailer *) trailer->link;
|
|
||||||
}
|
|
||||||
while (trailer != 0);
|
|
||||||
|
|
||||||
/* We are done. Note that if you present a bogus address (one
|
|
||||||
not in any segment), you will get a different number back, formed
|
|
||||||
from subtracting the address of the first block. This is probably
|
|
||||||
not what you want. */
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
# else /* not CRAY2 */
|
|
||||||
/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
|
|
||||||
Determine the number of the cell within the stack,
|
|
||||||
given the address of the cell. The purpose of this
|
|
||||||
routine is to linearize, in some sense, stack addresses
|
|
||||||
for alloca. */
|
|
||||||
|
|
||||||
static long
|
|
||||||
i00afunc (long address)
|
|
||||||
{
|
|
||||||
long stkl = 0;
|
|
||||||
|
|
||||||
long size, pseg, this_segment, stack;
|
|
||||||
long result = 0;
|
|
||||||
|
|
||||||
struct stack_segment_linkage *ssptr;
|
|
||||||
|
|
||||||
/* Register B67 contains the address of the end of the
|
|
||||||
current stack segment. If you (as a subprogram) store
|
|
||||||
your registers on the stack and find that you are past
|
|
||||||
the contents of B67, you have overflowed the segment.
|
|
||||||
|
|
||||||
B67 also points to the stack segment linkage control
|
|
||||||
area, which is what we are really interested in. */
|
|
||||||
|
|
||||||
stkl = CRAY_STACKSEG_END ();
|
|
||||||
ssptr = (struct stack_segment_linkage *) stkl;
|
|
||||||
|
|
||||||
/* If one subtracts 'size' from the end of the segment,
|
|
||||||
one has the address of the first word of the segment.
|
|
||||||
|
|
||||||
If this is not the first segment, 'pseg' will be
|
|
||||||
nonzero. */
|
|
||||||
|
|
||||||
pseg = ssptr->sspseg;
|
|
||||||
size = ssptr->sssize;
|
|
||||||
|
|
||||||
this_segment = stkl - size;
|
|
||||||
|
|
||||||
/* It is possible that calling this routine itself caused
|
|
||||||
a stack overflow. Discard stack segments which do not
|
|
||||||
contain the target address. */
|
|
||||||
|
|
||||||
while (!(this_segment <= address && address <= stkl))
|
|
||||||
{
|
|
||||||
# ifdef DEBUG_I00AFUNC
|
|
||||||
fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
|
|
||||||
# endif
|
|
||||||
if (pseg == 0)
|
|
||||||
break;
|
|
||||||
stkl = stkl - pseg;
|
|
||||||
ssptr = (struct stack_segment_linkage *) stkl;
|
|
||||||
size = ssptr->sssize;
|
|
||||||
pseg = ssptr->sspseg;
|
|
||||||
this_segment = stkl - size;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = address - this_segment;
|
|
||||||
|
|
||||||
/* If you subtract pseg from the current end of the stack,
|
|
||||||
you get the address of the previous stack segment's end.
|
|
||||||
This seems a little convoluted to me, but I'll bet you save
|
|
||||||
a cycle somewhere. */
|
|
||||||
|
|
||||||
while (pseg != 0)
|
|
||||||
{
|
|
||||||
# ifdef DEBUG_I00AFUNC
|
|
||||||
fprintf (stderr, "%011o %011o\n", pseg, size);
|
|
||||||
# endif
|
|
||||||
stkl = stkl - pseg;
|
|
||||||
ssptr = (struct stack_segment_linkage *) stkl;
|
|
||||||
size = ssptr->sssize;
|
|
||||||
pseg = ssptr->sspseg;
|
|
||||||
result += size;
|
|
||||||
}
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
# endif /* not CRAY2 */
|
|
||||||
# endif /* CRAY */
|
|
||||||
|
|
||||||
# endif /* no alloca */
|
|
||||||
#endif /* not GCC version 2 */
|
|
||||||
145
lib/avl_tree.h
145
lib/avl_tree.h
|
|
@ -1,145 +0,0 @@
|
||||||
/*
|
|
||||||
avl_tree.h -- header file for avl_tree.c
|
|
||||||
Copyright (C) 1998 Michael H. Buselli
|
|
||||||
2000-2005 Ivo Timmermans,
|
|
||||||
2000-2006 Guus Sliepen <guus@tinc-vpn.org>
|
|
||||||
2000-2005 Wessel Dankers <wsl@tinc-vpn.org>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
Original AVL tree library by Michael H. Buselli <cosine@cosine.org>.
|
|
||||||
|
|
||||||
Modified 2000-11-28 by Wessel Dankers <wsl@tinc-vpn.org> to use counts
|
|
||||||
instead of depths, to add the ->next and ->prev and to generally obfuscate
|
|
||||||
the code. Mail me if you found a bug.
|
|
||||||
|
|
||||||
Cleaned up and incorporated some of the ideas from the red-black tree
|
|
||||||
library for inclusion into tinc (http://www.tinc-vpn.org/) by
|
|
||||||
Guus Sliepen <guus@tinc-vpn.org>.
|
|
||||||
|
|
||||||
$Id: avl_tree.h 1452 2006-04-26 13:52:58Z guus $
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __AVL_TREE_H__
|
|
||||||
#define __AVL_TREE_H__
|
|
||||||
|
|
||||||
#ifndef AVL_DEPTH
|
|
||||||
#ifndef AVL_COUNT
|
|
||||||
#define AVL_DEPTH
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct avl_node_t {
|
|
||||||
|
|
||||||
/* Linked list part */
|
|
||||||
|
|
||||||
struct avl_node_t *next;
|
|
||||||
struct avl_node_t *prev;
|
|
||||||
|
|
||||||
/* Tree part */
|
|
||||||
|
|
||||||
struct avl_node_t *parent;
|
|
||||||
struct avl_node_t *left;
|
|
||||||
struct avl_node_t *right;
|
|
||||||
|
|
||||||
#ifdef AVL_COUNT
|
|
||||||
unsigned int count;
|
|
||||||
#endif
|
|
||||||
#ifdef AVL_DEPTH
|
|
||||||
unsigned char depth;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Payload */
|
|
||||||
|
|
||||||
void *data;
|
|
||||||
|
|
||||||
} avl_node_t;
|
|
||||||
|
|
||||||
typedef int (*avl_compare_t)(const void *, const void *);
|
|
||||||
typedef void (*avl_action_t)(const void *);
|
|
||||||
typedef void (*avl_action_node_t)(const avl_node_t *);
|
|
||||||
|
|
||||||
typedef struct avl_tree_t {
|
|
||||||
|
|
||||||
/* Linked list part */
|
|
||||||
|
|
||||||
avl_node_t *head;
|
|
||||||
avl_node_t *tail;
|
|
||||||
|
|
||||||
/* Tree part */
|
|
||||||
|
|
||||||
avl_node_t *root;
|
|
||||||
|
|
||||||
avl_compare_t compare;
|
|
||||||
avl_action_t delete;
|
|
||||||
|
|
||||||
} avl_tree_t;
|
|
||||||
|
|
||||||
/* (De)constructors */
|
|
||||||
|
|
||||||
extern avl_tree_t *avl_alloc_tree(avl_compare_t, avl_action_t);
|
|
||||||
extern void avl_free_tree(avl_tree_t *);
|
|
||||||
|
|
||||||
extern avl_node_t *avl_alloc_node(void);
|
|
||||||
extern void avl_free_node(avl_tree_t *tree, avl_node_t *);
|
|
||||||
|
|
||||||
/* Insertion and deletion */
|
|
||||||
|
|
||||||
extern avl_node_t *avl_insert(avl_tree_t *, void *);
|
|
||||||
extern avl_node_t *avl_insert_node(avl_tree_t *, avl_node_t *);
|
|
||||||
|
|
||||||
extern void avl_insert_top(avl_tree_t *, avl_node_t *);
|
|
||||||
extern void avl_insert_before(avl_tree_t *, avl_node_t *, avl_node_t *);
|
|
||||||
extern void avl_insert_after(avl_tree_t *, avl_node_t *, avl_node_t *);
|
|
||||||
|
|
||||||
extern avl_node_t *avl_unlink(avl_tree_t *, void *);
|
|
||||||
extern void avl_unlink_node(avl_tree_t *tree, avl_node_t *);
|
|
||||||
extern void avl_delete(avl_tree_t *, void *);
|
|
||||||
extern void avl_delete_node(avl_tree_t *, avl_node_t *);
|
|
||||||
|
|
||||||
/* Fast tree cleanup */
|
|
||||||
|
|
||||||
extern void avl_delete_tree(avl_tree_t *);
|
|
||||||
|
|
||||||
/* Searching */
|
|
||||||
|
|
||||||
extern void *avl_search(const avl_tree_t *, const void *);
|
|
||||||
extern void *avl_search_closest(const avl_tree_t *, const void *, int *);
|
|
||||||
extern void *avl_search_closest_smaller(const avl_tree_t *, const void *);
|
|
||||||
extern void *avl_search_closest_greater(const avl_tree_t *, const void *);
|
|
||||||
|
|
||||||
extern avl_node_t *avl_search_node(const avl_tree_t *, const void *);
|
|
||||||
extern avl_node_t *avl_search_closest_node(const avl_tree_t *, const void *, int *);
|
|
||||||
extern avl_node_t *avl_search_closest_smaller_node(const avl_tree_t *, const void *);
|
|
||||||
extern avl_node_t *avl_search_closest_greater_node(const avl_tree_t *, const void *);
|
|
||||||
|
|
||||||
/* Tree walking */
|
|
||||||
|
|
||||||
extern void avl_foreach(const avl_tree_t *, avl_action_t);
|
|
||||||
extern void avl_foreach_node(const avl_tree_t *, avl_action_t);
|
|
||||||
|
|
||||||
/* Indexing */
|
|
||||||
|
|
||||||
#ifdef AVL_COUNT
|
|
||||||
extern unsigned int avl_count(const avl_tree_t *);
|
|
||||||
extern avl_node_t *avl_get_node(const avl_tree_t *, unsigned int);
|
|
||||||
extern unsigned int avl_index(const avl_node_t *);
|
|
||||||
#endif
|
|
||||||
#ifdef AVL_DEPTH
|
|
||||||
extern unsigned int avl_depth(const avl_tree_t *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __AVL_TREE_H__ */
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
/*
|
|
||||||
* fake library for ssh
|
|
||||||
*
|
|
||||||
* This file is included in getaddrinfo.c and getnameinfo.c.
|
|
||||||
* See getaddrinfo.c and getnameinfo.c.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* $Id: fake-gai-errnos.h 1489 2006-12-18 11:41:53Z guus $ */
|
|
||||||
|
|
||||||
/* for old netdb.h */
|
|
||||||
#ifndef EAI_NODATA
|
|
||||||
#define EAI_NODATA 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef EAI_MEMORY
|
|
||||||
#define EAI_MEMORY 2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef EAI_FAMILY
|
|
||||||
#define EAI_FAMILY 3
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
/* $Id: fake-getaddrinfo.h 1374 2004-03-21 14:21:22Z guus $ */
|
|
||||||
|
|
||||||
#ifndef _FAKE_GETADDRINFO_H
|
|
||||||
#define _FAKE_GETADDRINFO_H
|
|
||||||
|
|
||||||
#include "fake-gai-errnos.h"
|
|
||||||
|
|
||||||
#ifndef AI_PASSIVE
|
|
||||||
# define AI_PASSIVE 1
|
|
||||||
# define AI_CANONNAME 2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef NI_NUMERICHOST
|
|
||||||
# define NI_NUMERICHOST 2
|
|
||||||
# define NI_NAMEREQD 4
|
|
||||||
# define NI_NUMERICSERV 8
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AI_NUMERICHOST
|
|
||||||
#define AI_NUMERICHOST 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HAVE_STRUCT_ADDRINFO
|
|
||||||
struct addrinfo {
|
|
||||||
int ai_flags; /* AI_PASSIVE, AI_CANONNAME */
|
|
||||||
int ai_family; /* PF_xxx */
|
|
||||||
int ai_socktype; /* SOCK_xxx */
|
|
||||||
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
|
|
||||||
size_t ai_addrlen; /* length of ai_addr */
|
|
||||||
char *ai_canonname; /* canonical name for hostname */
|
|
||||||
struct sockaddr *ai_addr; /* binary address */
|
|
||||||
struct addrinfo *ai_next; /* next structure in linked list */
|
|
||||||
};
|
|
||||||
#endif /* !HAVE_STRUCT_ADDRINFO */
|
|
||||||
|
|
||||||
#ifndef HAVE_GETADDRINFO
|
|
||||||
int getaddrinfo(const char *hostname, const char *servname,
|
|
||||||
const struct addrinfo *hints, struct addrinfo **res);
|
|
||||||
#endif /* !HAVE_GETADDRINFO */
|
|
||||||
|
|
||||||
#ifndef HAVE_GAI_STRERROR
|
|
||||||
char *gai_strerror(int ecode);
|
|
||||||
#endif /* !HAVE_GAI_STRERROR */
|
|
||||||
|
|
||||||
#ifndef HAVE_FREEADDRINFO
|
|
||||||
void freeaddrinfo(struct addrinfo *ai);
|
|
||||||
#endif /* !HAVE_FREEADDRINFO */
|
|
||||||
|
|
||||||
#endif /* _FAKE_GETADDRINFO_H */
|
|
||||||
1044
lib/getopt.c
1044
lib/getopt.c
File diff suppressed because it is too large
Load diff
133
lib/getopt.h
133
lib/getopt.h
|
|
@ -1,133 +0,0 @@
|
||||||
/* Declarations for getopt.
|
|
||||||
Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
|
||||||
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by the
|
|
||||||
Free Software Foundation; either version 2, or (at your option) any
|
|
||||||
later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
USA. */
|
|
||||||
|
|
||||||
#ifndef _GETOPT_H
|
|
||||||
#define _GETOPT_H 1
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* For communication from `getopt' to the caller.
|
|
||||||
When `getopt' finds an option that takes an argument,
|
|
||||||
the argument value is returned here.
|
|
||||||
Also, when `ordering' is RETURN_IN_ORDER,
|
|
||||||
each non-option ARGV-element is returned here. */
|
|
||||||
|
|
||||||
extern char *optarg;
|
|
||||||
|
|
||||||
/* Index in ARGV of the next element to be scanned.
|
|
||||||
This is used for communication to and from the caller
|
|
||||||
and for communication between successive calls to `getopt'.
|
|
||||||
|
|
||||||
On entry to `getopt', zero means this is the first call; initialize.
|
|
||||||
|
|
||||||
When `getopt' returns -1, this is the index of the first of the
|
|
||||||
non-option elements that the caller should itself scan.
|
|
||||||
|
|
||||||
Otherwise, `optind' communicates from one call to the next
|
|
||||||
how much of ARGV has been scanned so far. */
|
|
||||||
|
|
||||||
extern int optind;
|
|
||||||
|
|
||||||
/* Callers store zero here to inhibit the error message `getopt' prints
|
|
||||||
for unrecognized options. */
|
|
||||||
|
|
||||||
extern int opterr;
|
|
||||||
|
|
||||||
/* Set to an option character which was unrecognized. */
|
|
||||||
|
|
||||||
extern int optopt;
|
|
||||||
|
|
||||||
/* Describe the long-named options requested by the application.
|
|
||||||
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
|
|
||||||
of `struct option' terminated by an element containing a name which is
|
|
||||||
zero.
|
|
||||||
|
|
||||||
The field `has_arg' is:
|
|
||||||
no_argument (or 0) if the option does not take an argument,
|
|
||||||
required_argument (or 1) if the option requires an argument,
|
|
||||||
optional_argument (or 2) if the option takes an optional argument.
|
|
||||||
|
|
||||||
If the field `flag' is not NULL, it points to a variable that is set
|
|
||||||
to the value given in the field `val' when the option is found, but
|
|
||||||
left unchanged if the option is not found.
|
|
||||||
|
|
||||||
To have a long-named option do something other than set an `int' to
|
|
||||||
a compiled-in constant, such as set a value from `optarg', set the
|
|
||||||
option's `flag' field to zero and its `val' field to a nonzero
|
|
||||||
value (the equivalent single-letter option character, if there is
|
|
||||||
one). For long options that have a zero `flag' field, `getopt'
|
|
||||||
returns the contents of the `val' field. */
|
|
||||||
|
|
||||||
struct option
|
|
||||||
{
|
|
||||||
#if defined (__STDC__) && __STDC__
|
|
||||||
const char *name;
|
|
||||||
#else
|
|
||||||
char *name;
|
|
||||||
#endif
|
|
||||||
/* has_arg can't be an enum because some compilers complain about
|
|
||||||
type mismatches in all the code that assumes it is an int. */
|
|
||||||
int has_arg;
|
|
||||||
int *flag;
|
|
||||||
int val;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Names for the values of the `has_arg' field of `struct option'. */
|
|
||||||
|
|
||||||
#define no_argument 0
|
|
||||||
#define required_argument 1
|
|
||||||
#define optional_argument 2
|
|
||||||
|
|
||||||
#if defined (__STDC__) && __STDC__
|
|
||||||
#ifdef __GNU_LIBRARY__
|
|
||||||
/* Many other libraries have conflicting prototypes for getopt, with
|
|
||||||
differences in the consts, in stdlib.h. To avoid compilation
|
|
||||||
errors, only prototype getopt for the GNU C library. */
|
|
||||||
extern int getopt (int argc, char *const *argv, const char *shortopts);
|
|
||||||
#else /* not __GNU_LIBRARY__ */
|
|
||||||
extern int getopt ();
|
|
||||||
#endif /* __GNU_LIBRARY__ */
|
|
||||||
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
|
|
||||||
const struct option *longopts, int *longind);
|
|
||||||
extern int getopt_long_only (int argc, char *const *argv,
|
|
||||||
const char *shortopts,
|
|
||||||
const struct option *longopts, int *longind);
|
|
||||||
|
|
||||||
/* Internal only. Users should not call this directly. */
|
|
||||||
extern int _getopt_internal (int argc, char *const *argv,
|
|
||||||
const char *shortopts,
|
|
||||||
const struct option *longopts, int *longind,
|
|
||||||
int long_only);
|
|
||||||
#else /* not __STDC__ */
|
|
||||||
extern int getopt ();
|
|
||||||
extern int getopt_long ();
|
|
||||||
extern int getopt_long_only ();
|
|
||||||
|
|
||||||
extern int _getopt_internal ();
|
|
||||||
#endif /* __STDC__ */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _GETOPT_H */
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
/* Convenience header for conditional use of GNU <libintl.h>.
|
|
||||||
Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU Library General Public License as published
|
|
||||||
by the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
|
||||||
License along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
USA. */
|
|
||||||
|
|
||||||
#ifndef _LIBGETTEXT_H
|
|
||||||
#define _LIBGETTEXT_H 1
|
|
||||||
|
|
||||||
/* NLS can be disabled through the configure --disable-nls option. */
|
|
||||||
#if ENABLE_NLS
|
|
||||||
|
|
||||||
/* Get declarations of GNU message catalog functions. */
|
|
||||||
# include <libintl.h>
|
|
||||||
# include <locale.h>
|
|
||||||
|
|
||||||
/* Shorthand notation */
|
|
||||||
|
|
||||||
# define _(Text) gettext (Text)
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
|
|
||||||
chokes if dcgettext is defined as a macro. So include it now, to make
|
|
||||||
later inclusions of <locale.h> a NOP. We don't include <libintl.h>
|
|
||||||
as well because people using "gettext.h" will not include <libintl.h>,
|
|
||||||
and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
|
|
||||||
is OK. */
|
|
||||||
#if defined(__sun)
|
|
||||||
# include <locale.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Disabled NLS.
|
|
||||||
The casts to 'const char *' serve the purpose of producing warnings
|
|
||||||
for invalid uses of the value returned from these functions.
|
|
||||||
On pre-ANSI systems without 'const', the config.h file is supposed to
|
|
||||||
contain "#define const". */
|
|
||||||
# define gettext(Msgid) ((const char *) (Msgid))
|
|
||||||
# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
|
|
||||||
# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
|
|
||||||
# define ngettext(Msgid1, Msgid2, N) \
|
|
||||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
|
||||||
# define dngettext(Domainname, Msgid1, Msgid2, N) \
|
|
||||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
|
||||||
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
|
|
||||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
|
||||||
# define textdomain(Domainname) ((const char *) (Domainname))
|
|
||||||
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
|
|
||||||
# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
|
|
||||||
|
|
||||||
# define _(Text) Text
|
|
||||||
# define setlocale(Category, Locale) ((const char *) (Locale))
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* A pseudo function call that serves as a marker for the automated
|
|
||||||
extraction of messages, but does not call gettext(). The run-time
|
|
||||||
translation is done at a different place in the code.
|
|
||||||
The argument, String, should be a literal string. Concatenated strings
|
|
||||||
and other string expressions won't work.
|
|
||||||
The macro's expansion is not parenthesized, so that it is suitable as
|
|
||||||
initializer for static 'char[]' or 'const char[]' variables. */
|
|
||||||
#define gettext_noop(String) String
|
|
||||||
|
|
||||||
#define N_(Text) Text
|
|
||||||
|
|
||||||
#endif /* _LIBGETTEXT_H */
|
|
||||||
39
lib/malloc.c
39
lib/malloc.c
|
|
@ -1,39 +0,0 @@
|
||||||
/* Work around bug on some systems where malloc (0) fails.
|
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software Foundation,
|
|
||||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
/* written by Jim Meyering */
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
#undef malloc
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
char *malloc ();
|
|
||||||
|
|
||||||
/* Allocate an N-byte block of memory from the heap.
|
|
||||||
If N is zero, allocate a 1-byte block. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
rpl_malloc (n)
|
|
||||||
size_t n;
|
|
||||||
{
|
|
||||||
if (n == 0)
|
|
||||||
n = 1;
|
|
||||||
return malloc (n);
|
|
||||||
}
|
|
||||||
391
lib/memcmp.c
391
lib/memcmp.c
|
|
@ -1,391 +0,0 @@
|
||||||
/* Copyright (C) 1991, 1993, 1995, 1997, 1998 Free Software Foundation, Inc.
|
|
||||||
Contributed by Torbjorn Granlund (tege@sics.se).
|
|
||||||
|
|
||||||
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
|
||||||
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by the
|
|
||||||
Free Software Foundation; either version 2, or (at your option) any
|
|
||||||
later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
USA. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef __ptr_t
|
|
||||||
#if defined __cplusplus || (defined __STDC__ && __STDC__)
|
|
||||||
# define __ptr_t void *
|
|
||||||
#else /* Not C++ or ANSI C. */
|
|
||||||
# undef const
|
|
||||||
# define const
|
|
||||||
# define __ptr_t char *
|
|
||||||
#endif /* C++ or ANSI C. */
|
|
||||||
|
|
||||||
#ifndef __P
|
|
||||||
# if defined __GNUC__ || (defined __STDC__ && __STDC__)
|
|
||||||
# define __P(args) args
|
|
||||||
# else
|
|
||||||
# define __P(args) ()
|
|
||||||
# endif /* GCC. */
|
|
||||||
#endif /* Not __P. */
|
|
||||||
|
|
||||||
#if defined HAVE_STRING_H || defined _LIBC
|
|
||||||
# include <string.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef memcmp
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
|
|
||||||
# include <memcopy.h>
|
|
||||||
|
|
||||||
#else /* Not in the GNU C library. */
|
|
||||||
|
|
||||||
# include <sys/types.h>
|
|
||||||
|
|
||||||
/* Type to use for aligned memory operations.
|
|
||||||
This should normally be the biggest type supported by a single load
|
|
||||||
and store. Must be an unsigned type. */
|
|
||||||
# define op_t unsigned long int
|
|
||||||
# define OPSIZ (sizeof(op_t))
|
|
||||||
|
|
||||||
/* Threshold value for when to enter the unrolled loops. */
|
|
||||||
# define OP_T_THRES 16
|
|
||||||
|
|
||||||
/* Type to use for unaligned operations. */
|
|
||||||
typedef unsigned char byte;
|
|
||||||
|
|
||||||
# ifndef WORDS_BIGENDIAN
|
|
||||||
# define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
|
|
||||||
# else
|
|
||||||
# define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#endif /* In the GNU C library. */
|
|
||||||
|
|
||||||
#ifdef WORDS_BIGENDIAN
|
|
||||||
# define CMP_LT_OR_GT(a, b) ((a) > (b) ? 1 : -1)
|
|
||||||
#else
|
|
||||||
# define CMP_LT_OR_GT(a, b) memcmp_bytes ((a), (b))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* BE VERY CAREFUL IF YOU CHANGE THIS CODE! */
|
|
||||||
|
|
||||||
/* The strategy of this memcmp is:
|
|
||||||
|
|
||||||
1. Compare bytes until one of the block pointers is aligned.
|
|
||||||
|
|
||||||
2. Compare using memcmp_common_alignment or
|
|
||||||
memcmp_not_common_alignment, regarding the alignment of the other
|
|
||||||
block after the initial byte operations. The maximum number of
|
|
||||||
full words (of type op_t) are compared in this way.
|
|
||||||
|
|
||||||
3. Compare the few remaining bytes. */
|
|
||||||
|
|
||||||
#ifndef WORDS_BIGENDIAN
|
|
||||||
/* memcmp_bytes -- Compare A and B bytewise in the byte order of the machine.
|
|
||||||
A and B are known to be different.
|
|
||||||
This is needed only on little-endian machines. */
|
|
||||||
|
|
||||||
static int memcmp_bytes __P((op_t, op_t));
|
|
||||||
|
|
||||||
# ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
# endif
|
|
||||||
static int
|
|
||||||
memcmp_bytes (a, b)
|
|
||||||
op_t a, b;
|
|
||||||
{
|
|
||||||
long int srcp1 = (long int) &a;
|
|
||||||
long int srcp2 = (long int) &b;
|
|
||||||
op_t a0, b0;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
a0 = ((byte *) srcp1)[0];
|
|
||||||
b0 = ((byte *) srcp2)[0];
|
|
||||||
srcp1 += 1;
|
|
||||||
srcp2 += 1;
|
|
||||||
}
|
|
||||||
while (a0 == b0);
|
|
||||||
return a0 - b0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int memcmp_common_alignment __P((long, long, size_t));
|
|
||||||
|
|
||||||
/* memcmp_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN `op_t'
|
|
||||||
objects (not LEN bytes!). Both SRCP1 and SRCP2 should be aligned for
|
|
||||||
memory operations on `op_t's. */
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
#endif
|
|
||||||
static int
|
|
||||||
memcmp_common_alignment (srcp1, srcp2, len)
|
|
||||||
long int srcp1;
|
|
||||||
long int srcp2;
|
|
||||||
size_t len;
|
|
||||||
{
|
|
||||||
op_t a0, a1;
|
|
||||||
op_t b0, b1;
|
|
||||||
|
|
||||||
switch (len % 4)
|
|
||||||
{
|
|
||||||
default: /* Avoid warning about uninitialized local variables. */
|
|
||||||
case 2:
|
|
||||||
a0 = ((op_t *) srcp1)[0];
|
|
||||||
b0 = ((op_t *) srcp2)[0];
|
|
||||||
srcp1 -= 2 * OPSIZ;
|
|
||||||
srcp2 -= 2 * OPSIZ;
|
|
||||||
len += 2;
|
|
||||||
goto do1;
|
|
||||||
case 3:
|
|
||||||
a1 = ((op_t *) srcp1)[0];
|
|
||||||
b1 = ((op_t *) srcp2)[0];
|
|
||||||
srcp1 -= OPSIZ;
|
|
||||||
srcp2 -= OPSIZ;
|
|
||||||
len += 1;
|
|
||||||
goto do2;
|
|
||||||
case 0:
|
|
||||||
if (OP_T_THRES <= 3 * OPSIZ && len == 0)
|
|
||||||
return 0;
|
|
||||||
a0 = ((op_t *) srcp1)[0];
|
|
||||||
b0 = ((op_t *) srcp2)[0];
|
|
||||||
goto do3;
|
|
||||||
case 1:
|
|
||||||
a1 = ((op_t *) srcp1)[0];
|
|
||||||
b1 = ((op_t *) srcp2)[0];
|
|
||||||
srcp1 += OPSIZ;
|
|
||||||
srcp2 += OPSIZ;
|
|
||||||
len -= 1;
|
|
||||||
if (OP_T_THRES <= 3 * OPSIZ && len == 0)
|
|
||||||
goto do0;
|
|
||||||
/* Fall through. */
|
|
||||||
}
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
a0 = ((op_t *) srcp1)[0];
|
|
||||||
b0 = ((op_t *) srcp2)[0];
|
|
||||||
if (a1 != b1)
|
|
||||||
return CMP_LT_OR_GT (a1, b1);
|
|
||||||
|
|
||||||
do3:
|
|
||||||
a1 = ((op_t *) srcp1)[1];
|
|
||||||
b1 = ((op_t *) srcp2)[1];
|
|
||||||
if (a0 != b0)
|
|
||||||
return CMP_LT_OR_GT (a0, b0);
|
|
||||||
|
|
||||||
do2:
|
|
||||||
a0 = ((op_t *) srcp1)[2];
|
|
||||||
b0 = ((op_t *) srcp2)[2];
|
|
||||||
if (a1 != b1)
|
|
||||||
return CMP_LT_OR_GT (a1, b1);
|
|
||||||
|
|
||||||
do1:
|
|
||||||
a1 = ((op_t *) srcp1)[3];
|
|
||||||
b1 = ((op_t *) srcp2)[3];
|
|
||||||
if (a0 != b0)
|
|
||||||
return CMP_LT_OR_GT (a0, b0);
|
|
||||||
|
|
||||||
srcp1 += 4 * OPSIZ;
|
|
||||||
srcp2 += 4 * OPSIZ;
|
|
||||||
len -= 4;
|
|
||||||
}
|
|
||||||
while (len != 0);
|
|
||||||
|
|
||||||
/* This is the right position for do0. Please don't move
|
|
||||||
it into the loop. */
|
|
||||||
do0:
|
|
||||||
if (a1 != b1)
|
|
||||||
return CMP_LT_OR_GT (a1, b1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int memcmp_not_common_alignment __P((long, long, size_t));
|
|
||||||
|
|
||||||
/* memcmp_not_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN
|
|
||||||
`op_t' objects (not LEN bytes!). SRCP2 should be aligned for memory
|
|
||||||
operations on `op_t', but SRCP1 *should be unaligned*. */
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
#endif
|
|
||||||
static int
|
|
||||||
memcmp_not_common_alignment (srcp1, srcp2, len)
|
|
||||||
long int srcp1;
|
|
||||||
long int srcp2;
|
|
||||||
size_t len;
|
|
||||||
{
|
|
||||||
op_t a0, a1, a2, a3;
|
|
||||||
op_t b0, b1, b2, b3;
|
|
||||||
op_t x;
|
|
||||||
int shl, shr;
|
|
||||||
|
|
||||||
/* Calculate how to shift a word read at the memory operation
|
|
||||||
aligned srcp1 to make it aligned for comparison. */
|
|
||||||
|
|
||||||
shl = 8 * (srcp1 % OPSIZ);
|
|
||||||
shr = 8 * OPSIZ - shl;
|
|
||||||
|
|
||||||
/* Make SRCP1 aligned by rounding it down to the beginning of the `op_t'
|
|
||||||
it points in the middle of. */
|
|
||||||
srcp1 &= -OPSIZ;
|
|
||||||
|
|
||||||
switch (len % 4)
|
|
||||||
{
|
|
||||||
default: /* Avoid warning about uninitialized local variables. */
|
|
||||||
case 2:
|
|
||||||
a1 = ((op_t *) srcp1)[0];
|
|
||||||
a2 = ((op_t *) srcp1)[1];
|
|
||||||
b2 = ((op_t *) srcp2)[0];
|
|
||||||
srcp1 -= 1 * OPSIZ;
|
|
||||||
srcp2 -= 2 * OPSIZ;
|
|
||||||
len += 2;
|
|
||||||
goto do1;
|
|
||||||
case 3:
|
|
||||||
a0 = ((op_t *) srcp1)[0];
|
|
||||||
a1 = ((op_t *) srcp1)[1];
|
|
||||||
b1 = ((op_t *) srcp2)[0];
|
|
||||||
srcp2 -= 1 * OPSIZ;
|
|
||||||
len += 1;
|
|
||||||
goto do2;
|
|
||||||
case 0:
|
|
||||||
if (OP_T_THRES <= 3 * OPSIZ && len == 0)
|
|
||||||
return 0;
|
|
||||||
a3 = ((op_t *) srcp1)[0];
|
|
||||||
a0 = ((op_t *) srcp1)[1];
|
|
||||||
b0 = ((op_t *) srcp2)[0];
|
|
||||||
srcp1 += 1 * OPSIZ;
|
|
||||||
goto do3;
|
|
||||||
case 1:
|
|
||||||
a2 = ((op_t *) srcp1)[0];
|
|
||||||
a3 = ((op_t *) srcp1)[1];
|
|
||||||
b3 = ((op_t *) srcp2)[0];
|
|
||||||
srcp1 += 2 * OPSIZ;
|
|
||||||
srcp2 += 1 * OPSIZ;
|
|
||||||
len -= 1;
|
|
||||||
if (OP_T_THRES <= 3 * OPSIZ && len == 0)
|
|
||||||
goto do0;
|
|
||||||
/* Fall through. */
|
|
||||||
}
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
a0 = ((op_t *) srcp1)[0];
|
|
||||||
b0 = ((op_t *) srcp2)[0];
|
|
||||||
x = MERGE(a2, shl, a3, shr);
|
|
||||||
if (x != b3)
|
|
||||||
return CMP_LT_OR_GT (x, b3);
|
|
||||||
|
|
||||||
do3:
|
|
||||||
a1 = ((op_t *) srcp1)[1];
|
|
||||||
b1 = ((op_t *) srcp2)[1];
|
|
||||||
x = MERGE(a3, shl, a0, shr);
|
|
||||||
if (x != b0)
|
|
||||||
return CMP_LT_OR_GT (x, b0);
|
|
||||||
|
|
||||||
do2:
|
|
||||||
a2 = ((op_t *) srcp1)[2];
|
|
||||||
b2 = ((op_t *) srcp2)[2];
|
|
||||||
x = MERGE(a0, shl, a1, shr);
|
|
||||||
if (x != b1)
|
|
||||||
return CMP_LT_OR_GT (x, b1);
|
|
||||||
|
|
||||||
do1:
|
|
||||||
a3 = ((op_t *) srcp1)[3];
|
|
||||||
b3 = ((op_t *) srcp2)[3];
|
|
||||||
x = MERGE(a1, shl, a2, shr);
|
|
||||||
if (x != b2)
|
|
||||||
return CMP_LT_OR_GT (x, b2);
|
|
||||||
|
|
||||||
srcp1 += 4 * OPSIZ;
|
|
||||||
srcp2 += 4 * OPSIZ;
|
|
||||||
len -= 4;
|
|
||||||
}
|
|
||||||
while (len != 0);
|
|
||||||
|
|
||||||
/* This is the right position for do0. Please don't move
|
|
||||||
it into the loop. */
|
|
||||||
do0:
|
|
||||||
x = MERGE(a2, shl, a3, shr);
|
|
||||||
if (x != b3)
|
|
||||||
return CMP_LT_OR_GT (x, b3);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
rpl_memcmp (s1, s2, len)
|
|
||||||
const __ptr_t s1;
|
|
||||||
const __ptr_t s2;
|
|
||||||
size_t len;
|
|
||||||
{
|
|
||||||
op_t a0;
|
|
||||||
op_t b0;
|
|
||||||
long int srcp1 = (long int) s1;
|
|
||||||
long int srcp2 = (long int) s2;
|
|
||||||
op_t res;
|
|
||||||
|
|
||||||
if (len >= OP_T_THRES)
|
|
||||||
{
|
|
||||||
/* There are at least some bytes to compare. No need to test
|
|
||||||
for LEN == 0 in this alignment loop. */
|
|
||||||
while (srcp2 % OPSIZ != 0)
|
|
||||||
{
|
|
||||||
a0 = ((byte *) srcp1)[0];
|
|
||||||
b0 = ((byte *) srcp2)[0];
|
|
||||||
srcp1 += 1;
|
|
||||||
srcp2 += 1;
|
|
||||||
res = a0 - b0;
|
|
||||||
if (res != 0)
|
|
||||||
return res;
|
|
||||||
len -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SRCP2 is now aligned for memory operations on `op_t'.
|
|
||||||
SRCP1 alignment determines if we can do a simple,
|
|
||||||
aligned compare or need to shuffle bits. */
|
|
||||||
|
|
||||||
if (srcp1 % OPSIZ == 0)
|
|
||||||
res = memcmp_common_alignment (srcp1, srcp2, len / OPSIZ);
|
|
||||||
else
|
|
||||||
res = memcmp_not_common_alignment (srcp1, srcp2, len / OPSIZ);
|
|
||||||
if (res != 0)
|
|
||||||
return res;
|
|
||||||
|
|
||||||
/* Number of bytes remaining in the interval [0..OPSIZ-1]. */
|
|
||||||
srcp1 += len & -OPSIZ;
|
|
||||||
srcp2 += len & -OPSIZ;
|
|
||||||
len %= OPSIZ;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* There are just a few bytes to compare. Use byte memory operations. */
|
|
||||||
while (len != 0)
|
|
||||||
{
|
|
||||||
a0 = ((byte *) srcp1)[0];
|
|
||||||
b0 = ((byte *) srcp2)[0];
|
|
||||||
srcp1 += 1;
|
|
||||||
srcp2 += 1;
|
|
||||||
res = a0 - b0;
|
|
||||||
if (res != 0)
|
|
||||||
return res;
|
|
||||||
len -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef weak_alias
|
|
||||||
# undef bcmp
|
|
||||||
weak_alias (memcmp, bcmp)
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
/* Work around bug on some systems where realloc (NULL, 0) fails.
|
|
||||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software Foundation,
|
|
||||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
/* written by Jim Meyering */
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
#undef realloc
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
char *malloc ();
|
|
||||||
char *realloc ();
|
|
||||||
|
|
||||||
/* Change the size of an allocated block of memory P to N bytes,
|
|
||||||
with error checking. If N is zero, change it to 1. If P is NULL,
|
|
||||||
use malloc. */
|
|
||||||
|
|
||||||
char *
|
|
||||||
rpl_realloc (p, n)
|
|
||||||
char *p;
|
|
||||||
size_t n;
|
|
||||||
{
|
|
||||||
if (n == 0)
|
|
||||||
n = 1;
|
|
||||||
if (p == 0)
|
|
||||||
return malloc (n);
|
|
||||||
return realloc (p, n);
|
|
||||||
}
|
|
||||||
102
lib/utils.c
102
lib/utils.c
|
|
@ -1,102 +0,0 @@
|
||||||
/*
|
|
||||||
utils.c -- gathering of some stupid small functions
|
|
||||||
Copyright (C) 1999-2005 Ivo Timmermans <zarq@iname.com>
|
|
||||||
2000-2006 Guus Sliepen <guus@tinc-vpn.org>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "system.h"
|
|
||||||
|
|
||||||
#include "../src/logger.h"
|
|
||||||
#include "utils.h"
|
|
||||||
|
|
||||||
#ifdef ENABLE_TRACING
|
|
||||||
volatile int (cp_line[]) = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
||||||
volatile char (*cp_file[]) = {"?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?"};
|
|
||||||
volatile int cp_index = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char *hexadecimals = "0123456789ABCDEF";
|
|
||||||
|
|
||||||
int charhex2bin(char c)
|
|
||||||
{
|
|
||||||
if(isdigit(c))
|
|
||||||
return c - '0';
|
|
||||||
else
|
|
||||||
return toupper(c) - 'A' + 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void hex2bin(char *src, char *dst, int length)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for(i = 0; i < length; i++)
|
|
||||||
dst[i] = charhex2bin(src[i * 2]) * 16 + charhex2bin(src[i * 2 + 1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void bin2hex(char *src, char *dst, int length)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for(i = length - 1; i >= 0; i--) {
|
|
||||||
dst[i * 2 + 1] = hexadecimals[(unsigned char) src[i] & 15];
|
|
||||||
dst[i * 2] = hexadecimals[(unsigned char) src[i] >> 4];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef ENABLE_TRACING
|
|
||||||
void cp_trace()
|
|
||||||
{
|
|
||||||
logger(LOG_DEBUG, "Checkpoint trace: %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d...",
|
|
||||||
cp_file[(cp_index + 15) % 16], cp_line[(cp_index + 15) % 16],
|
|
||||||
cp_file[(cp_index + 14) % 16], cp_line[(cp_index + 14) % 16],
|
|
||||||
cp_file[(cp_index + 13) % 16], cp_line[(cp_index + 13) % 16],
|
|
||||||
cp_file[(cp_index + 12) % 16], cp_line[(cp_index + 12) % 16],
|
|
||||||
cp_file[(cp_index + 11) % 16], cp_line[(cp_index + 11) % 16],
|
|
||||||
cp_file[(cp_index + 10) % 16], cp_line[(cp_index + 10) % 16],
|
|
||||||
cp_file[(cp_index + 9) % 16], cp_line[(cp_index + 9) % 16],
|
|
||||||
cp_file[(cp_index + 8) % 16], cp_line[(cp_index + 8) % 16],
|
|
||||||
cp_file[(cp_index + 7) % 16], cp_line[(cp_index + 7) % 16],
|
|
||||||
cp_file[(cp_index + 6) % 16], cp_line[(cp_index + 6) % 16],
|
|
||||||
cp_file[(cp_index + 5) % 16], cp_line[(cp_index + 5) % 16],
|
|
||||||
cp_file[(cp_index + 4) % 16], cp_line[(cp_index + 4) % 16],
|
|
||||||
cp_file[(cp_index + 3) % 16], cp_line[(cp_index + 3) % 16],
|
|
||||||
cp_file[(cp_index + 2) % 16], cp_line[(cp_index + 2) % 16],
|
|
||||||
cp_file[(cp_index + 1) % 16], cp_line[(cp_index + 1) % 16],
|
|
||||||
cp_file[cp_index], cp_line[cp_index]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(HAVE_MINGW) || defined(HAVE_CYGWIN)
|
|
||||||
#ifdef HAVE_CYGWIN
|
|
||||||
#include <w32api/windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char *winerror(int err) {
|
|
||||||
static char buf[1024], *newline;
|
|
||||||
|
|
||||||
if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
|
||||||
NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, sizeof(buf), NULL)) {
|
|
||||||
strncpy(buf, _("(unable to format errormessage)"), sizeof(buf));
|
|
||||||
};
|
|
||||||
|
|
||||||
if((newline = strchr(buf, '\r')))
|
|
||||||
*newline = '\0';
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
46
lib/utils.h
46
lib/utils.h
|
|
@ -1,46 +0,0 @@
|
||||||
/*
|
|
||||||
utils.h -- header file for utils.c
|
|
||||||
Copyright (C) 1999-2005 Ivo Timmermans <zarq@iname.com>
|
|
||||||
2000-2006 Guus Sliepen <guus@tinc-vpn.org>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __TINC_UTILS_H__
|
|
||||||
#define __TINC_UTILS_H__
|
|
||||||
|
|
||||||
#ifdef ENABLE_TRACING
|
|
||||||
extern volatile int cp_line[];
|
|
||||||
extern volatile char *cp_file[];
|
|
||||||
extern volatile int cp_index;
|
|
||||||
extern void cp_trace(void);
|
|
||||||
|
|
||||||
#define cp() { cp_line[cp_index] = __LINE__; cp_file[cp_index] = __FILE__; cp_index++; cp_index %= 16; }
|
|
||||||
#define ecp() { fprintf(stderr, "Explicit checkpoint in %s line %d\n", __FILE__, __LINE__); }
|
|
||||||
#else
|
|
||||||
#define cp()
|
|
||||||
#define ecp()
|
|
||||||
#define cp_trace()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern void hex2bin(char *src, char *dst, int length);
|
|
||||||
extern void bin2hex(char *src, char *dst, int length);
|
|
||||||
|
|
||||||
#ifdef HAVE_MINGW
|
|
||||||
extern char *winerror(int);
|
|
||||||
#define strerror(x) ((x)>0?strerror(x):winerror(GetLastError()))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __TINC_UTILS_H__ */
|
|
||||||
26
lib/xalloc.h
26
lib/xalloc.h
|
|
@ -1,26 +0,0 @@
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#ifndef PARAMS
|
|
||||||
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
|
||||||
# define PARAMS(Args) Args
|
|
||||||
# else
|
|
||||||
# define PARAMS(Args) ()
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Exit value when the requested amount of memory is not available.
|
|
||||||
The caller may set it to some other value. */
|
|
||||||
extern int xalloc_exit_failure;
|
|
||||||
|
|
||||||
/* FIXME: describe */
|
|
||||||
extern char *const xalloc_msg_memory_exhausted;
|
|
||||||
|
|
||||||
/* FIXME: describe */
|
|
||||||
extern void (*xalloc_fail_func) ();
|
|
||||||
|
|
||||||
void *xmalloc PARAMS ((size_t n)) __attribute__ ((__malloc__));
|
|
||||||
void *xmalloc_and_zero PARAMS ((size_t n)) __attribute__ ((__malloc__));
|
|
||||||
void *xcalloc PARAMS ((size_t n, size_t s));
|
|
||||||
void *xrealloc PARAMS ((void *p, size_t n)) __attribute__ ((__malloc__));
|
|
||||||
|
|
||||||
char *xstrdup PARAMS ((const char *s)) __attribute__ ((__malloc__));
|
|
||||||
140
lib/xmalloc.c
140
lib/xmalloc.c
|
|
@ -1,140 +0,0 @@
|
||||||
/* xmalloc.c -- malloc with out of memory checking
|
|
||||||
Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software Foundation,
|
|
||||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if STDC_HEADERS
|
|
||||||
# include <stdlib.h>
|
|
||||||
#else
|
|
||||||
void *calloc ();
|
|
||||||
void *malloc ();
|
|
||||||
void *realloc ();
|
|
||||||
void free ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gettext.h"
|
|
||||||
#include "xalloc.h"
|
|
||||||
|
|
||||||
#ifndef EXIT_FAILURE
|
|
||||||
# define EXIT_FAILURE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Prototypes for functions defined here. */
|
|
||||||
#if defined (__STDC__) && __STDC__
|
|
||||||
void *xmalloc (size_t n);
|
|
||||||
void *xcalloc (size_t n, size_t s);
|
|
||||||
void *xrealloc (void *p, size_t n);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Exit value when the requested amount of memory is not available.
|
|
||||||
The caller may set it to some other value. */
|
|
||||||
int xalloc_exit_failure = EXIT_FAILURE;
|
|
||||||
|
|
||||||
/* FIXME: describe */
|
|
||||||
char *const xalloc_msg_memory_exhausted = N_("Memory exhausted");
|
|
||||||
|
|
||||||
/* FIXME: describe */
|
|
||||||
void (*xalloc_fail_func) (int) = 0;
|
|
||||||
|
|
||||||
static void
|
|
||||||
xalloc_fail (int size)
|
|
||||||
{
|
|
||||||
if (xalloc_fail_func)
|
|
||||||
(*xalloc_fail_func) (size);
|
|
||||||
fprintf(stderr, "%s\n", xalloc_msg_memory_exhausted);
|
|
||||||
exit(xalloc_exit_failure);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allocate N bytes of memory dynamically, with error checking. */
|
|
||||||
|
|
||||||
void *
|
|
||||||
xmalloc (n)
|
|
||||||
size_t n;
|
|
||||||
{
|
|
||||||
void *p;
|
|
||||||
|
|
||||||
p = malloc (n);
|
|
||||||
if (p == 0)
|
|
||||||
xalloc_fail ((int)n);
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allocate N bytes of memory dynamically, and set it all to zero. */
|
|
||||||
|
|
||||||
void *
|
|
||||||
xmalloc_and_zero (n)
|
|
||||||
size_t n;
|
|
||||||
{
|
|
||||||
void *p;
|
|
||||||
|
|
||||||
p = malloc (n);
|
|
||||||
if (p == 0)
|
|
||||||
xalloc_fail ((int)n);
|
|
||||||
memset (p, '\0', n);
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Change the size of an allocated block of memory P to N bytes,
|
|
||||||
with error checking.
|
|
||||||
If P is NULL, run xmalloc. */
|
|
||||||
|
|
||||||
void *
|
|
||||||
xrealloc (p, n)
|
|
||||||
void *p;
|
|
||||||
size_t n;
|
|
||||||
{
|
|
||||||
p = realloc (p, n);
|
|
||||||
if (p == 0)
|
|
||||||
xalloc_fail (n);
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Duplicate a string */
|
|
||||||
|
|
||||||
char *xstrdup(const char *s)
|
|
||||||
{
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
p = strdup(s);
|
|
||||||
if(!p)
|
|
||||||
xalloc_fail ((int)strlen(s));
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef NOT_USED
|
|
||||||
|
|
||||||
/* Allocate memory for N elements of S bytes, with error checking. */
|
|
||||||
|
|
||||||
void *
|
|
||||||
xcalloc (n, s)
|
|
||||||
size_t n, s;
|
|
||||||
{
|
|
||||||
void *p;
|
|
||||||
|
|
||||||
p = calloc (n, s);
|
|
||||||
if (p == 0)
|
|
||||||
xalloc_fail ();
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* NOT_USED */
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
|
||||||
|
|
||||||
EXTRA_DIST = README *.m4
|
|
||||||
|
|
||||||
323
m4/Makefile.in
323
m4/Makefile.in
|
|
@ -1,323 +0,0 @@
|
||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
install_sh_SCRIPT = $(install_sh) -c
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = $(program_transform_name)
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
build_triplet = @build@
|
|
||||||
host_triplet = @host@
|
|
||||||
subdir = m4
|
|
||||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
|
|
||||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
|
|
||||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
|
||||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
|
|
||||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \
|
|
||||||
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
|
|
||||||
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in
|
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
||||||
$(ACLOCAL_M4)
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
SOURCES =
|
|
||||||
DIST_SOURCES =
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
ALLOCA = @ALLOCA@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AWK = @AWK@
|
|
||||||
CC = @CC@
|
|
||||||
CCDEPMODE = @CCDEPMODE@
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
CPP = @CPP@
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
CYGPATH_W = @CYGPATH_W@
|
|
||||||
DEFS = @DEFS@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
ECHO_C = @ECHO_C@
|
|
||||||
ECHO_N = @ECHO_N@
|
|
||||||
ECHO_T = @ECHO_T@
|
|
||||||
EGREP = @EGREP@
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
GMSGFMT = @GMSGFMT@
|
|
||||||
GREP = @GREP@
|
|
||||||
INCLUDES = @INCLUDES@
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
INTLLIBS = @INTLLIBS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBICONV = @LIBICONV@
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
LN_S = @LN_S@
|
|
||||||
LTLIBICONV = @LTLIBICONV@
|
|
||||||
LTLIBINTL = @LTLIBINTL@
|
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
|
||||||
MAINT = @MAINT@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
|
||||||
MKDIR_P = @MKDIR_P@
|
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
MSGFMT = @MSGFMT@
|
|
||||||
MSGMERGE = @MSGMERGE@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
POSUB = @POSUB@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
USE_NLS = @USE_NLS@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
XGETTEXT = @XGETTEXT@
|
|
||||||
abs_builddir = @abs_builddir@
|
|
||||||
abs_srcdir = @abs_srcdir@
|
|
||||||
abs_top_builddir = @abs_top_builddir@
|
|
||||||
abs_top_srcdir = @abs_top_srcdir@
|
|
||||||
ac_ct_CC = @ac_ct_CC@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__leading_dot = @am__leading_dot@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
am__tar = @am__tar@
|
|
||||||
am__untar = @am__untar@
|
|
||||||
bindir = @bindir@
|
|
||||||
build = @build@
|
|
||||||
build_alias = @build_alias@
|
|
||||||
build_cpu = @build_cpu@
|
|
||||||
build_os = @build_os@
|
|
||||||
build_vendor = @build_vendor@
|
|
||||||
builddir = @builddir@
|
|
||||||
datadir = @datadir@
|
|
||||||
datarootdir = @datarootdir@
|
|
||||||
docdir = @docdir@
|
|
||||||
dvidir = @dvidir@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
host = @host@
|
|
||||||
host_alias = @host_alias@
|
|
||||||
host_cpu = @host_cpu@
|
|
||||||
host_os = @host_os@
|
|
||||||
host_vendor = @host_vendor@
|
|
||||||
htmldir = @htmldir@
|
|
||||||
includedir = @includedir@
|
|
||||||
infodir = @infodir@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
libdir = @libdir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
localedir = @localedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
mandir = @mandir@
|
|
||||||
mkdir_p = @mkdir_p@
|
|
||||||
oldincludedir = @oldincludedir@
|
|
||||||
pdfdir = @pdfdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
program_transform_name = @program_transform_name@
|
|
||||||
psdir = @psdir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
srcdir = @srcdir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
target_alias = @target_alias@
|
|
||||||
top_builddir = @top_builddir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
EXTRA_DIST = README *.m4
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
|
||||||
@for dep in $?; do \
|
|
||||||
case '$(am__configure_deps)' in \
|
|
||||||
*$$dep*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
|
||||||
&& exit 0; \
|
|
||||||
exit 1;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \
|
|
||||||
cd $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu m4/Makefile
|
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
@case '$?' in \
|
|
||||||
*config.status*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
|
||||||
*) \
|
|
||||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
|
||||||
esac;
|
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
|
|
||||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
tags: TAGS
|
|
||||||
TAGS:
|
|
||||||
|
|
||||||
ctags: CTAGS
|
|
||||||
CTAGS:
|
|
||||||
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
list='$(DISTFILES)'; \
|
|
||||||
dist_files=`for file in $$list; do echo $$file; done | \
|
|
||||||
sed -e "s|^$$srcdirstrip/||;t" \
|
|
||||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|
||||||
case $$dist_files in \
|
|
||||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|
||||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|
||||||
sort -u` ;; \
|
|
||||||
esac; \
|
|
||||||
for file in $$dist_files; do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
|
||||||
fi; \
|
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
|
||||||
else \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile
|
|
||||||
installdirs:
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
`test -z '$(STRIP)' || \
|
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
-rm -f Makefile
|
|
||||||
distclean-am: clean-am distclean-generic
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
html: html-am
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-dvi: install-dvi-am
|
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
|
|
||||||
install-html: install-html-am
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
|
||||||
|
|
||||||
install-ps: install-ps-am
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
-rm -f Makefile
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-generic
|
|
||||||
|
|
||||||
pdf: pdf-am
|
|
||||||
|
|
||||||
pdf-am:
|
|
||||||
|
|
||||||
ps: ps-am
|
|
||||||
|
|
||||||
ps-am:
|
|
||||||
|
|
||||||
uninstall-am:
|
|
||||||
|
|
||||||
.MAKE: install-am install-strip
|
|
||||||
|
|
||||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
|
||||||
distclean-generic distdir dvi dvi-am html html-am info info-am \
|
|
||||||
install install-am install-data install-data-am install-dvi \
|
|
||||||
install-dvi-am install-exec install-exec-am install-html \
|
|
||||||
install-html-am install-info install-info-am install-man \
|
|
||||||
install-pdf install-pdf-am install-ps install-ps-am \
|
|
||||||
install-strip installcheck installcheck-am installdirs \
|
|
||||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
|
||||||
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
.NOEXPORT:
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue